• 検索結果がありません。

数値計算講義 第 10 回 偏微分方程式の初期値問題の近似解法

N/A
N/A
Protected

Academic year: 2021

シェア "数値計算講義 第 10 回 偏微分方程式の初期値問題の近似解法"

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

数値計算講義 第 10

偏微分方程式の初期値問題の近似解法

カ ーネン コ

金 子

ア レ ク セイ

[email protected] [email protected]

http://www.kanenko.com/

(2)

偏微分方程式と そ の近似解法 1

世の中の数値計算のほと んど を 占める . 主な単独方程式:

熱方程式: ∂u

∂t = ν∆u 熱伝導, 拡散 波動方程式: 1

c

2

2

u

∂t

2

= ∆u 波動の伝播

Laplace 方程式 ∆u = 0 , Poisson 方程式: ∆u = f 種々 の定常状態 こ こ に, ∆u := ∂

2

u

∂x

2

+ ∂

2

u

∂y

2

+ ∂

2

u

∂z

2

Laplacian と 呼ばれる 微分演算子.

主な連立方程式:

Navier-Stokes 方程式: 流体の運動

弾性体の方程式: ダムや橋や建物など の安定性と 揺れの計算 電磁波の方程式: アン テナ等の設計

3 大数値解法:

スペク ト ル法

差分法 有限要素法

(3)

熱方程式の導出 ( 空間1 次元の場合 ) 2 熱伝導の法則:

熱は温度の高い方から 低い方へ流れる .

流れる 量は温度勾配に比例する ( 比例定数 k が熱伝導率 ) . 熱量の保存則:

針金の微小区間 [x, x + ∆x] における 時間当たり の熱量の変化は,

その時間内にこ の区間の境界から 流れ込んだ熱量の総和に等し い.

比熱 ( 正確には単位長さ 当たり の熱容量 ) を c と し て

∂u

∂x (t, x) ∂u

∂x (t, x + ∆x)

x x +∆ x x

Z

x+∆x

x

{u(x, t + ∆t) − u(x, t)} c dx = k{ ∂u

∂x (x + ∆x, t) − ∂u

∂x (x, t)}∆t

· = · · = ·

c ∂u

∂t ∆t∆x k ∂

2

u

∂x

2

(x, t)∆x∆t

∴ ∂u

∂t = ν ∂

2

u

∂x

2

(ν = k

c ) 拡散方程式と し て の説明:

拡散量は , 溶質の濃度勾配に比例し て , 濃い方から 薄い方に移動する . 物質量の保存則を 書く と , 上と 同じ 式が得ら れる .

( こ の場合 c = 1 であり , k は拡散係数と 呼ばれる 物質定数にな る .)

(4)

熱方程式の初期 - 境界値問題の差分解法 (numa-1.f) 3 有限な長さ の針金の両端の温度を 一定にし て ( 境界条件 ), 針金に勝手に与え た初期温度分布 ( 初期条件 ) から , その後の針金の温度分布の時間的変化を 予測する .

 

 

∂u

∂t = ν ∂

2

u

∂x

2

, 0 < t < T, a < x < b,

u(a, t) = u(b, t) = 0, 0 < t < T ( 斉次 Dirichlet 条件 ), u(x, 0) = ϕ(x), a < x < b ( 初期条件 )

熱方程式の差分近似 u(x, t + k) − u(x, t)

k = ν u(x + h, t) + u(x − h, t) − 2u(x, t) h

2

1 階前進差分 2 階中心差分

∴ u(x, t + k) = 1 − 2νk h

2

u(x, t) + νk

h

2

u(x + h, t) + νk

h

2

u(x − h, t) 区間 [a, b] を N 等分し , h = b − a

N , ま た νk

h

2

= λ が定数と なる よ う にし て , u

ji

:= u(a + hi, jk), i = 0, 1, 2, . . . , N, j = 0, 1, 2, . . . と 書けば ,

u

0i

