Excelは元々経営シミュレーションの目的で開発されたソフトウェアですが、現在では様々な数値計算を可能にする汎用の計算道具になっています。せっかく手元にあるのだから使わなければ損。
数学的な問題で、関数が出てきたとき、その関数はどんな形をしているのだろう、と疑問に思うことがしばしばあるでしょう。Excelを使えば簡単にグラフが描けます。そうすれば、数学や統計、確率の理解もすすむことでしょう。普段から経験を積んでおくことが大事。
関数をグラフ表現するには、手で描く場合のように、関数の通る点をいくつか計算して、それらを順番に折れ線で結びます。ある列にxの値、次の列にf
(x)の値を計算した数表を作り、それを「挿入/グラフ」タブにある「散布図」グラフオプションを選択します。xの値を細かくすればするほど丁寧なグラフ
になります。
以下、いくつかの例を使って説明します。
三角関数のグラフは、Excelの用意している「sin()」「cos()」「tan()」などの数学関数を利用することで簡単に描くことができます。
例えば次のようなグラフが描けるはずです。関数値が±1付近でややでこぼこが目立ちますが、気になるのであれば刻み幅を0.1として描いてみて下さい。関数 によっては、局所的に変化が激しい部分がありますから、その場合は全域でxの値を等間隔に取らなくても、部分的に刻み幅を細かくすれば、少ない労力で、き れいなグラフが描けます。
Excelで一変数関数 y = f(x) のグラフを描く場合は、なるべくたくさんの x の値に対する関数値 f(x) を計算した関数表を作り、それを「挿入/グラフ」タブの「散布図」ボタンの「散布図(直線)」オプションを使って表示させる。
関数値を計算した上のセルに関数名を入力しておき、それを一緒にアクティブにして「散布図」を描くと、タイトル部分に関数名が表示される。表示させる関数が一つだけならば、凡例は必要ないので、削除しておく。
x の値は等間隔に取る必要はない。むしろ、関数の変化が急激なところはなるべくたくさんの x に対して関数値を計算させ、緩やかなところは間隔を空けるようにする。最初から計算する x の値を決めないで、グラフの形状を見ながら試行錯誤すればよい。
軸以外の横棒をマウスで右クリックすると表示されるプルダウンメニューから、「削除」メニューを選択すると横棒を消すことができる。
上のグラフにsin(x)関数を近似する5次多項式を重ねて近似のよさを検討する、という場面を想像して、作成してみましょう。
すでに表示されているグラフの上に、別のグラフを重ねて描く場合は、もし、関数表の x の値が同じならば、関数値の列だけをコピーし、グラフの上でペーストすれば良い。
重ねて描いたグラフの違いは、Excelが自動的に色分けして、凡例を作ってくれる。重ねるグラフの関数値を計算した上のセルに、関数名(あるいは説明)を描いておくと、凡例にその文字が表示される。
x の値が同じでない場合は、単純なコピーペーストでは出来ないので、次のような手順に従う。
f(x) = 1/x は x = 0 で不連続になるので、何も注意しないとおかしなグラフになります。
この手順に従うと次のようなグラフが得られます。
計算した関数表を見てみると、x = 0のところでエラーになっているので、そこをスキップして離れた点を折れ線で結ぶという約束になっているようなので、上の図のように不自然なグラフになってしまします。この場合は、セルB19をアクティブにしてデータを 消去(バックスペースを押す)することによって、折れ線を二つに分けることができます。関数値が空白の場合は、グラフを描くのを中断するからです。
不連続な箇所を含む関数のグラフを描くには、連続部分の関数表を別々に計算して、「グラフを重ねて描く」の要領で二つをまとめればよいが、上の例のように、定義されないところは空白にすると、折れ線の描きようがないので、切れた折れ線になる。
「挿入/グラフ/散布図/散布図(直線)」メニューではなくて、「挿入/グラフ/散布図/散布図(平滑線)」メニューを選ぶと間違った印象のグラフ が表示されるので使わないように。たとえば、次のような「グラフ」を描いてみてください。
表示されるグラフは、良く見慣れた原点で折れ曲がった関数ではなく、原点付近で丸みを帯びた曲線となって表示されます。これは、Excelが気を利 かせて、指定された7点を通るもっともなめらかな曲線を計算し、描いたものなのです。絶対値関数が分かっている人にとって、このグラフが間違いであること はすぐに分かりますが、様子の分からない未知の関数のグラフを描かせるような場合は、間違った知識をインプットされてしまうので、絶対に使ってはいけません。
本当の絶対値関数を表示させるためには「散布図(直線)」オプションを使います。
Excelにはたいていの数学関数は揃っています。次のような関数はよく使われるので、覚えておいて下さい。普通の使い方と違うのは対数関数でしょ
う。普通「log」と書くところ、Excelでは「LN」と書きます。「natural
logarighm」の頭文字です。切り捨て、切り上げは負数のとき注意が必要です。
このほかによく使われる関数として、べき乗がありますが、これは関数記号を使わず、「^」を使って数式に直接書き込みます(「=A4^5」のように)。
EXP |
指数関数 | ネピア数(e = 2.718281828...)のx乗 |
LN |
自然対数関数 | ネピア数を底とする対数関数 |
SIN, COS, TAN, ほか
|
三角関数 |
|
SQRT |
平方根 | 「^0.5」と同じ |
ABS |
絶対値 | |
MOD, QUOTIENT |
整数割り算のあまりと商 | |
SIGN |
符号関数 | 正ならば「1」、ゼロならば「0」、負ならば「-1」とする |
ROUND |
四捨五入 | ROUND(-2.6,0) = -3 |
INT, TRUNC |
切り捨て | INT(-2.6) = -3, TRUNC(-2.6) = -2 |
ROUNDUP, ROUNDDOWN |
切り上げ、切り捨て(小数点以下の桁数を指定) | ROUNDUP(-2.6,0) = -3, ROUNDDWN(1.23,1)=1.2 |
FLOOR, CEILING |
切り上げ、切り捨て(最小単位数を指定) | FLOOR(-2.6,1) = -3, CEILING(1,23,0.1)=1.3 |
FACT |
階乗 | |
COMBIN |
2項係数 | |
GCD, LCM |
最大公約数(gcd)、最小公倍数(lcm) |
正規分布の密度関数のように、統計で良く出てくる関数もたくさん用意されています。関数名は、分布の名前に続けて「.DIST」「.INV」のよう
な語尾を付けて表します。「.DIST」は累積分布関数、密度関数あるいは確率関数、をあらわし、「.INV」は逆関数を表します。
BETA.DIST, BETA.INV |
ベータ分布関数、その逆関数 |
CHISQ.DIST, CHISQ.INV |
カイ2乗分布、その逆関数 |
EXPON.DIST |
指数分布 |
F.DIST, F.INV |
F分布、その逆関数 |
GAMMA.DIST, GAMMA.INV |
ガンマ分布関数、その逆関数 |
LOGNORM.DIST, LOGNORM.INV |
対数正規分布関数とその逆関数 |
NORM.DIST, NORM.INV |
正規分布関数とその逆関数 |
NORM.S.DIST, NORM.S.INV |
標準正規分布関数とその逆関数 |
T.DIST, T.INV |
t分布関数とその逆関数 |
WEIBULL.DIST |
ワイブル分布関数 |
BINOM.DIST, BINOM.INV |
2項分布 |
HYPERGEOM.DIST |
超幾何分布関数 |
NEGBINOM.DIST |
負の2項分布関数 |
POISSON.DIST |
ポアソン分布関数 |
例えば、標準正規分布の場合、「NORM.DIST(x, 0, 1, FALSE)」と書くと密度関数のxにおける値、「NORM.DIST(x, 0, 1, TRUE)」と書くと累積分布関数のxにおける値を計算します。
(1)「1 / (1+x2)」のグラフを描きなさい
(2)「x」と「1/x」と「x+1/x」のグラフを重ねて描きなさい
(3)「x log(x)」のグラフを描き、x を0に近づけるとどうなるか調べなさい
(4)「sin(1/x)」のグラフを描きなさい
(5)「exp(-x2)」のグラフを描きなさい
x2 + y2 = 1 は半径1の円の方程式ですが、 x = cos(t), y =
sin(t) を 0 ≤ t ≤ 2π の範囲で動かして (x,y)
を座標にプロットしても同じ図形が描かれます。このような関数の定義の仕方をパラメータ表示、あるいは媒介変数表示といいます。
この方法で定義された関数のグラフを描く場合にも、関数表を計算して散布図を描きますが、この場合は、関数表が t,x,y の3列に広がります。パラメータ t の値を適当に細かく刻んでA列に入力し、B列、C列にx,yの値を計算し、B列、C列の値を散布図に表示すればよいのです。
サイクロイドは、たとえば、自転車のタイヤに固定した点のタイヤを動かしたときの軌跡で、「x(t) = t - sin(t), y(t) = 1 - cos(t)」によって定義されます。
(1) x(t) = cos(t), y(t) = sin(2t-π/4) (範囲は 0 ≦ t ≦ 2π)で定義される関数のグラフを描きなさいで定義される関数のグラフを描きなさい。ただし、πは「PI()」という関数で計算する(値を知る)ことが出来ます。
(2) x(t) = cos(t)2 + cos(t), y(t) = sin(t)cos(t) + sin(t) (範囲は 0 ≦ t ≦ 2π)で定義される関数のグラフを描きなさい。
(3) (デカルトの正葉線)x(t) = 3t / (1 + t3), y(t) = 3t2 / (1 + t3) で定義されたグラフを描きなさい(t ≠ = -1)。
(4) (リサージュ曲線)x(t) = cos(at), y(t) = sin(bt + c) で定義されたグラフを描きなさい(t の範囲は 0 ≤ = t ≤ = 2π、(a,b,c)=(1,1,0), (1,2,-π/4), などなど)。
一変数同様、値と関数値の表(関数表)を作ってそれをグラフにするのですが、二変数の場合は変数の組合わせを2次元の表にして、表の(i,j)要素 に関数値 f(xi, yj) を計算する数式を入力します。
f(x,y) = x*y の場合を例にして説明します。例えば、セルA4:A34に-3から3まで、0.2刻みの数を入力し、セルB3:AF3に-3から3まで、0.2刻みの数を 入力することで、計算すべき独立変数の範囲を設定します。セルB4からセルAF34までの 31 x 31 のセルに関数値を計算します。例えば、セルB4はセルA4をx値、セルB3をy値としてf(x,y)を計算すれば良いので、入力する数式は「= A4*B3」です。以下同様にセルB5には「=A5*B3」、セルB6には「=A6*B3」、...と入力すれば良いのですが、同じような数式はコピー ペーストで入力するのがExcel流です。
しかし、セルB4をセルB5にコピーペーストすると相対参照の規則で、B3の参照がB4にずれてしまいます。このような場合は絶対参照するのでした ね。そこで、セルB4に改めて「=A4*$B$3」と入力し、それをセルB5にコピーすると、...。確かに意図通りになっています。
C列以降も同じ式を入力が続きます。セルC4にセルB4の「=A4*$B$3」をコピーペーストしたらどうなるか、予想が付きますね。そうならないように「=$A$4*$B$3」としたら、...。これではコピーペーストの意味がない!!!
x値の参照はA列という列番号だけを固定すべきなので、そこだけを絶対参照し、行番号は相対参照のママにしたらどうか? という知恵が湧くでしょ
う。その通りです。同じようにy値の参照は「3行目」だけを固定し、列番号は相対参照します。結局、セルB4に入力すべき数式は「=$A4*B$3」とな
りました。このようなセルの参照の仕方を部分絶対参照と言います。
これでテントのような立体らしき局面(双曲放物面といいます)が表示されるはずです。
視点の位置をずらすことによって局面の隠れている部分を見せることもできます。グラフ上を右クリックして、ポップアップメニューから「3-D回転」メニューを選んでください。
2変数関数を立体的に見えるように描くには、「等高線(3-D 等高線)」オプションを使って描く。そのために、2次元の関数表 {f(x,y)} を作成しておく必要がある。
表の左端に x の値、表の上端に y の値を入力し、f(x,y) を計算するときは、x を参照するときは列番号だけを部分絶対参照し、y
を参照するときは行番号だけを部分絶対参照するような数式を入力すれば、入力した数式を表全体にコピーペーストすることで関数表を作成することができる。
x, y の値も含めて関数表をコピーし、「挿入/グラフ」タブの「その他のグラフ」ボタンをクリック、「等高線(3-D 等高線)」オプションを選ぶことで立体のグラフが表示される。
立体グラフは視点の位置によって、印象が違って見えるので、いろいろ試してみる必要がある。そのためには、表示されたグラフの上でマウスの右ボタン をクリックし、表示されるポップアップメニューから「3-D回転」メニューを選択し、表示された「グラフエリアの書式設定/3-D回転」ウィンドウで、指 示されたようにいろいろ試してみればよい。
等高線を密にしたければ、グラフの縦軸をマウスで右クリックして、ポップアップメニューの中から「軸の書式設定」メニューを選択、表示される「軸の 書式設定」ウィンドウで「軸のオプション」メニューの中から「目盛間隔」を「固定」とし、「5」の代わりにたとえば「1」として「綴じる」ボタンをクリッ クすると、縦軸の目盛りが密になり、色分けが細かくなる。
見え方をを変えたい場合は、グラフをクリックして「デザイン/グラフのスタイル」タブをクリックすると、いろいろなオプションが選べるようになっているので、試してみると良い。例えば、次の図のように。
(1) f(x,y) = 1 - x2 - y2 で定義された2変数関数のグラフを描きなさい。
(2) f(x,y) = exp(-3x2 - y2) で定義された2変数関数のグラフを描きなさい(exp(x) は ex と同じです)
(3) f(x,y) = exp(-(x2/2 + y2/2 - 2xyr) / 2 / (1-r2)) / 2π/ sqrt(1-r2)、rは絶対値が1以下の定数
地図のように等高線で表現する方法もあります。上の「3-D等高線」からスタートします。色の変わり目の線がx-y軸に等高線として描かれるので、 最初に描いたデフォルトの目盛り間隔だと貧弱な等高線しか期待できません。2番目の図のように等高線の本数を増やす必要があります。手順を再掲します。
軸の目盛りをデフォルトのままワイヤフレームオプションを選ぶと悲惨です。等高線の本数を増やしたい場合は、「レイアウト/軸」タブの「軸」ボタン をクリックし、「主縦軸/その他の主縦軸オプション」メニューを選択し、「軸の書式設定」ウィンドウを表示させます。あとは上の説明に従ってください。
セルオートマトンを使ったちょっと不思議なグラフを体験してみましょう。
セルオートマトンとは、周りの様子を見ながら状態を変えていくロボットのようなものです。ある行(の何列か)に0か1の数値ベクトルを与えます。次 の行の各セルは、上の行の並びを見て0にするか1にするかを決めます。それが決まると、それを見てその次の行の数が決定されます。というようにして、順次 新たな行のベクトルを決めていきます。
最も単純なルールとしては、新しい行のあるセルはそのセルの真上と左右の三つのセルだけからある規則に従って0か1を決める、というものです。例え ばセルB4はセルA3,B3,C3の三つのセルの数値(0,0,0か0,0,1か0,1,0か、...、1,1,1)だけから0か1を決めます。 「0,0,0か0,0,1か0,1,0か、...、1,1,1」は3桁の2進数と考えると、0から7までの数になります。そうすると、セルB4の数を決め る規則として、「0,2,5,7ならば0、1,3,4,6ならば1」のように指定することができます。まとめると次の表のようになります。
セルA3,B3,C3 | 0,0,0 | 0,0,1 | 0,1,0 | 0,1,1 | 1,0,0 | 1,0,1 | 1,1,0 | 1,1,1 |
2進数で表すと | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
セルB4 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
最後の行を2進数として読むと90なので、この変換規則はルール90と呼ばれています(正しくは、逆順に並べてものを2進数として読むのですが、こ
の場合は逆順にしても同じなのでやはりルール90です)。これをExcelで計算してみましょう。最初にほとんど0というベクトルからスタートしたとき、
数十回変換するとどうなるでしょうか、その経過はどうなっているでしょうか?結果は誰にも想像できません。
=vlookup(4*a3+2*b3+c3, {0,0;1,1;2,0;3,1;4,1;5,0;6,1;7,0},2)
」と入力する(vlookup関数は上のような表で与えられる変換規則を実行する関数です。2進数を計算して(4*a3+2*b3+c3
)、0ならば0、1ならば1、2ならば0、...と変換する({0,0;1,1;2,0;3,1;4,1;5,0;6,1,7,0}
は対応表を一列で表現したもの)、という計算を実行していることが何となく理解できるでしょう)できあがったのが次のようなものです。ちょっとびっくりです。興味があったら、ルール90以外のルールも試してみて下さい。
練習 最初にM3=1,AN3=1、それ以外は0としたらどうなるでしょうか?
練習 ルール30がどうなるか調べて下さい。