fc2ブログ
熱伝導方程式を解く
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+dxun|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まで計算した結果をグラフにしますと、

温度分布(dt_0_5)

のようになりました。物質の内部に熱が伝わり、温度が徐々に上がっていく様子が示されています。もっと計算を繰り返すと、最終的にはx=0の10度と、x=10の100度を直線でつないだような温度分布になります。ところで、同じ計算を、dt=0.6で再度計算してみますと、

温度分布(dt_0_6)

が得られました。温度が波打っていますが、現実的にこのようなことは起こりません。これは数値振動(Numerical Oscilation)と呼ばれる数値計算特有の解の振動です。非物理的な値ですのでおかしな計算をしていることになります。移流方程式のところでも紹介したように、線形安定性理論から、dt=0.5では安定、dt=0.6では不安定ということが説明できます。たった0.1の違いですが、数値計算の世界では決定的な差となって現れます。

 

スポンサーサイト



テーマ:自然科学 - ジャンル:学問・文化・芸術

19:20:20 | 計算数理科学 | トラックバック(0) | コメント(0) | page top↑
| ホーム |