= ϕ

i

:= ϕ(a + ih) ( 時刻 0 での値は初期値から 決ま る ), u

ji

= (1 − 2λ)u

ji1

+ λu

ji+11

+ λu

ji11

ただし , u

j0

, u

jN

= 0, j = 1, 2, . . . ( 両端での値は境界条件から 決ま る ) こ の漸化式から , 初期 - 境界値問題は簡単に解ける .

( 行列の掛け算さ え も プロ グラ ム する 必要がな い . )

x t

(5)

BLOCK DATA 4

COMMON /PARS/IXMIN,IXMAX,IYMIN,IYMAX,XMIN,XMAX,YMIN,YMAX DATA IXMIN/0/,IXMAX/799/,IYMIN/0/,IYMAX/599/,

+ XMIN/0.0/,XMAX/1.0/,YMIN/-2.0/,YMAX/2.0/

END

PROGRAM HEAT PARAMETER(N=80) REAL*4 U(0:N,0:1)

COMMON /PARS/IXMIN,IXMAX,IYMIN,IYMAX,XMIN,XMAX,YMIN,YMAX HX=(XMAX-XMIN)/N

WRITE(*,*)’Ratio k/h^2 :’

READ(*,*)ALMBDA HT=HX*HX*ALMBDA I=0

X=XMIN

DO 100 J=0,N

U(J,I)=AINIT0(X) X=X+HX

100 CONTINUE

WRITE(*,*)’Push c on the graphic window to continue.’

WRITE(*,*)’Push q there to quit.’

CALL INIT(IXMIN,IYMIN,IXMAX,IYMAX) CALL DRAW(U(0,I),N,HX)

IF (KEY().EQ.0) STOP 150 I1=I; I=1-I

U(0,I)=0

DO 200 J=1,N-1

U(J,I)=(1-2*ALMBDA)*U(J,I1)+ALMBDA*(U(J+1,I1)+U(J-1,I1)) 200 CONTINUE

U(N,I)=0

CALL DRAW(U(0,I),N,HX)

IF (KEY().EQ.1) GO TO 150

END

(6)

プログラ ミ ン グの注意点 5

全て の時間ステッ プの計算結果を 記録する 必要はない . 現在と 直前の2 時間ステッ プ分だけでよ い .

( 結果は , リ アルタ イ ムで描画する か , フ ァ イ ルに書き 出し て ゆく .) こ う いう と き は , 2 次元配列 U(0:N,0:1) を 回し て 使う と 効率的:

U(j,0) に直前の結果 = ⇒ U(j,1) に現在の結果 = ⇒ U(j,0) に次の結果 . ま と める と , U(j,k) = ⇒ U(j,1-k) と 常に書け , k = ⇒ 1-k で交替する .

配列の参照渡し

CALL DRAW(U(0,1),...) の最初の引数は , 2 次元配列 U の中間アド レ スを 渡し て おり , サブルーチン の方では , そこ から 先

U(0,1),U(1,1),U(2,1),...,U(N,1)

を 通常の1 次元配列と し て 宣言し 取り 扱う こ と ができ る . 初期値の設定

FORTRAN では , 変数や配列の初期値を DATA 文で与え る こ と ができ る . ( コ ン パイ ル時に値がセッ ト さ れる .)

し かし , COMMON 宣言さ れた変数や配列の初期値設定は ,

BLOCK DATA 文と いう それ専用の副プロ グラ ムて 行わねばなら ない . こ の際 , 変数や配列は , 名前付き COMMON BLOCK と いう も のにま と め ,

以下の COMMON 文では必ずこ の名前を 添付する .

(7)

熱方程式の導出 ( 空間3 次元の場合 ) 6 熱伝導の法則:

熱は温度の高い方から 低い方へ流れる .

流れる 量は温度勾配に比例する ( 比例定数が熱伝導率 ) . 熱量の保存則:

物質中のある 部分領域におけ る 時間当たり の熱量の変化は,

