グラフを描く

Excelは元々経営シミュレーションの目的で開発されたソフトウェアですが、現在では様々な数値計算を可能にする汎用の計算道具になっています。せっかく手元にあるのだから使わなければ損。
数学的な問題で、関数が出てきたとき、その関数はどんな形をしているのだろう、と疑問に思うことがしばしばあるでしょう。Excelを使えば簡単にグラフが描けます。そうすれば、数学や統計、確率の理解もすすむことでしょう。普段から経験を積んでおくことが大事。  

  1. 一変数関数
    1. 三角関数
      1. グラフの描き方:関数テーブルを作り、「散布図(直線)」オプションを使う
    2. グラフを重ねる
      1. グラフの描き方:グラフを重ねて描く
    3. 不連続な関数を描く
      1. グラフの描き方:折れ線を切る
    4. 注意
      1. 散布図の使い方
    5. 関数の種類
      1. 数学関数
      2. 統計関数
      3. 練習問題
    6. パラメータ表示(媒介変数表示)の関数のグラフを描く
      1. 例1 サイクロイドのグラフを描く
      2. 練習問題
  2. 二変数関数のグラフ
    1. 二変数関数の関数表作成
      1. グラフの描き方:2変数関数
      2. 練習
    2. 等高線図
      1. 等高線図の別の例、セルオートマトン

一変数関数

関数をグラフ表現するには、手で描く場合のように、関数の通る点をいくつか計算して、それらを順番に折れ線で結びます。ある列にxの値、次の列にf (x)の値を計算した数表を作り、それを「挿入/グラフ」タブにある「散布図」グラフオプションを選択します。xの値を細かくすればするほど丁寧なグラフ になります。
以下、いくつかの例を使って説明します。

三角関数

三角関数のグラフは、Excelの用意している「sin()」「cos()」「tan()」などの数学関数を利用することで簡単に描くことができます。

  1. セルA4:A36に-3.2から3.2まで0.2刻みで数を入力する
  2. セルA3に「x」、セルB3に「sin(x)」という文字列を入力する
  3. セルB4に「=SIN(A4)」と入力する
  4. セルB4をセルB5:B36にコピーペーストする
  5. セルA3:B36をアクティブにしてから「挿入/グラフ」タブの「散布図」ボタンをクリックし「散布図(直線)」オプションを選ぶ

例えば次のようなグラフが描けるはずです。関数値が±1付近でややでこぼこが目立ちますが、気になるのであれば刻み幅を0.1として描いてみて下さい。関数 によっては、局所的に変化が激しい部分がありますから、その場合は全域でxの値を等間隔に取らなくても、部分的に刻み幅を細かくすれば、少ない労力で、き れいなグラフが描けます。

     正弦関数

グラフの描き方:関数テーブルを作り、「散布図(直線)」オプションを使う

Excelで一変数関数 y = f(x) のグラフを描く場合は、なるべくたくさんの x の値に対する関数値 f(x) を計算した関数表を作り、それを「挿入/グラフ」タブの「散布図」ボタンの「散布図(直線)」オプションを使って表示させる。

関数値を計算した上のセルに関数名を入力しておき、それを一緒にアクティブにして「散布図」を描くと、タイトル部分に関数名が表示される。表示させる関数が一つだけならば、凡例は必要ないので、削除しておく。

x の値は等間隔に取る必要はない。むしろ、関数の変化が急激なところはなるべくたくさんの x に対して関数値を計算させ、緩やかなところは間隔を空けるようにする。最初から計算する x の値を決めないで、グラフの形状を見ながら試行錯誤すればよい。

軸以外の横棒をマウスで右クリックすると表示されるプルダウンメニューから、「削除」メニューを選択すると横棒を消すことができる。

グラフを重ねる

上のグラフにsin(x)関数を近似する5次多項式を重ねて近似のよさを検討する、という場面を想像して、作成してみましょう。

  1. セルC3に「近似3次式」、セルD3に「近似5次式」、という文字列を入力する
  2. セルC4に「=A4 - A4^3/6」、セルD4に「=A4 - A4^3/6 + A4^5/120」と入力する
  3. セルC4:D4をセルC5:D36にコピーペーストする
  4. セルC3:D36をコピーして、グラフの上をクリックしてペーストする

     多項式近似

