[速度、加速度...]の教材ページの最後につけた 落体問題の小課題の計算例 (レポートの形をととのえてはいない。)
Microsoft Excel または LibreOffice Calc のワークシートをつかうことを想定する。 表計算では、セルに計算式を入れることができる。 計算式から他のセルを参照することができるが、 それには、絶対参照 (列記号・行番号のまえに「$」をつける) と相対参照 (「$」をつけない) がある。 計算式をコピーすると、相対参照のばあいは参照先がずれていく。絶対参照のばあいは変わらない。 時間変化する数量を計算するときには、定数は絶対参照し、時刻ごとに変わる数量は相対参照する。
初期位置・初期速度と、 微分方程式を積分によってといた式をつかって、 それ以後の速度・位置の数値を計算する。
そのためのワークシートは、次の表の A~F 列である。 このうち、A~C列は、ひとつの事例の計算のあいだは定数とみなす数量を置いている。 A列が数量の名まえ、B列が数値、C列が単位である。 [2021-10-20 補足] 初期位置と初期速度の値は、各自が自由にあたえてよい。 このページにしめした数値は一例にすぎない。 しかし、ひとつの事例の計算のあいだは変えないという意味で「定数とみなす」とした。
D~F列は、時間変化する量を、各時刻を1行としてふくめている。 単位は省略しているが、時刻は s、速度は m/s、位置は m である。
A | B | C | D | E | F | |
1 | 時刻 | 速度 | 位置 | |||
2 | 初期時刻 | 0.000000 | s | 0.000000 | 10.000000 | 50.000000 |
3 | 初期位置 | 50.000000 | m | 0.500000 | 5.100000 | 53.775000 |
4 | 初期速度 | 10.000000 | m/s | 1.000000 | 0.200000 | 55.100000 |
5 | 加速度 | -9.800000 | m/s2 | 1.500000 | -4.700000 | 53.975000 |
6 | 時間刻み | 0.500000 | s | 2.000000 | -9.600000 | 50.400000 |
7 | 2.500000 | -14.500000 | 44.375000 | |||
8 | 3.000000 | -19.400000 | 35.900000 | |||
9 | 3.500000 | -24.300000 | 24.975000 | |||
10 | 4.000000 | -29.200000 | 11.600000 | |||
11 | 4.500000 | -34.100000 | -4.225000 | |||
12 | 5.000000 | -39.000000 | -22.500000 |
この表は、つぎのようにして作成した。
B列の各セルには数値を入れる。
セル D2 に =$B$2
セル D3 に =D2+$B$6 ... 上の行の時刻の値を参照して計算している。 この数式 (数値ではない) をその下にコピーしていく。
セル E2 に =$B$4+$B$5*D2 ... 同じ行の時刻の値を参照している。 この数式 (数値ではない) をその下にコピーしていく。
セル F2 に =$B$3+$B$4*D2+$B$5*D2*D2/2 ... 同じ行の時刻の値を参照している。 この数式 (数値ではない) をその下にコピーしていく。
数値あるいは数式のはいった各セルの書式を、数、小数点以下6けたとする。
データのある範囲を指定して、HTMLでエクスポートする。
(このページにふくめたものは、HTMLにしてから編集して、 行・列の番号を示すための列・行を追加している。)
B列の初期位置、初期速度を変えるといろいろなシミュレーションができる。
微分方程式を積分でといた式をつかうかわりに、 有限の (無限小でない) 時間きざみで近似計算する方法もある。 このような近似は、積分でとけない問題のばあいによくつかわれる。 ここではそのうちいちばん単純な (気象の分野でつかわれる用語で) 「前方差分」という方法による。 これは、ある有限時間区間の変化量を、区間のはじめの量で評価する方法である。
それにつかうワークシートは、上の表のA~D列とH~I列である。
A | B | C | D | E | F | G | H | I | |
1 | 時刻 | 速度 (前方差分) | 位置 (前方差分) | ||||||
2 | 初期時刻 | 0.000000 | s | 0.000000 | 10.000000 | 50.000000 | |||
3 | 初期位置 | 50.000000 | m | 0.500000 | 5.100000 | 55.000000 | |||
4 | 初期速度 | 10.000000 | m/s | 1.000000 | 0.200000 | 57.550000 | |||
5 | 加速度 | -9.800000 | m/s2 | 1.500000 | -4.700000 | 57.650000 | |||
6 | 時間刻み | 0.500000 | s | 2.000000 | -9.600000 | 55.300000 | |||
7 | 2.500000 | -14.500000 | 50.500000 | ||||||
8 | 3.000000 | -19.400000 | 43.250000 | ||||||
9 | 3.500000 | -24.300000 | 33.550000 | ||||||
10 | 4.000000 | -29.200000 | 21.400000 | ||||||
11 | 4.500000 | -34.100000 | 6.800000 | ||||||
12 | 5.000000 | -39.000000 | -10.250000 |
A~D列の内容は積分された式をつかうばあいと同じ。
セル H2 に =$B$4
セル H3 に =H2+$B$5*$B$6 ... 上の行の速度の値を参照している。 この数式 (数値ではない) をその下にコピーしていく。
セル I2 に =$B$3
セル I3 に =I2+H2*$B$6 ... 上の行の位置と速度の値を参照している。 この数式 (数値ではない) をその下にコピーしていく。
Python言語のプログラムによって上のワークシートと実質的に同じ計算をするプログラム例を追加した。 出力の文字列は ASCII 文字コードで表現できるアルファベット・数字にかぎり、表現は略式にした。 プログラム中のコメントには日本語文字をふくむ。その文字コードは UTF-8 にした。
上にのべた、積分された式による計算 (いわゆる「解析解」) の速度にもとづいて、 質点の運動エネルギー (1/2) m vz2 の計算を追加する。
上記のワークシート A~C列 (定数)、D~F列 (時間変化する量) をそのままつかう。 H~I列はつかわない。(今後の拡張で上記の差分計算とは別の目的でつかう可能性がある。)
定数として、質点の質量を、A~C列の7行めに追加する。(例は 0.1 kg としたが、値は自由に設定できる。)
A | B | C | |
7 | 質量 | 0.100000 | kg |
変数として、G列に、運動エネルギーを追加する。
セル G1 に「運動エネルギー」を記入する。単位は省略しているが、J (ジュール) である。
セル G2 に、式「=$B$7*(E2^2)/2」を入れ、この数式 (数値ではない) を その下のセルにコピーしていく。
Python による 上記の rakutai1.py に運動エネルギーの計算を追加したのがつぎの rakutai3.py である。
上にのべた、積分された式による計算 (いわゆる「解析解」) の速度にもとづいて、 質点の位置エネルギー m g z と、力学的エネルギー (運動エネルギーと位置エネルギーの和) の計算を追加する。
上記のワークシート A~C列 (定数)、D~G列 (時間変化する量) をそのままつかう。 H~I列をあたらしい目的につかう。
定数として、重力加速度を、A~C列の8行めに追加する。 なお、A~C列の5行めの加速度は、この重力加速度を参照 (絶対参照) する式に変更した。
A | B | C | |
5 | 加速度 | =$B$8m/s2 | |
8 | 重力加速度 | 9.800000 | m/s2 |
変数として、H~I列に、位置エネルギー、力学的エネルギーを追加する。
セル H1 に「位置エネルギー」、I1 に「力学的エネルギー」 を記入する。単位は省略しているが、J (ジュール) である。
セル H2 に、式「=$B$7*$B$8*F2」を入れ、この数式 (数値ではない) を その下のセルにコピーしていく。
セル I2 に、式「=G2+H2」を入れ、この数式 (数値ではない) を その下のセルにコピーしていく。
Python による 上記の rakutai3.py に位置エネルギーと力学的エネルギーの計算を追加したのがつぎの rakutai4.py である。