その時間内にこ の領域の境界から 流れ込んだ熱量の総和に等し い.

以上を 微小部分領域 ∆V に適用し た等式を 書く と , 体積比熱を c と し て Z Z Z

∆V

{u(t + ∆t, x) − u(t, x)}cdV = k Z Z

∂∆V

∇u · ndS · ∆t

· = · = (Gauss の発散定理 )

c ∂u

∂t ∆t∆V k

Z Z Z

∆V

∆udV = · · k∆u∆V 故に ∆t, ∆V → 0 と し て

∂u

∂t = ν∆u (ν = k c ).

※ ∇u := ∂u

∂x , ∂u

∂y , ∂u

∂z

( 勾配演算子 )

※ Gauss の発散定理は

Z Z Z

∂D

f · ndS = Z Z Z

D

divf dV

dS n

u

V

こ こ に, f = (f

1

, f

2

, f

3

) に対し , divf = ∂f

1

∂x + ∂f

2

∂y + ∂f

3

∂z

(8)

熱方程式の差分解法 ( 空間2 次元の場合 ) (numa-2.f) 7

簡単のため , ν = 1 と し , 考え て いる 領域は長方形 [a

0

, a

1

] × [b

0

, b

1

] と する . 時間微分は , メ ッ シュ 幅を h

t

と 書く と き ,

∂u

∂t = u(x, y, t + h

t

) − u(x, y, t) h

t

で近似する .

空間微分は , メ ッ シュ 幅を h

x

= (a

1

− a

0

)/M , h

y

= (b

1

− b

0

)/N と 置けば ,

∆u := ∂

2

u

∂x

2

+ ∂

2

u

∂y

2

= u(x + h

x

, y, t) + u(x − h

x

, y, t) − 2u(x, y, t) h

2x

+ u(x, y + h

y

, t) + u(x, y − h

y

, t) − 2u(x, y, t) h

2y

で差分化 .

よ っ て , 漸化式は略記号 u

ki,j

:= u(a

0

+ ih

x

, b

0

+ jh

y

, kh

t

) を 用いて , u

k+1i,j

=

1 − 2 h

t

h

2x

+ h

t

h

2y

) u

ki,j

+ h

t

h

2x

u

ki+1,j

+ h

t

h

2x

u

ki1,j

+ h

t

h

2y

u

ki,j+1

+ h

t

h

2y

u

ki,j1

空間1 次元の場合と 同様, こ の漸化式を 行列を 使わず直接プロ グラ ムする

のが最も 簡単 .

(9)

上の漸化式を 行列で表現する 場合 , ま ず問題と なる のは, 8 2 次元的な量 u

ki,j

を 1 次元ベク ト ルと し て ど う 表現する か . 一つの表現法 ( かなり 標準的 ) :

下図の左下の格子点から 右上の格子点ま で矢印の順にたど り , 1 本の縦ベク ト ルの成分と する ( 便宜上横に記す ) :

u

k1,1

, u

k2,1

, . . . , u

kM1,1

, u

k1,2

, u

k2,2

, . . . , u

kM1,1

, . . . , u

k1,N1

, u

k2,N1

, . . . , u

kM1,N1

1 2 3 4

5 6 7 8

12 11 9 10

未知ベク ト ルの第 i 成分の位置

する と , 先の漸化式は , 次のよ う な帯状行列によ る 積で実現さ れる :

(10)

u

k+1i,j

9

=

1 − 2 h

t

h

2x

+ h

t

h

2y

) u

ki,j

+ h

t

h

2x

u

ki+1,j

+ h

t

h

2x

u

ki1,j

+ h

t

h

2y

u

ki,j+1

+ h

t

h

2y

u

ki,j1

u

k+11

u

k+12

.. . u

k+1(M1)(N1)

< −−−−−−−−− M − 1 −−−−−−−−−− >

=

 1−

h22

x

h22

y

1

h2x

0 · · · 0

