講義資料(PDF)

コンピュータ工学基礎演習 2014
12 偏微分方程式を解く
機能創成専攻 生体工学領域 井村 誠孝
[email protected]
講義資料: http://bit.ly/bpe-ecp14
常微分・偏微分・連立
2014/7/7
常微分方程式
独立変数: 1
従属変数: 1
偏微分方程式
独立変数: 複数
従属変数: 1
連立常微分方程式
独立変数: 1
従属変数: 複数
連立偏微分方程式
独立変数: 複数
従属変数: 複数
Exercises in Computer Programming
2 / 17
講義資料: http://bit.ly/bpe-ecp14
偏微分方程式とは
 独立変数を2個以上含むような関数の偏導関数を
含む方程式.
 微分:
dy ( x)
dx
 偏微分=注目している変数以外を固定して微分:
∂z ( x, y )
∂x
yは定数だと考える
 多くの自然現象は偏微分方程式で記述される.
 Maxwell方程式,Schrödinger方程式,Navier-Stokes方程
式...
2014/7/7
Exercises in Computer Programming
3 / 17
講義資料: http://bit.ly/bpe-ecp14
偏微分とは?
∂z
dy
∂y
y
z = f ( x, y )
dy
dx
∂z
dx
∂x
2014/7/7
∂z
∂z
dz = dx + dy
∂x
∂y
x
Exercises in Computer Programming
(全微分)
4 / 17
講義資料: http://bit.ly/bpe-ecp14
代表的な偏微分方程式の型
 拡散方程式
∂u ∂ 2u
= 2
∂t ∂x
放物型
 波動方程式
∂ 2u ∂ 2u
= 2
2
∂t
∂x
双曲型
 Laplace方程式
∂ 2u ∂ 2u
+ 2=
0
2
∂x ∂y
2014/7/7
楕円型
Exercises in Computer Programming
5 / 17
拡散方程式を解く
講義資料: http://bit.ly/bpe-ecp14
拡散方程式
 拡散方程式で表される現象
u1 (< u0 )
u0
 熱の移動
 生体内の分子の移動 – 単純拡散
 肺におけるガス交換
 物質内の光の散乱
x
J
 拡散方程式はFickの法則と連続の式から導出され
る.
∂u
J= −
∂x
∂u ∂ 2u
= 2
∂u
∂J
∂t ∂x
= −
∂t
∂x
2014/7/7
Exercises in Computer Programming
7 / 17
講義資料: http://bit.ly/bpe-ecp14
拡散方程式の意味
 uはxとtの関数
∂u ( x, t ) ∂ 2u ( x, t )
=
∂t
∂x 2
ある場所xでのuの時間変化= xの近傍のuの分布が決める.
2回微分が正=下に凸=uは増加
2回微分が0ならば
時間変化なし
→傾き一定に向かう
2014/7/7
2回微分が負=上に凸=uは減少
Exercises in Computer Programming
8 / 17
講義資料: http://bit.ly/bpe-ecp14
熱の拡散
 次の方程式を解く.
∂u ( x, t ) ∂ 2u ( x, t )
=
※任意の関数
2
∂t
∂x
これまでと一緒
初期条件
u ( x,0) = φ ( x) (0 ≤ x ≤ 1)
境界条件=
u (0, t ) U=
U1 (t ≥ 0)
0 , u (1, t )
空間の端の状態
 熱伝導とみなして考える(すなわちuは温度)と:
 1次元の系で,系のサイズは1
 初期状態(t=0)での温度分布が与えられている.
 境界の温度は常に一定とする.
2014/7/7
Exercises in Computer Programming
9 / 17
講義資料: http://bit.ly/bpe-ecp14
離散化
 独立変数の離散化
 時刻の離散化:
 空間の離散化:
t → i∆t ≡ ti
x → i∆x ≡ xi
これまでと一緒
空間も離散化
 解の離散化
 位置
