スプレッドシートを使う その2


今日の演習内容
微分(差分)

今週はスプレッドシートの本来の使い方とは少し違う使い方をしてみる。

数学では関数の微分を行なうことがあるが、 これを数値計算で行なう作業を「差分をとる」 という。 微分の定義に立ち帰ると x の関数 f の微分は、

df/dx = limdx -> 0 (f(x+dx)-f(x))/dx

である。 数値計算では dx を本当にゼロまでは持っていけないので、 有限の(ただし小さい)dx を使って微分を近似計算する。

今回はサイン関数 sin(x) の x による差分を例として計算してみる。

準備 変数 x の数値入力 関数 sin(x) の用意 差と差分の計算 関数 cos(x) の用意 差分と微分の比較

以上の操作で出来たシートを前回作った spred というディレクトリーに、 Applix スプレッドシート固有の形式で保存する。 「ファイル」プルダウンメニューの 「上書き保存」をクリック。 ファイル名を付けて保存。

ここでは差分される関数としてサイン関数を用いたが、 一般的には差分されるものは数値データでも良い。 また変数 x の間隔も今回は一定であったが、 一般には非等間隔の x について与えられた数値データの差分が計算できる。


数値積分

今度はスプレッドシートの計算機能を使って、 差分の逆操作である数値積分をやってみる。

まず積分の定義を思い出すことにする。 積分区間を dx の長さで N 等分した場合の各分割点での関数 f の値を fN と書くと、関数 f の x に関する積分は以下のように定義できる。

limdx -> 0( f0dx + f1dx + ... + fNdx )

数値積分では dx を無限小には持っていけないので、ある有限の(ただし小さい) dx で数値計算を行なう。

今回積分する関数は 1/x とし、不定積分を計算する。 積分区間の下限は x=1 とする。

準備 被積分関数の用意から数値積分まで 関数 loge(x) の用意 数値積分と解析的な積分の比較

以上の操作で作ったシートを、Applix スプレッドシートの固有形式で保存する。


スプレッドシートで力学?

これまでやったことの応用として、スプレッドシートの計算機能を使い、 力学で出て来るようなニュートンの運動方程式の、数値解を求めることにする。 扱う運動方程式は最も簡単なバネの振動の運動方程式とする。 運動方程式は、例えば、

m d2x/dt2 = - kx

のように書けるが、簡単のために m=k=1 としてしまう。 従って扱う微分方程式は、

d2x/dt2 = - x

となる。

準備 位置、速度、加速度の計算 特解 sin(x) の計算とグラフ化

以上の操作で出来たシートを Applix スプレッドシートの固有形式で保存する。