フィードバックがあるということは、ある量 X が変化すると、 それが、何かを介して、X 自体の変化を引きおこすということである。
この特徴をもつ数理モデルのうちで、いちばん単純な微分方程式でかけるものは、 次のように、Xの変化 (Xの時間による微分) が X自体に比例するものである(ただし a は定数)。
d X / d t = a X ... (1)
この解は、
X = X0 ea t
同じことであるが、
X = X0 exp( a t )
という形になる。ここでexpは指数関数、X0は時刻t = 0での
Xの値である。
a の値が正なら、Xの絶対値は時間とともにどんどん大きくなっていく。 しかも、その大きくなりかた(時間あたりの変化)自体も、同じ形で 大きくなる。
a の値が負なら、Xの絶対値は時間とともに0に近づいていく。 しかし、0に一致はしない。
現実に起こる現象では、量が指数関数型に無限に大きくなることはない。 それは、質量保存、エネルギー保存、エントロピー増大などの制約を受ける からである。 そのような現象を表わす式は、Xの絶対値が小さいあいだは(1)式で近似できる かもしれないが、それが大きくなるにつれて、(1)式で近似する際に省略した 項が重要になる(あるいは、a が定数とみなせなくなる)。
(「ふろおけモデル」は、 [グローバルな気候の変化 (2)] のページに模式図をしめしたものだが、 別の回に説明する予定だが、もうすこしくわしく知りたい人は [2019年度春学期の教材ページ「ふろおけモデル」]を見てほしい。)
このページでは、ひとまず、 物理量ではなく「数」の問題として考える。したがって、量の単位は出てこない。 時間は出てくるが、無次元化された時間 (現実の時間を 時間という次元をもつ定数 でわったもの) と考えてほしい。
変数 v の値が、時間 t によって変わる。変わりかたがつぎの法則にしたがうばあいを考える。
dv/dt = g v 【g は定数】
これは微分方程式としてとくことができ、解は指数関数で書ける。
v(t) = v(0) exp(g t)
しかし、もうすこし複雑な問題の準備として、わざと、時間間隔 Δt きざみで計算してみる。 右辺にでてくる v は、各時間区間のはじめの時点での値を使うことにする (わたしの知っている専門用語では「前方差分」。 別の教材ページ 「数値計算の教材: 時間発展問題の差分計算」で説明している。)
(v(t+Δt) - v(t))/Δt = g v(t)
v(t+Δt) = v(t) + Δt g v(t)
プログラム例では、v(0) = 100, g は 0.02, -0.02, 0 の3とおり、Δt = 2 とした。 これらの数値は、プログラム内に書きこんである。それを変更すると結果も変わる。
3とおりのΔtきざみの時間発展計算それぞれに対応して、 微分方程式としての解(「解析解」)の式に数値を代入した値も計算した。 解析解のほうの変数名に「true」という表現を使ってしまったが、 厳密には真の解ではなくその浮動小数点計算による近似値である。 グラフでは、Δtきざみの時間発展計算結果を、〇、△、+の記号列で、 解析解を線であらわすようにした。
結果の図はつぎのようになる。
これは、[0次元エネルギー収支モデル 例題1 表計算ワークシートによる計算]をさきにつくって、 それにならってつくったものである。 セルの「絶対参照」と「相対参照」、 わたしの例題でのワークシートのつかいかたの約束などは、そちらのページの最初の部分を見てほしい。
例文のワークシートは、MS Windows上の LibreOffice Calc バージョン 7.0.0.3 で動作確認した。 Microsoft Excelではまだ動作確認していないが、たぶん動くと思う。
A | B | C | D | |
---|---|---|---|---|
1 | 指数関数型成長 (増田 2020-11-15版) | |||
2 | 定数とモデルパラメータ | |||
3 | 意味 | 変数名 | 数値 | |
4 | ||||
5 | ||||
6 | 時間刻み | deltat | 2 | |
7 | ||||
8 | ||||
9 | ステップ数 | nstep | 50 | (実際は使っていない) |
10 | ||||
11 | ||||
12 | 成長率 | g1 | 0.02 | |
13 | g2 | -0.02 | ||
14 | g3 | 0.00 |
H, I, J 列に3とおりのシミュレーション、K, L, M列にはそれぞれに対応する指数関数をつかった解の値がえられるようにした。
初期値 (t = 0 での値) は、第6行に数値であたえる。
「↓」は、その上のセルにある計算式をコピーしてはりつけることをさす。 (はりつけると計算式のうち相対参照のところのセル番号がかわっていく。) 計算結果の数値のコピーにならないように注意してほしい。
セル参照に、「$G7」や「K$6」など、縦横の一方が絶対参照で他方が相対参照のものをふくんでいることに注意してください。
E | F | G | H | I | J | K | L | M | |
---|---|---|---|---|---|---|---|---|---|
2 | 時間発展する変数 | ||||||||
3 | 意味 | ステップ番号 | 時刻 | ||||||
4 | 変数名 | kt | (kt-1)*deltat | v1 | v2 | v3 | v1true | v2true | v3true |
5 | |||||||||
6 | 1 | =(F6-1)*$C$6 | 100 | 100 | 100 | 100 | 100 | 100 | |
7 | =F6+1 | ↓ | =H6*(1 + $C$12*$C$6) | =I6*(1 + $C$13*$C$6) | =J6*(1 + $C$14*$C$6) | =K$6 * EXP($C$12 * $G7) | =L$6 * EXP($C$13 * $G7) | =M$6 * EXP($C$14 * $G7) | |
8 | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | |
... | |||||||||
56 | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
表計算でのグラフのつくりかたの指導はわたしはしないが、各自ためしてみてほしい。