電子書籍の厳選無料作品が豊富!

1次熱伝導方程式を差分法で解くという問題をC言語で書こうと言う問題を友達からまる投げされたのですが、解き方が全く分かりませんん;;
というのも差分法などの本を見てもよくわからない記号ばかりで。。。。
1次熱伝導方程式においで(∂u/∂t = κ(∂^2u/∂x^2))
初期条件として
u(x,0)=30
K=0.08
?tは指定されていませんでした(解くに何でも可っぽいです)
境界条件として
ux(L,t)=60℃ Lは1
u(0,t)=700℃

でも文章をよんでると有限の場合
棒の両端の温度が0に保たれているとき
u(0,t)=u(L,t)=0
棒の両端が断熱されているとき
ux(0,t)=ux(L,t)=0

今回の境界条件の場合はどうといていったらいいのか迷子になっているのですがどうかご教授してもらえたらありがたいです。

A 回答 (1件)

1)領域を確認します。


0≦x≦L
0≦t≦T(Tは時間ステップ×刻み数ですが100ステップぐらいを意識しておきます。)
2)図を描きます。
x方向を横軸に、t方向を縦軸にとります。
tを10に刻んで下から上に(時間軸)i=1,2,...11
xを10に刻んで左から右にj=1,2,.....11に番号を振ります。
t-x平面を格子で覆います。格子点(節点)はu(i,j)(i=1,11:j=1,11)で表します。
刻み幅をΔt、Δxで表します。
3)境界条件、初期条件を与えられている、x-t平面の境界を赤で塗り、境界値、初期値を記入します。
直ちに気付くことは(1,1)で境界条件と初期条件が整合していないことです。この不整合はすぐに累積して解は発散します。よってこのままでは解けません。
ここではこの不整合は解消されたと仮定して話を進めます。
4)1次熱伝導方程式
(∂u/∂t = κ(∂^2u/∂x^2))   (1)
を差分表示します。一回微分の時間軸は2点差分、2回微分のx軸は3点差分で表します。その結果
(u(i+1,j)-u(i,j))/Δt=κ(u(i,j-1)-2u(i,j)+u(i,j+1))/(Δx)^2  (2)
5)格子の真ん中付近で(2)で表される4点を太く書いて、じっくりと眺めます。
今やろうとしているのはコンピューターによる計算です。計算は式の右辺の各項が既知でそれらを加減乗除して計算結果を今まで未知だった左辺の値として入れてやります。つまり4点 u(i+1,j)、u(i,j)、u(i,j-1)、u(i,j+1)のどれが既知でどれが未知かということです。この4点のセットを動かしながら考えると結局
u(i+1,j)が未知、u(i,j)、u(i,j-1)、u(i,j+1)が既知になることが解ります。従って
u(i+1,j)=u(i,j)+(κΔt/(Δx)^2)(u(i,j-1)-2u(i,j)+u(i,j+1)) (3)
が計算式です。
t=0、x=0から右方向にX=L(j=11)まで動かし、次にt=Δt(i=2)の線上を左から右に動かしてu(i+1,j)の値を次々に求めていきます。

プログラムは2重のループの計算になるでしょう。
何回も試行錯誤するkとになると思います。

うまく行ったらメッシュを細かくして精度を上げてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!