Image




 目次

  ・ランダムウォーク

  ・拡散方程式との関係

  ・おまけ:インクのにじみ




この記事を読む助けになる数学の記事
数値計算1話2話5話6話14話16話22話23話






カヤ

これはなかなかゲージュツ的な模様ができたぞ。

ナユミ

へえ、現代アートにでも目覚めたの、カヤちゃん?

カヤ

いや、アーチストになったつもりはないが、ランダムウォークが描く模様を眺めていたんだ。

 t: 0





―説明書―
 「開始/停止」ボタンを押すと2次元ランダムウォークのシミュレーションが始まります。 画面上の赤い点はボールの初期位置を、白い点はボールが通った位置をそれぞれ示しています。
 矢印ボタンでカメラ位置の移動、虫眼鏡ボタンでズームインとズームアウトができます。
 また、PCで閲覧している方は矢印ボタンの下にある「キーボードOff」のボタンを押すと「キーボードOn」に切り替わり、矢印ボタンの代わりにキーボードの矢印キーでも操作できるようになります。 「キーボードOn」の状態ではブラウザを矢印キーでスクロールできなくなります。元に戻したい場合は、「キーボードOn」ボタンを押して「キーボードOff」に戻してください。

ナユミ

ふーん、ゆらゆらしながら、何ともいえない模様を描いていくのね。それで、ランダムウォークって何なのかしら?

カヤ

じゃあ、ランダムウォークについて解説していこう。

  ランダムウォーク



 ランダムウォークは確率的な点の動きのことです。 ここでは特に、2次元単純ランダムウォークについて取り上げます。

\[ 2次元単純ランダムウォーク\]  \( Z_1 \) 、\( Z_2 \) をいずれも整数の集合とする。 直積 \[ Z = Z_1 \times Z_2 \] の元 \( z = \left( z_1 , z_2\right) \) を2次元格子と呼ぶ。
 点 \( P_n \) が2次元格子上を以下のルールに従って動くとき、これを2次元単純ランダムウォークと呼ぶ。

ルール
 \( P_n = \left( i,j \right) \) ならば、\( P_{n+1} \) は \( \left( i+1,j \right) \) 、\( \left( i-1,j \right) \) 、\( \left( i,j+1 \right) \) 、\( \left( i,j-1 \right) \) 計4点の内のいずれかに等しい。これら4点はいずれも等確率 \( \frac{1}{4} \) で選ばれる。

Image


ナユミ

ふむふむ、四方のいずれかに同じ確率で動くのを繰り返していくのね。

カヤ

そうだな。それから、ランダムウォークというのは拡散方程式と呼ばれる偏微分方程式と関係があるんだ。




  拡散方程式との関係



 2次元単純ランダムウォークは2次元格子上の時空間的に離散的な運動ですが、離散化の幅を無限小とし、多数の点について考えることで2次元拡散方程式を以下のように導くことができます。

 2次元単純ランダムウォークにおける時間の1ステップを \( \Delta t \gt 0 \) 、空間の1ステップを \( \Delta h \gt 0 \) とする。 \( N \) 個の動点が同時に2次元単純ランダムウォークを始めると考える。 ただし、個々の動点はいずれも2次元格子上の任意の点を \( \Delta h \) 倍した点から動き始めるとする。
 時刻 \( t \) において位置 \( \left( x , y \right) \) にある動点の個数を \( N \) で割ったものを \( p \left( x,y,t \right) \) とする。 \( p \left( x,y,t \right) \) は時刻 \( t \) において位置 \( \left( x , y \right) \) に動点が存在する割合を表しており、次式が成り立つ。 \[ p \left( x,y,t + \Delta t \right) = \frac{1}{4} \left\{ p \left( x + \Delta h ,y,t \right) + p \left( x - \Delta h ,y,t \right) + p \left( x,y + \Delta h,t \right) + p \left( x,y - \Delta h ,t \right) \right\} \]
