熱伝導方程式を解く
2008 / 01 / 29 ( Tue ) 「拡散方程式」で紹介した次の熱伝導方程式を解いてみましょう。 du/dt = d2u/dx2 これを差分法で近似すると、 ( un+1|x-un|x)/dt = (un|x+dx -2un|x +un|x-dx ) / ( dx )2 のようになります。なぜこのようになるのかについての説明はここでは省略します。2階の偏導関数を差分近似すると、いま計算しようとするxでのun|x の値と、そのとなりのun|x+dx とun|x-dx にそれぞれ-2,1,1を掛けて足し合わせ、それを( dx )2で割るとだけおぼえていてください。さらに変形すれば、 un+1|x= un|x +dt (un|x+dx -2un|x +un|x-dx ) / ( dx )2 が得られます。 いま長さ10で温度10度の任意の物質を考えます。x=0を10度で冷やし、x=10を100度で熱すると、x=10から熱は内部に徐々に伝わってきます。dx=1、dt=0.5として、n=10まで計算した結果をグラフにしますと、 のようになりました。物質の内部に熱が伝わり、温度が徐々に上がっていく様子が示されています。もっと計算を繰り返すと、最終的にはx=0の10度と、x=10の100度を直線でつないだような温度分布になります。ところで、同じ計算を、dt=0.6で再度計算してみますと、 が得られました。温度が波打っていますが、現実的にこのようなことは起こりません。これは数値振動(Numerical Oscilation)と呼ばれる数値計算特有の解の振動です。非物理的な値ですのでおかしな計算をしていることになります。移流方程式のところでも紹介したように、線形安定性理論から、dt=0.5では安定、dt=0.6では不安定ということが説明できます。たった0.1の違いですが、数値計算の世界では決定的な差となって現れます。
|
| ホーム |
|