グラフの描き方:グラフを重ねて描く

すでに表示されているグラフの上に、別のグラフを重ねて描く場合は、もし、関数表の x の値が同じならば、関数値の列だけをコピーし、グラフの上でペーストすれば良い。

重ねて描いたグラフの違いは、Excelが自動的に色分けして、凡例を作ってくれる。重ねるグラフの関数値を計算した上のセルに、関数名(あるいは説明)を描いておくと、凡例にその文字が表示される。

x の値が同じでない場合は、単純なコピーペーストでは出来ないので、次のような手順に従う。

  1. 追加する関数の関数表を別に作る(その範囲をセルA10:B20としよう)
  2. 関数値の列だけ(セルB10:B20)コピーし、グラフの上でペーストする
  3. グラフの上で右クリックし「データの選択」メニューを選択する
  4. 追加した系列をクリックして(左側の)「編集」ボタンを押す
  5. 「系列の編集」ウィンドウで「系列Xの値」欄にすでに入力されている内容を削除して(これが大事)、1で作った関数表の独立変数部分を入力する(マウスでセルA10からセルA20までドラッグする)


不連続な関数を描く

f(x) = 1/x は x = 0 で不連続になるので、何も注意しないとおかしなグラフになります。

  1. セルA4:A34に-3から3まで、0.2刻みの数を入力する
  2. セルB4に「=1/A4」と入力して、それをセルB5:B34にコピーペーストする
  3. セルA4:B34をアクティブにして、「挿入/グラフ」タブの「散布図」ボタンをクリックして「散布図(直線)」オプションを選ぶと、目的の関数に近いグラフが表示される

この手順に従うと次のようなグラフが得られます。

     不連続関数

計算した関数表を見てみると、x = 0のところでエラーになっているので、そこをスキップして離れた点を折れ線で結ぶという約束になっているようなので、上の図のように不自然なグラフになってしまします。この場合は、セルB19をアクティブにしてデータを 消去(バックスペースを押す)することによって、折れ線を二つに分けることができます。関数値が空白の場合は、グラフを描くのを中断するからです。

グラフの描き方:折れ線を切る

不連続な箇所を含む関数のグラフを描くには、連続部分の関数表を別々に計算して、「グラフを重ねて描く」の要領で二つをまとめればよいが、上の例のように、定義されないところは空白にすると、折れ線の描きようがないので、切れた折れ線になる。

ページトップへもどる

注意

散布図の使い方

「挿入/グラフ/散布図/散布図(直線)」メニューではなくて、「挿入/グラフ/散布図/散布図(平滑線)」メニューを選ぶと間違った印象のグラフ が表示されるので使わないように。たとえば、次のような「グラフ」を描いてみてください。

  1. セルA4:A10に-3から3まで、1刻みの数を入力する
  2. セルB4に「=ABS(A4)」と入力して、それをセルB5:B10にコピーペーストする(ABSは絶対値を取る関数)
  3. セルA4:B10をアクティブにして、「挿入/グラフ/散布図/散布図(平滑線)」メニューを選ぶ

表示されるグラフは、良く見慣れた原点で折れ曲がった関数ではなく、原点付近で丸みを帯びた曲線となって表示されます。これは、Excelが気を利 かせて、指定された7点を通るもっともなめらかな曲線を計算し、描いたものなのです。絶対値関数が分かっている人にとって、このグラフが間違いであること はすぐに分かりますが、様子の分からない未知の関数のグラフを描かせるような場合は、間違った知識をインプットされてしまうので、絶対に使ってはいけません。

     平滑線

本当の絶対値関数を表示させるためには「散布図(直線)」オプションを使います。

  1. セルB4:B10をコピーして、グラフの上でマウスをクリックしてからペーストする。
  2. 表示されたグラフの上でマウスを右クリックし、ポップアップメニューを表示させ「グラフの種類の変更」を選び、「散布図(直線)」を選ぶと、良く見慣れた原点で折れ曲がった絶対値の関数が表示される。下に平滑線が描かれているので、その違いが比較できる。