h12

y

0 · · · 0

1

h2x

1−

h22

x

h22

y

1

h2x

.. .

0 . .. . .. ... . .. 0

.. . . .. . .. . ..

h12

y

0 0

1

h2y

. .. ... ... ... .. .

0 0

.. . . .. . ..

h12

x

0 · · · 0 · · · 0

h12

y

0 · · · 0

h12

x

1−

h22

x

h22

y

u

k1

u

k2

.. . u

k(M1)(N1)

(11)

波動方程式の初期 - 境界値問題の差分解法 (numa-3.f) 10 空間1 次元の波動方程式は , 両端を 固定し た有限な長さ の 弦の振動の方程式と し て 既に導いた :

 

 

 

  1 c

2

2

u

∂t

2

= ∂

2

u

∂x

2

, 0 < t < T, a < x < b,

u(a, t) = u(b, t) = 0, 0 < t < T ( 斉次 Dirichlet 条件 ), u(x, 0) = ϕ(x), ∂u

∂t (x, 0) = ψ(x), a < x < b ( 初期条件 ) 波動方程式の差分近似

1 c

2

u(x, t + k) + u(x, t − k) − 2u(x, t)

k

2

= u(x + h, t) + u(x − h, t) − 2u(x, t) h

2

2 階中心差分 2 階中心差分

∴ u(x, t +k) = 2 1 − c

2

k

2

h

2

u(x, t)+ c

2

k

2

h

2

u(x +h, t)+ c

2

k

2

h

2

u(x −h, t)− u(x, t −k) 区間 [a, b] を N 等分し , h = b − a

N , λ = ck

h と 置いて ,

u

ji

:= u(a + hi, jk), i = 0, 1, 2, . . . , N, j = 0, 1, 2, . . . と 書けば , u

0i

= ϕ

i

:= ϕ(a + ih) ( 既知の値 ),

u

1i

= u

0i

+ k ∂u

∂t (a + ih, 0) = u

0i

+ kψ(a + ih) ( 既知の値 ), u

ji

= 2(1 − λ

2

)u

ji1

+ λ

2

u

ji+11

+ λ

2

u

ji11

− u

ji2

ただし , u

j0

, u

jN

= 0, j = 1, 2, . . .

こ の漸化式から , 波動方程式の初期 - 境界値問題は熱方程式と 同様に解ける . ただし 今度は3 ステッ プ分の記憶が必要:

U(i,j), j=0,1,2 を 使い回し ,

U(i,j mod 3) と U(i,j+1 mod 3) と から U(i,j+2 mod 3) を 計算し た後 ,

j = ⇒ j+1 mod 3 で更新する .

(12)

空間2 次元の場合: (numa-4.f) 11

波動方程式の導出は省略する が , 方程式の意味は膜の微小振動のモデルである . 最も 簡単な長方形の膜 D = [a

0

, a

1

] × [b

0

, b

1

] の場合, 初期 - 境界値問題は

 

 

 

  1 c

2

2

u

∂t

2

= ∂

2

u

∂x

2

+ ∂

2

u

∂y

2

, 0 < t < T, (x, y) ∈ D

u(x, y, t) = 0, 0 < t < T, (x, y) ∈ ∂D ( 斉次 Dirichlet 条件 ), u(x, y, 0) = ϕ(x, y), ∂u

∂t (x, y, 0) = ψ(x, y), (x, y) ∈ D ( 初期条件 ) 差分化は , 時間座標について は空間1 次元の波動方程式にな ら い , 空間座標について は , 空間2 次元の熱方程式に倣え ばよ い .

u

0i,j

= ϕ

i,j

:= ϕ(a

0

+ ih

x

, b

0

+ jh

y

) ( 既知の値 ), u

1i,j

= u

0i,j

+ h

t

∂u

∂t (a

0

+ ih

x

, b

0

+ jh

y

0) = u

0i,j

+ h

t

