工学系大学院生のブログ

2人の大学院生による雑記ブログ

第2-1回 定常拡散方程式(離散化)[python]

第1回では非定常拡散方程式を行いましたが、第2回は時間に依存しない定常拡散方程式について行います。

第2回の目標は数値解析で今後大事になってくる逆行列の処理の仕方について重点的に行っていきます。

まず非定常拡散方程式は次のように書けます。

$$\frac{\partial u(t,x)}{\partial t}=D\frac{\partial^2 u}{\partial x^2}$$

定常より、\( \frac{\partial u(t,x)}{\partial t} =0\)であるのでこの定常拡散方程式は下記のように書けます。

$$\frac{\partial ^2 u(x)}{\partial x^2}=0$$

この式は二階微分方程式ですので、A,Bを定数として下記のように計算ができます。

$$\frac{d ^2 u(x)}{d x^2}=0 ⇔ \frac{d u}{d x}=A $$

$$⇔ u(x)=Ax+B$$

以上のことから境界条件があれば解析的に解をもとめることができます。


数値解析では次のように離散化し変形していきます。

$$ \frac{\partial ^2 u(x)}{\partial x^2} =0 ⇔ \frac{u^n_{i+1}-2u^n_i+u^n_{i-1}}{\Delta x^2} =0$$

$$ ⇔ u^n_{i-1}-2u^n_i+u^n_{i+1}=0 $$

上記の式が境界以外で成り立っているので,x方向にn個の点を取る場合上記の式がn個できます。それらをまとめて行列で表します。

$$ \left[\begin{array}{cccccc}1&0&&&& \\ 1&-2&1&&& \\ &\ddots& \ddots & \ddots && \\&& \ddots & \ddots & \ddots &\\ &&&1&-2&1 \\ &&&&0&1 \end{array}\right] \left[\begin{array}{c}u_0 \\ u_1 \\ \vdots \\ \vdots \\u_{n-2} \\ u_{n-1} \end{array}\right]=\left[\begin{array}{c} u_{0,bd} \\ 0 \\ \vdots \\ \vdots \\0 \\ u_{n-1,bd} \end{array}\right] $$

ただし境界条件が必要となるため,行列の一行目とn行目は境界条件を入れています。

ここで次のように文字を置き、式変形を行います。

$$\bf A= \left[\begin{array}{cccccc}1&0&&&& \\ 1&-2&1&&& \\ &\ddots& \ddots & \ddots && \\&& \ddots & \ddots & \ddots &\\ &&&1&-2&1 \\ &&&&0&1 \end{array}\right] ,\bf b= \left[\begin{array}{c} u_{0,bd} \\ 0 \\ \vdots \\ \vdots \\0 \\ u_{n-1,bd} \end{array}\right] $$

$$⇔ \bf A u=\bf b$$

$$⇔ \bf u =\bf A^{\rm -1} \bf b$$

このように計算を行うことで、求めたい\(\bf u\)が出ます。

しかし、分割数を増やしていくと\(\bf A\)の逆行列を計算することはとても時間がかかるため様々な方法が提案されています。

次回はその方法を紹介していきます。

by hide

このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です