[matplotlib animation] 100.反応拡散系によるチューリングパターン

matplotlib

はじめに

本記事では、反応拡散モデルを使用してチューリングパターンを生成し、matplotlibのFuncAnimationを使ってその動的な変化を可視化する方法について解説します。生物の体表模様やパターン形成のメカニズムを数理モデルで表現する手法を紹介します。

解説

モジュールのインポート

バージョン

データの生成

偏微分方程式を解くことでデータを生成します。詳細については下記記事で解説しました。まず空のリスト(imgs=[])を作成し、そこにimgs.append(U_)でデータを順次追加していきます。

[SciPy] 15. 偏微分方程式を有限差分法で解く
2次元における反応拡散系の偏微分方程式(フィッツフュー-南雲モデル)を有限差分法で解く方法について説明する。

アニメーションの設定

最初に表示する図の設定

im = ax.imshow(imgs[0]) で画像を表示します。

アニメーション関数の設定

set_arrayを使って画像データを順次更新することでアニメーションを作成します。set_climでimshowのvminとvmaxを最小値と最大値に設定し、色の範囲が発散するのを防ぎます。また、ax.set_titleで各フレームの現在時間を表示します。

アニメーションの表示

ガウシアンで補間した版

imshowでinterpolation=’gaussian’を設定すると、以下のように画像が滑らかに表示されます。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

反応拡散系モデルによるチューリングパターンの生成とmatplotlibを使ったアニメーション表示方法について解説しました。このモデルは生物の模様形成などの自然現象を数理的に表現する強力なツールであり、Pythonを使って視覚的に理解することができます。今回の実装を基に、パラメータを変更して様々なパターンを試してみることをお勧めします。

参考

[SciPy] 15. 偏微分方程式を有限差分法で解く
2次元における反応拡散系の偏微分方程式(フィッツフュー-南雲モデル)を有限差分法で解く方法について説明する。
cookbook-2nd/chapter12_deterministic/04_turing.md at master · ipython-books/cookbook-2nd
IPython Cookbook, Second Edition, by Cyrille Rossant, Packt Publishing 2018 - ipython-books/cookbook-2nd
チューリング・パターン - Wikipedia

コメント