ψ(a

0

+ ih

x

, b

0

+ jh

y

) ( 既知の値 ),

u

ki,j

= 2 1 − c

2

h

2t

h

2x

− c

2

h

2t

h

2y

u

ki,j−1

+ c

2

h

2t

h

2x

u

ki+1,j−1

+ c

2

h

2t

h

2x

u

ki−11,j

+ c

2

h

2t

h

2y

u

ki,j+11

+ c

2

h

2t

h

2y

u

ki,j11

− u

ki,j2

ただし , u

k0,j

, u

kN,j

, u

ki,0

, u

ki,M

= 0, k = 1, 2, . . .

(13)

差分スキームの安定性条件 12 空間1 次元の熱方程式 ∂u

∂t = ∂

2

u

∂x

2

の差分解法のプロ グラ ムを 実行し て みる と λ := ν∆t

∆x

2

≤ 1

2 のと き (Courant-Friedrichs-Lewy の条件 , CFL 条件 ) 数値解は安定で, いつま でも 存在し 続ける ,

λ := ν∆t

∆x

2

> 1

2 のと き 不安定で, 近似解は時間の経過と と も に振動を 始め,

やがて 爆発する .

と いう 現象が見ら れる . こ の数学的正当化:

上の場合, 0 < λ ≤ 1/2 と いう こ と なので,

|u

ji

| = |(1 − 2λ)u

ji1

+ λu

ji+11

+ λu

ji11

|

≤ {(1 − 2λ) + λ + λ} max

0iN

|u

ji1

| = max

0iN

|u

ji1

| すなわち ,

0

max

iN

|u

ji

| ≤ sup

0iN

|u

ji1

|

こ れを , 数値解の最大値ノ ルムが単調非増加である と いう .

こ の不等式はある 意味で数値解の安定性を 保証し て いる .

( 少なく と も 無限に大き く なっ たり はし な い .)

(14)

差分スキームの安定性条件 ( 続き ) 13

逆に, λ > 1/2 のと き は, 簡単のため考察する 区間を [0, 1] と し て , 初期値が sin nπx = Im [e

1x

] のと き ,

後で一斉に虚部を 取れば同じ なので, 簡単のため複素数で計算する と u

0i

= e

1ih

,

u

1i

= (1 − 2λ)e

1ih

+ λe

1(i+1)h

+ λe

1(i1)h

= {1 − λ(2 − e

1h

− e

1h

)}e

1ih

= {1 − 2λ(1 − cos nπh)}e

1ih

= (1 − 4λ sin

2

nπh

2 )e

1ih

以下同様にし て ,

u

ki

= (1 − 4λ sin

2

nπh

2 )

k

e

1ih

と なる こ と が示せる . よ っ て , sin nπh

2 ∼ 1 なる n について は,

絶対値が 1 よ り 大き な因子の冪乗がかかる ので, 数値解は

ステッ プ数について 指数的に増大する . 従っ て 実質的に有限時間で爆発する . こ のこ と は微小定数 ε が掛かっ て いて も 同じ である .

更に, 漸化式が線型なので, 初期値にこ のよ う な加法因子が含ま れれば,

数値解にも 指数増大する 加法因子が含ま れ, やはり 爆発する .

(15)

差分スキームの安定性 ( おま け ) 14

全く 同様にし て , 空間1 次元の波動方程式 ∂

2

u

∂t

2

= ∂

2

u

∂x

2

の差分解について λ := c∆t

∆x ≤ 1 のと き , 数値解は安定で, いつま でも 存在し 続ける , λ := c∆t

∆x > 1 のと き 不安定で, 近似解は時間の経過と と も に振動を 始め,

やがて 爆発する .

と いう 現象が見ら れる . こ の数学的正当化は, 熱方程式の場合と 同様だが,

最大値ノ ルムの代わり に L

2

ノ ルムが必要なので, 少し 高級.

波動方程式の場合は, 上の安定性の条件は, 差分スキームが,