ページトップへもどる

関数の種類

数学関数

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列の値を散布図に表示すればよいのです。

  1. セルA4:A34に-3から3まで、0.2刻みの数を入力する
  2. セルB4に「=COS(A4)」、セルC4に「=SIN(A4)」と入力して、セルB4:C4をセルB5:C34にコピーペーストする
  3. セルB4:C34をアクティブにして、「挿入/グラフ」タブの「散布図」ボタンをクリックし「散布図(直線)」オプションを選ぶと、目的の関数のグラフが表示される

例1 サイクロイドのグラフを描く

サイクロイドは、たとえば、自転車のタイヤに固定した点のタイヤを動かしたときの軌跡で、「x(t) = t - sin(t), y(t) = 1 - cos(t)」によって定義されます。

  1. セルA4:A69に0から0.2おきに13まで入力する
    方法 
    1. セルA4に0と入力する
    2. 名前ボックスに「A69」と入力する
    3. Shiftキーを押しながら↑キーを押して、セルA4:A69をアクティブにする
    4. 「ホーム/編集」タブの「フィル」ボタンをクリックし「連続データの作成」オプションを選び、「増分値」として「0.2」と入力する。これで、セルA4:A69に t の値が入力される
  2. セルB4に「=A4-SIN(A4)」、セルC4に「=1-COS(A4)」と入力して、セルB4:C4をセルB5:C69にコピーペーストする
    方法 
    1. セルA4をアクティブにして、Ctrlキーを押しながら↓キーを押す。そうすると、セルA69がアクティブセルになる
    2. セルB69:C69をアクティブにして、Shiftキーを押しながら↑キー押す。そうすると、セルB4:C69がアクティブになる
    3. Ctrl+Dキーを押す(ショートカットキー)
  3. セルB4:C69をアクティブにして、「挿入/グラフ」タブの「散布図」ボタンをクリックし「散布図(直線)」オプションを選択する

      サイクロイド

練習問題

