連立微分方程式をRK法でExcelで解く方法

〈前置き〉

本日は、Excelで連立微分方程式を解いてみたいと思います。解き方は、例によって、ルンゲクッタ(RK)法を持ちいます。「え?ルンゲクッタ法のような解の更新を含む数値計算って、Excelで出来るの?」と思われる方は、過去記事:Excelによるルンゲクッタ法の使い方 を参照ください。更新する際に、コピー&ペーストを繰り返すので多少手間ですが、解析ソフトなどがなくても解の様子を描画して確認できるので、安価でそれなりの予測をすることができます。正直、解の精度や収束時間が研究対象であったり、数万回以上の解の更新を必要とする方であったりしない限り、Excelでの予測である程度対応可能に感じます。

〈ルンゲクッタ法とは?〉

科学者や技術者は、新たな発見や創造のために、現象を予測することが求められます。その予測をする方法として、「微分方程式を解く」というのがあります。この微分方程式は、「知りたい量の時間変化が、どうなる」という具合に記述される式です。上手い具合に、「知りたい量=時間の関数」に整理できれば、後は好きな時間を入力することで、知りたい量の時間変化を知ることができます。これで、予測が完了です。しかし、そういう具合に式整理ができない物があります( 殆どの方程式は、こちらに属します )。そうした式を解く方法が、「数値計算法」です。これは、「ある規則で時間と知りたい量を更新し、方程式の姿を見出す」方法です。微分方程式の目的が現象の予測であるのならば、別に、明確な変数と時間の関係が分からなくても、傾向が分かる程度の関係が分かれば十分なのです。ルンゲクッタ法は、そうした数値計算法で一般的な手法の一つです。

〈数値計算の基本的な流れ〉

1.現象の数式化 ( 解きたい微分方程式をご用意下さい )

2.微分方程式の一階化( 時間と一変数だけの姿に変換してください。当然、式は、複数になってOK )

3.初期値設定

4.数値計算法で記述

5.必要回数まで更新する

〈Excelでのルンゲクッタ法の記述の仕方〉

1.まず、「カウント、時間、計算解、更新項」の枠を作る。

2.次に、「カウント、時間、計算解」に数式を記入する。

 ・四次のルンゲクッタ法なので、一度に四つの計算を行う必要がある。

 ・カウントの初めの1は、初期値が入力される場所である。

 ・カウントの最後の1は、更新後の最初の値である。

 ・解きたい変数が増えると、計算解の列数も増える。( ex. 連立微分方程式 )

 ・計算解の列数が増えると、同じ数だけ更新項の列数も増える。 

 ・更新項には、微分方程式をdX=f(X)dt の形に変換してf(X)Δt として記入する。

3.式が記入できたら、下図の赤枠箇所を丸ごとコピーして、同図貼付け箇所に貼り付ける。

4.傾向が掴めそうな回数まで更新して、カウントの1のみピックアップして、グラフ化する。

〈例示:連立微分方程式での記述〉

二次の微分方程式に関しては、過去記事にて具体例を示した。ここでは、連立微分方程式に関して記述してみる。題材としては、1927年にケルマックとマッケンドリックによって発表された感染症流行モデルである、ケルマック-マッケンドリック方程式 (KM方程式)を扱う。

1.微分方程式の記述

2.一階化 ⇒ 上図より、二階以上になっている式はないので、済。

3.初期値設定

ここでは、とりあえず適当に、下記とする。実際には、後で出てきた結果を見て、この項目を色々調整して方程式とそれが表す現象の理解を深めていくことになる。

3.ルンゲクッタ法で記述 ( 下図にNM方程式をルンゲクッタ法でExcelに記述したものを示す )

上図の緑色に塗られた箇所が、具体的に数値や式を記入する場所である。実際に計算するときは、緑色の箇所は、数値や、引用するセル番号の組み合わせで記述された式にすること。上図は、あくまでもその一歩手前の公式を記した。ここで、連立微分方程式が、どのように記述されるのかの理解を深めて頂きたい。

では、ここで、Excelで具体的に計算する形にする。まずは、文字式で示す。対応するセル番号で記述している。

実際は、上図のように緑色のセルに文字を記入するとセル内に計算結果が表示される。つまり、4次のルンゲクッタ法の一回目の計算が完了したことになる。そこで、前述したように手動で更新(コピー&ペースト)を行うと、下記のようになる。

今回は、とりあえず一か月分の結果を見たいので、30回分( 30日分 )の更新を行う。

また、結果を見るときはカウント1の結果だけ見ればよいので、Excelのフィルター機能を使って表示を1だけにする。

ここまで出たら、あとはExcelの描画機能を使ってグラフを作成してみる。例えば、時間と計算解を選択して、散布図( 平滑線 )を作図すると下記のようになる。

図. 一カ月の各健康状態の人数推移[ X ;健康者、Y ;感染者、Z ;除外者 ]( 感染率α=0.01、除外率β=0.5、組織総人数N=100人、初期健康者X0=100人、初期感染者Y0=1人、初期除外者Z0=1人)