xi,時刻 t j における解:
u ( x, t ) → u (i∆x, =
j∆t ) u ( xi , t j ) ≡ uij
N分割
0
x0 = 0
2014/7/7
x1 =
1
N
1
xN = 1
Exercises in Computer Programming
1
∆x =
N
i
xi =
N
i = 0,, N
10 / 17
講義資料: http://bit.ly/bpe-ecp14
偏微分の差分化
 時間の偏微分
u ( xi , t j + ∆t ) − u ( xi , t j )
∂u
→
∂t
∆t
 空間の偏微分
∂ 2u  ∂ ∂u  u ( xi + ∆x, t j ) − 2u ( xi , t j ) + u ( xi − ∆x, t j )
=
→
2
2
∂x  ∂x ∂x 
( ∆x )
 これは(対称性を考慮した)差分の差分である.
1  u ( xi + ∆x, t j ) − u ( xi , t j ) u ( xi , t j ) − u ( xi − ∆x, t j ) 
−


∆x 
∆x
∆x

2014/7/7
Exercises in Computer Programming
11 / 17
講義資料: http://bit.ly/bpe-ecp14
差分化された拡散方程式
陽解法(オイラー法)
既知
∂u ∂ u
未知
= 2
∂t ∂x
uij +1 − uij uij+1 − 2uij + uij−1
=
2
∆t
( ∆x )
2
⇔ uij +1 = α uij+1 + (1 − 2α ) uij + α uij−1
(α ≡ ∆t / ( ∆x ) )
これまでと同様に
左辺に未知の値をまとめて
漸化式を作る
ただし u ( x, t )
→ u (i∆x, =
j∆t ) u ( xi , t j ) ≡ uij
2
2014/7/7
Exercises in Computer Programming
12 / 17
講義資料: http://bit.ly/bpe-ecp14
初期条件・境界条件の差分化
 初期条件
u ( x, 0) = φ ( x)
⇒ ui0 =
φ ( xi )
時刻
u
uの表記: 位置
最初の値を決めるときに使う
 境界条件
=
u (0, t ) U=
U1
0 , u (1, t )
j
j
,
⇒ u=
U
u
=
U1
0
0
N
2014/7/7
毎ステップ成り立つようにする
Exercises in Computer Programming
13 / 17
講義資料: http://bit.ly/bpe-ecp14
常微分方程式の解法との比較
 常微分方程式
 偏微分方程式
 初期条件を決める
 初期条件を決める
 以下を繰り返す
 以下を繰り返す
 漸化式に従って,1個の変
数の値を更新
 漸化式に従って,(空間分
布を表す)複数個の変数の
値を更新
 境界条件を適用
2014/7/7
Exercises in Computer Programming
14 / 17
陰解法
講義資料: http://bit.ly/bpe-ecp14
完全陰解法
 空間微分項を,時刻 t j ではなく,時刻 t j +1 の値で
差分化する.
u ( xi + ∆x, t j +1 ) − 2u ( xi , t j +1 ) + u ( xi − ∆x, t j +1 )
∂ 2u
→
2
2
∂x
( ∆x )
未知
既知
uij +1 − uij uij++11 − 2uij +1 + uij−+11
=
2
∆t
( ∆x )
⇔ −α u
j +1
i +1
2014/7/7
+ (1 + 2α ) ui
j +1
− αu
j +1
i −1
(
ui α ≡ ∆t / ( ∆x )
=
Exercises in Computer Programming
j
2
)
16 / 17
講義資料: http://bit.ly/bpe-ecp14
連立1次方程式を解く
 整理すると以下の連立方程式となる.
−α
1 + 2α
 −α
1 + 2α
−α

−α
1 + 2α






 0
  u1j +1   u1j 
  j +1   j 
  u2   u2 
−α
  u3j +1   u3j 
=




 


−α 1 + 2α
−α   u Nj +−12   u Nj −2 
  j +1   j 
1 + 2α   u N −1   u N −1 
−α
0
 注: u0j , u Nj は境界条件から常に0なので,計算の必
要はない.
 連立方程式の解き方は既に学習済み.
2014/7/7
Exercises in Computer Programming
17 / 17