(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」とな りました。このようなセルの参照の仕方を部分絶対参照と言います。

  1. セルA4:A34に-3から3まで0.2刻みの等差数列を入力する。
  2. セルA4:A34をコピーし、セルB3をクリックして、「ホーム/クリップボード」タブの「貼り付け」ボタンをクリックし、「貼り付け/行列を入れ替える」オプションを選択する(セルB3:AF3に-3から3まで0.2刻みの等差数列が入力される)
  3. セルB4に「=$A4*B$3」と入力して、それをセルB4:AF34にコピーペーストする
  4. セルA3:AF34をアクティブにして、「挿入/グラフ」タブの「その他のグラフ」ボタンをクリック、「等高線(3-D 等高線)」オプションを選ぶ(Excel2003の場合:「グラフウィザード」ボタンをクリックし、「等高線」オプションを選び「完了」ボタンをクリック)。

これでテントのような立体らしき局面(双曲放物面といいます)が表示されるはずです。

   paraboloid

視点の位置をずらすことによって局面の隠れている部分を見せることもできます。グラフ上を右クリックして、ポップアップメニューから「3-D回転」メニューを選んでください。

  1. 表示されたグラフの上でマウスの右ボタンをクリックし、表示されるポップアップメニューから「3-D回転」メニューを選択する
  2. 表示された「グラフエリアの書式設定」ウィンドウで、「3-D回転」メニューを選び、「回転」見出しの「x」「Y」「透視投影」の数字を変えたり矢印アイコンをク リックすると、それに追随してグラフが再描画されるので出来映えを瞬時に確かめることができる(ちょっと感激)。書式設定ウィンドウがグラフを覆っていると、この動きは見えないので、ウィンドウを移動しておくこと。気に入った方角を見つけるまで試行錯誤すれ ばよい

グラフの描き方:2変数関数

2変数関数を立体的に見えるように描くには、「等高線(3-D 等高線)」オプションを使って描く。そのために、2次元の関数表 {f(x,y)} を作成しておく必要がある。

表の左端に x の値、表の上端に y の値を入力し、f(x,y) を計算するときは、x を参照するときは列番号だけを部分絶対参照し、y を参照するときは行番号だけを部分絶対参照するような数式を入力すれば、入力した数式を表全体にコピーペーストすることで関数表を作成することができる。

x, y の値も含めて関数表をコピーし、「挿入/グラフ」タブの「その他のグラフ」ボタンをクリック、「等高線(3-D 等高線)」オプションを選ぶことで立体のグラフが表示される。

立体グラフは視点の位置によって、印象が違って見えるので、いろいろ試してみる必要がある。そのためには、表示されたグラフの上でマウスの右ボタン をクリックし、表示されるポップアップメニューから「3-D回転」メニューを選択し、表示された「グラフエリアの書式設定/3-D回転」ウィンドウで、指 示されたようにいろいろ試してみればよい。

等高線を密にしたければ、グラフの縦軸をマウスで右クリックして、ポップアップメニューの中から「軸の書式設定」メニューを選択、表示される「軸の 書式設定」ウィンドウで「軸のオプション」メニューの中から「目盛間隔」を「固定」とし、「5」の代わりにたとえば「1」として「綴じる」ボタンをクリッ クすると、縦軸の目盛りが密になり、色分けが細かくなる。

見え方をを変えたい場合は、グラフをクリックして「デザイン/グラフのスタイル」タブをクリックすると、いろいろなオプションが選べるようになっているので、試してみると良い。例えば、次の図のように。

    放物双曲面2

練習

(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番目の図のように等高線の本数を増やす必要があります。手順を再掲します。

  1. 「3-D等高線」グラフの縦軸をマウスで右クリックして、ポップアップメニューの中から「軸の書式設定」メニューを選択する(「軸の書式設定」ウィンドウが表示される)
  2. 「軸のオプション」メニューの中から「目盛間隔」を「固定」とし、「5」の代わりにたとえば「1」として「綴じる」ボタンをクリックする(縦軸の目盛りが密になり、色分けが細かくなる)
  3. グラフの真ん中当たりでマウスを右クリックして、ポップアップメニューの中から「グラフの種類の変更」メニューを選択する(「グラフの種類の変更」ウィンドウが表示される)
  4. 「等高線/ワイヤフレーム等高線」オプションを選ぶ

       等高線

軸の目盛りをデフォルトのままワイヤフレームオプションを選ぶと悲惨です。等高線の本数を増やしたい場合は、「レイアウト/軸」タブの「軸」ボタン をクリックし、「主縦軸/その他の主縦軸オプション」メニューを選択し、「軸の書式設定」ウィンドウを表示させます。あとは上の説明に従ってください。

等高線図の別の例、セルオートマトン

セルオートマトンを使ったちょっと不思議なグラフを体験してみましょう。

セルオートマトンとは、周りの様子を見ながら状態を変えていくロボットのようなものです。ある行(の何列か)に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というベクトルからスタートしたとき、 数十回変換するとどうなるでしょうか、その経過はどうなっているでしょうか?結果は誰にも想像できません。

  1. まず、A3:Y3,AA3:AZ3に「0」、Z3に「1」を入力する
  2. B4に「=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}は対応表を一列で表現したもの)、という計算を実行していることが何となく理解できるでしょう)
  3. B4をA4:AZ4にコピーペーストする
  4. A4の数式の中の「#REF!」を「AZ3」に変える(両端は反対の端の情報を使うことにします)
  5. AZ4の数式の中の「BA3」を「A3」に変える
  6. A4:AZ4を50行くらいまでコピーペーストする
  7. A3:AZ50をアクティブにして、「挿入/グラフ」タブの「その他のグラフ」ボタンをクリックし「等高線/等高線」オプションを選択する。
  8. 縦軸をマウスで右クリックして「軸の反転」オプションを選ぶ

できあがったのが次のようなものです。ちょっとびっくりです。興味があったら、ルール90以外のルールも試してみて下さい。

   セルオートマトン

練習 最初にM3=1,AN3=1、それ以外は0としたらどうなるでしょうか?

練習 ルール30がどうなるか調べて下さい。

ページトップへもどる