この式の両辺から \( p \left( x,y,t \right) \) を引き、整理する。右辺は、 \[ \begin{align} p \left( x,y,t + \Delta t \right) - p \left( x,y,t \right) &= \frac{p \left( x,y,t + \Delta t \right) - p \left( x,y,t \right)}{\Delta t} \Delta t \end{align}\] 一方、左辺は、 \[ \begin{align} & \ \ \ \ \ \frac{1}{4} \left\{ p \left( x + \Delta h ,y,t \right) + p \left( x - \Delta h ,y,t \right) + p \left( x,y + \Delta h,t \right) + p \left( x,y - \Delta h ,t \right) \right\} - p \left( x,y,t \right) \\\\ &= \frac{1}{4} \left\{ p \left( x + \Delta h ,y,t \right) - p \left( x,y,t \right) - \left( p \left( x,y,t \right) - p \left( x - \Delta h ,y,t \right) \right) + p \left( x,y + \Delta h,t \right) - p \left( x,y,t \right) - \left( p \left( x,y,t \right) - p \left( x,y - \Delta h ,t \right) \right) \right\} \\\\ &= \frac{\left( \Delta h \right) ^2}{4} \left\{ \frac{p \left( x + \Delta h ,y,t \right) - p \left( x,y,t \right)}{\left( \Delta h \right) ^2} - \frac{p \left( x,y,t \right) - p \left( x - \Delta h ,y,t \right)}{\left( \Delta h \right) ^2} + \frac{p \left( x,y + \Delta h,t \right) - p \left( x,y,t \right)}{\left( \Delta h \right) ^2} - \frac{p \left( x,y,t \right) - p \left( x,y - \Delta h ,t \right)}{\left( \Delta h \right) ^2} \right\} \\\\ &= \frac{\left( \Delta h \right) ^2}{4} \left\{ \frac{p \left( x + \Delta h ,y,t \right) - 2p \left( x,y,t \right) + p \left( x - \Delta h ,y,t \right)}{\left( \Delta h \right) ^2} + \frac{p \left( x,y + \Delta h,t \right) - 2p \left( x,y,t \right) + p \left( x,y - \Delta h ,t \right)}{\left( \Delta h \right) ^2} \right\} \end{align}\]
ここで、両辺を \( \Delta t \) で割り、\( \Delta t \to 0 \) 、\( \Delta h \to 0 \) の極限を取る。ただし、 \[ \kappa = \frac{\left( \Delta h \right) ^2}{4 \Delta t} \] が常に満たされるように極限を取る。ここで、\( \kappa \) は拡散係数と呼ばれる正の定数である。 以上の条件のもとで、極限を取ると次式(2次元の拡散方程式)が導かれる。 \[ \frac{\partial p}{\partial t} = \kappa \left( \frac{\partial ^2 p }{\partial x^2} + \frac{\partial ^2 p }{\partial y^2} \right) \] ここで、\( p = p \left( x,y,t \right) \) とおいた。

 以下は、2次元単純ランダムウォークと2次元拡散方程式の比較ができるシミュレータです。 拡散係数の値を入力し「開始/停止」ボタンを押すと、左側の枠内に10000個の動点でランダムウォークを行ったときの \( p \left( x,y,t \right) \) の計算結果が、 右側の枠内に拡散方程式による \( p \left( x,y,t \right) \) の計算結果がそれぞれ出力されます。 なお、計算条件は次の通りで、拡散方程式は陽的差分法を用いて計算しました。

計算する空間の範囲: \( -0.5 \lt x \lt 0.5 \) 、\( -0.5 \lt y \lt 0.5 \)
初期条件: \( p \left( x,y,0 \right) = 0 \ \ \left( x \neq 0 \ \rm または \ \it y \rm \neq 0 \right)\) 、\( p \left( 0.5,0.5,0 \right) = 1 \)
境界条件: \( p \left( 0.5,y,t \right) = p \left( -0.5,y,t \right) = p \left( x,0.5,t \right) = p \left( x,-0.5,t \right) = 0 \)

t: 0

 
0 10-4 10-3 10-2 10-1 1



カヤ

個々の点はランダムな動きをしているが、多数の点の動きをまとめて眺めてみると拡散方程式という法則に従っていることがわかるということだな。

ナユミ

ほうほう。なんというか、1個の点をランダムウォークさせた結果を見てるときは個人的な経験談を聞いている感じで、拡散方程式の方は一般論を聞いている感じがするわね。

カヤ

うん、そういうところあるな。まあ、聞いてて面白いのは個人的な経験談のほうだろうな、一般的に。

ナユミ

私も個人的な経験談のほうが聞きたいかな。




  おまけ:インクのにじみ



 拡散方程式は水に垂らしたインクが広がっていく様子を表現できます。 下のシミュレータは、白いトレーの上に水を薄く張り、そこに好きな形でインクを垂らしたときの様子を拡散方程式でシミュレートするものです。
 白色のキャンバス上でマウスをドラッグすると、線を描くことができます。 線の太さは「細」と「太」の2段階から選べて、線の色は「色相」と「明度」のスライダーで変更できます。 好きなように線を描いたら、拡散係数 \( \kappa \) の値を設定して、「開始/停止」ボタンをクリックしてください。 線がにじんでいく様子が見れます。拡散係数の値に応じてにじむ速さが変わるので試してみてください。

t: 0



 なお、このシミュレータにおける計算条件は以下の通りです。数値計算には陽的差分法を用いています。

\[ 計算条件\] ・偏微分方程式:2次元拡散方程式 \[ \frac{\partial p}{\partial t} = \kappa \left( \frac{\partial ^2 p }{\partial x^2} + \frac{\partial ^2 p }{\partial y^2} \right) \ \ \ \ \left( 0 \lt x \lt 1.6 ,\ 0 \lt y \lt 1 , \ t \gt 0 \right)\]
・初期条件 \[ p \left( x,y,0 \right) = 0 \ \ \ \ \left( インクを垂らしてない箇所 \right)\] \[ p \left( x,y,0 \right) = 1 \ \ \ \ \left( インクを垂らした箇所 \right)\]
・境界条件 \[ \begin{align} \frac{\partial p \left( 0, y,t \right)}{\partial x} = \frac{\partial p \left( 1.6, y,t \right)}{\partial x} =\frac{\partial p \left( x, 0,t \right)}{\partial y} =\frac{\partial p \left( x, 1,t \right)}{\partial y} = 0 \end{align}\]



参考:
[1] ランダムウォークと投票者モデル、https://www.ma.noda.tus.ac.jp/u/sh/pdfdvi/00rw.pdf、2024年1月7日閲覧
[2] 惑星学基礎III 第6章 拡散方程式、https://www.se.fukuoka-u.ac.jp/iwayama/teach/kisoIII/2017/chap6.pdf、2024年1月9日閲覧