この結果から、この感染症をかかった人が1人だけいると、健康な人の数は1W間で半減し、20日後には20人程度まで減少して落ち着く。また、感染者は、初め1人だったが9日後まで18人まで増加し、その後減少をはじめ、25日後には0人になる。つまり、このときこれ以後感染症に新規にかかる人はいなくなる。ところで、健康者の数が急速に減少し、感染者の数が増加しているとき、除外者の数が急上昇している。除外者は最終的に80人に達する。これは、何を意味しているのあろうか?除外者というのは、感染者そのものではなく、感染する恐れのない人である。例えば、ワクチンを接種して抗体を持った人、回復した人、死者、隔離者である。対象の現象によって、想定している除外者を議論することになるであろう。というのも、例えば、致死率100%の感染症ならば、上図で25日後には8割が死ぬことを意味しているので、感染者が25日後に0人になるからOKと楽観視できないからである。除外者の推移とその想定される内訳を議論することは、感染対策を議論することにつながるのである。例えば、除外者をワクチン接種者とすれば、その接種率を8割にすれば、感染症を抑えることができる。。となるのである。KM方程式は、ネットで検索すると様々なモデルが提案されているので、是非読んでみると面白いと思う。感染率と除外率がどういう関係性の時に、感染が収束するのか、爆発するのかなどが予測されていたり、、感染症に対する方程式とそのパラメータの整合性を考察したりした論文が多数ある。

さて、本日は、Excelで連立微分方程式をルンゲクッタ法で解く方法を紹介しました。大学や大学院の研究室で非線形現象を扱っている方は、連立微分方程式を解くことが多いと思います。MATLABなどの数値計算ソフトで解いても良いですが、Excelでもある程度のことは伝わったと思います。是非、参考とする論文やデータがある場合は、その式とパラメータを入力して解いてみてください。今回のKM方程式も、ローレンアトラクタのように、「個別の解を見るとカオス状態だったのに、全体をみるとある挙動の中で収束する」傾向が確認できるかもしれません。

では!

(参考過去記事): グラフ化の方法など記載しています。

記憶って、対象の雰囲気を掴むことだと気がついた話

〈前置き〉

 映像記憶というのがある。これができる人は、目で見た風景がそのまま頭の中に残っていて、頭の中でそれをまじまじと観察することができるようだ。だから、試験でもめっぽう強い。だって、教科書や辞書がそのまま頭に映像として入っていて、それを後で見返せるのだから。

 これ、ひょっとして自分にも備わっているのでは?と思って、、風景を一瞬だけ見て、目を閉じてみる。。すると、光が遮断されるのだから、当然真っ暗闇である。ただし、それでも微妙に目蓋から侵入してくる光のせいなのか、それとも眼と言う脳の一部の電気信号のためなのか不明だが、モヤモヤした像の動きを感じることは出来る。しかし、目で見ていたような景色が、脳内で視覚的に再現されることはない。よって、映像記憶は備わっていないと分かる。こういった記憶ができる人って、何かコツがあるのだろうか??

 〈主題〉

 今日は、映像記憶の仕組みを自分なりに漠然と考えてみようと思う。

 まず、我々は目によって風景を知ることができる。風景を見ながら、それを観察し、楽しむことができる。我々は、目で見た風景を、物体に反射した光が、目の組織を刺激し、その刺激が電気信号となり、脳内で処理されることで、初めて認知できる。

 ここで別の知覚を考える。例えば、ラベンダーの香り。鼻でかいだ香りは、鼻腔内の組織を刺激し、その刺激が電気信号となり、脳内で処理されることで、初めて認知できる。例えば、ストロベリーキャンディーの味。口に含み、舌で舐めたその味は、舌の組織を刺激し、その刺激が電気信号となり、脳内で処理されることで、初めて認知できる。以降、ラベンダーの花や、ストロベリーキャンディーがなくとも、その良い香りや味の感覚や、そのときの素敵な感情、雰囲気を思い出すことができる。

 話を視覚に戻す。視覚的に入手した情報は、目を閉じるとほぼ思い出せない。まして、何ページの何処に何が書いてあったとか、部屋の何処そこに座っているクマ人形の目にまつげが何本生えていたとか、覚えていない。だが、先の嗅覚や味覚で捉えたモノの思い出し方が円滑であったことを、思い出して欲しい。匂いや味は、それを刺激で直接とらえた組織からの電気信号、つまり感覚や、その時の雰囲気、印象、気持ちから、思い出すことができたのである。このことから、五感を通して得た情報は、その五感に意識を向けて想起するのではなく、五感を通して情報を得たときの感覚・感情に意識を向けるべきなのではないか?というのが、今日の私の気付きである。何度も話をまとめて恐縮だが、視覚的に得た情報(=映像記憶)は、想起の際に目で見た風景の再現に意識を向けるのではなく、その風景を見ているときに、注視しているものに、どんな感覚を受け、どんな感情を抱いたか(=雰囲気)に意識を向けると思い出しやすいものと思う。

 ここで私が言ってもどうしようもないが、試しにある町の風景を、雰囲気を楽しむ感じで10秒だけ見て目を閉じてみた。そして、その雰囲気を言葉で表現しようとしたところ、15個の建物とその位置を思い出すことができた。風景を見るときは、全体の雰囲気を把握しながら、覚えたい個々の物をやはり雰囲気を掴みながら眺める。雰囲気と言っているのは、対象を眺めた時の感覚( 主に、色合いや凹凸感 )や感情のことであり、論理的に「あれはここにある」とか、「何番の」とかのことではない。人の記憶は、7±2個が一度に覚えられる限界と言われているから、私の15個というのは、明らかにこれを上回っている。今後、もっと試していきたいと思う。

【本日の動画】川のせせらぎ音

川の音は、ほんとに癒されます。滝の音は、頭を覚醒させてくれますが、川は癒しと言うか浄化と言う感じです。昨今、色んな出来事や社会情勢からか、皆心が疲れているように感じます。川の音を聴いて、癒されて欲しいなと思います。