ここで,tに関して中心差分を行っているのだが,これをやると,スキームの最初の段階を別のもので 計算しなければならなくなるので,ここは前進差分にしてしまおう.すなわち,
u(x, t+ ∆t)−u(x, t)
∆t
=−cu(x+ ∆x) +u(x, t) +u(x−∆x, t) 3
×u(x+ 2∆x, t)−2u(x+ ∆x, t) + 2u(x−∆x, t)−u(x−2∆x, t) 2∆x
−νu(x+ ∆x) +u(x, t) +u(x−∆x, t) 2(∆x)2
を考える.
これを差分方程式に書き換えると,
uk+1j =ukj −c ∆t
6∆x(ukj+1+ukj +ukj−1)(ukj+1−ukj−1)−ν ∆x
2(∆x)3(ukj+2−2ukj+1+ 2ukj−1−ukj−2) となる.これを用いてKdV方程式を数値的に解くことにしよう.もはや初期・境界値問題を定式化した 形では書かないが,Derichlet境界条件を課し,区間[0,1]で端の値を0にしておく.初期関数f(x)を与 えたときの時間的変化を見てみることにしよう.
いきなりソリトン解を与える関数で数値計算してもよいが,それでは面白みがない.まず,初期関数 としてsin波を与えてみよう.
一見画面がごちゃごちゃになって不安定な解なのかと思いきや,鋭くとがった数本の解が方崩れせずに 進行していく現象が確認できる.これは,Zabusky,Kruskalが数値的に発見した最初のもので,とがった 孤立波が実はソリトン解なのである..
そこで,sech波を初期関数として与えてみると,形崩れせず長時間生き残ることがわかる.ソリトン 解の有名な現象としては,2つのソリトン波の衝突である.これもこの差分スキームで∆t,∆x, c, νをう まく選んでやると,数値的に見ることができる.
2つのソリトンの衝突
波高の高いソリトンの方が速く進み,波高の低いソリトンに衝突.
衝突の間は形が変わるが,抜けてしまうと,形は保たれている.
∆t= 0.001, N = 100, c= 1, ν= 0.0001
s1 = 1, s2 = 15, s3 = 70, t1 = 16, t2 = 55, A= 1, B = 0.4
ここでは,区間の長さをs3で指定し,最初のソリトンの高さをA,その位置をs1, s2で指定し,2番目 のソリトンの高さをB,その位置をt1, t2で指定している.
ここでは,特に,cに比べてνが十分小さい場合にソリトン解が見られることに注意しておく.このよ うな解が本当にKdV方程式の厳密解であるのかどうか,それは問題であるが,実際にそうであることが 理論的に証明された.
5 微分方程式の有限要素法
6 微分方程式の有限要素法による数値解析 7 微分方程式の境界要素法
8 微分方程式の境界要素法による数値解析
bababababababababababababababababababababababab
ここはまだ書いていない.これらの方法は,数学的にはかなり理論的な難しさがあり,また,
適用される問題もかなり複雑な状況設定が可能になるため,難しい.まだ筆者はこの分野につい てはほとんど何も知らない.
9 付録
ここでは,本文中で述べ切れなかったこと,取り上げるには過度に数学的な内容と思わ れるものなどを述べる.ここで述べる内容は,数学的に重要であることはもちろんであるが,
数値解析的に重要ではないということではない.むしろ数値解析を適正かつ実用的に行うた めには,ここで述べるような微分方程式論を知っておく必要がある.そのことは注意してお きたい.