我が日常の裏・表

いろはす/芭蕉(Twitter:Irohasu1230)のTwitterに収まらない話

【数学】PythonでTuringパターンを作ろう その2;1次元拡散方程式の解をアニメーションで表示する

ご無沙汰してます。

連載「PythonでTuringパターンを作ろう」第2弾です。

今回は,1次元の状態で拡散方程式を解いてみたいと思います。

前回第1弾で実装したモデルがこちら。

 \displaystyle{\frac{d}{dt}d_1(t) = \beta d_1(t) + \alpha_2 d_2(t)}

 \displaystyle{\frac{d}{dt}d_2(t) = \alpha_1 d_1(t) - \alpha_2 d_2(t)}

 \displaystyle{\frac{d}{dt}d_3(t) = \alpha_2 d_2(t)}

 

そして、最終的に目指すTuringパターンのモデルがこちら。

 \displaystyle{\frac{\partial}{\partial t}u = d_u \Delta u - u v^2 +f (1 - u)}

 \displaystyle{\frac{\partial}{\partial t}v = d_v \Delta v + u v^2 - v (f + k)}

ここで, \Delta = \displaystyle{\frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2}}

とします。

 

つまるところ目指すTuringパターンを実装するためには x, y方向の2次元の空間の2回微分を克服しなければなりません。

それ以外はドラパルトの時に実装した常微分方程式として帰着できそうです。

 

さて、今回はTuringパターンのシミュレーションに向けて,以下の1次元の拡散方程式を実装していきます。

 \displaystyle{\frac{\partial}{\partial t}}u(t,x) =  d \displaystyle{\frac{\partial^2}{\partial x^2}u(t,x)}

別名「熱方程式」。空間中の熱や溶液中の物質の発散をの様子を記述する方程式と言われ,時間の経過に伴って以下のように変化していきます。

 

上記の式において,偏微分と宣っておきながら悉く常微分の「 d」が用いられていたため偏微分の「 \partial」に修正しました。なぜこれが気づかれなかったのか……。(2023.01.20)

時間の経過を眺めるためにも,アニメーションの機構を搭載したプログラムにしてみました。今回もPDF文書を画像化して掲載しておきます。

 最後に僕がこの手のシミュレーションを勉強する際にお世話になった参考文献をまとめておきます。著者の方々にめちゃくちゃ助けられました。

 

長山雅治「私にとっての反応拡散系数値計算入門 基礎編」

北海道大学電子科学研究所 附属社会創造数学研究センター 人間数理研究分野

 

藤井雅史 2020年度 計算数理A演習 講義資料

計算数理A演習 | Masashi FUJII

 

 目指せ、今年中の完結。PDFの原本を下記のフォルダに追加しておきます。

www.dropbox.com

 最後までどうぞお付き合い願えれば幸いです。