依存領域の情報を すべて 取り 込んでいる こ と と 解釈さ れ,

物理的にも 非常に自然である .

ど のよ う な差分スキームを 考え て も , こ の条件が満たさ れない限り , 波動方程式の妥当な解と は言え な い.

こ れに対し , 熱方程式の安定性の条件は, 差分スキームを 変え る と 不要になる , 有る 意味で人工的なも のである .

( ただし , k と h

2

が同じ 無限小のオーダーである べき こ と と いう のは , 物理的に自然な要請である . )

新し い差分スキームを 考え る だけ でな く , それによ る 数値解の安定性や

得ら れた解の正当性の研究を する のが, 偏微分方程式の数値解析である .

(16)

本日の講義内容の自習課題 15

1 numa-1.f およ び, numa-2.f を 実行し ,

熱方程式の初期 - 境界値問題の時間前進差分によ る 近似解の 安定性の条件を 数値的に検証し て みる .

[ λ と し て いろ いろ な値を 入力し , 差分解が荒れ始める 時間を 比較せよ . ま た , 不安定になっ たと き に生ずる 細かい振動の振幅は何で決ま る か 観察せよ . ]

2 λ = 0.5 と と っ たと き に , 解のグラ フ がま ず最初に正規分布の曲線に近付き , 次いで正弦曲線に近付く こ と を 観察する .

3 numa-3.f およ び, numa-4.f を 実行し , 波動方程式の

初期 - 境界値問題の時間中心差分によ る 近似解の安定性の条件を 数値的に検証し て みる .

4 熱の湧き 出し を 含む空間1 次元の熱方程式

 

 

∂u

∂t = ν ∂

2

u

∂x

2

+ (1 + x

2

)e

t

, 0 < t < T, −1 < x < 1,

u(−1, t) = u(1, t) = 0, 0 < t < T ( 斉次 Dirichlet 条件 ), u(x, 0) = 1 − x

2

, −1 < x < 1 ( 初期条件 )

は解析解 u = (1 − x

2

)e

t

を 持つ . こ れを 差分法によ り

numa-1.f, ま たは numa-1b.f を 修正し て 得ら れる 数値解と 比較せよ . ( 例年, e

t

がプロ グラ ムでき ない人がたく さ ん居る ので,

ぜひやっ て みま し ょ う .)

(17)

本日の範囲の試験予想問題 16

問題 1 空間1 次元熱方程式の初期値 - 境界値問題

∂u

∂t = ∂

2

u

∂x

2

, u(0, x) = ϕ(x), u(t, −1) = 0, u(t, 1) = 0 を 考え る . ただし ,

ϕ(x) =

 

 

0, −1 ≤ x < −0.5, 2x + 1, 0.5 ≤ x < 0,

−2x + 1, 0 ≤ x < 0.5, 0, 0.5 ≤ x ≤ 1 と する .

(1) 少し 時間が経っ たと き の解のグラ フ はど んな形になる か?

(2) 沢山時間が経っ たと き の解のグラ フ はど んな形になる か?

問題 2 上の問題を 差分法で解く 手順を 記せ . 更に, 区間 [−1, 1] の分割を 4 等分

と し て , 時間ステッ プを 2 だけ進めたと き の解を 記せ .

参照

関連したドキュメント

Yamamoto: “Numerical verification of solutions for nonlinear elliptic problems using L^{\infty} residual method Journal of Mathematical Analysis and Applications, vol.

[r]

[r]

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

、肩 かた 深 ふかさ を掛け合わせて、ある定数で 割り、積石数を算出する近似計算法が 使われるようになりました。この定数は船

このアプリケーションノートは、降圧スイッチングレギュレータ IC 回路に必要なインダクタの選択と値の計算について説明し

(3)使用済自動車又は解体自 動車の解体の方法(指定回収 物品及び鉛蓄電池等の回収 の方法を含む).

その 2-1(方法A) 原則の方法 A