• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:1次熱伝導方程式を差分法で解くという問題をC言語で書こうと言う問題を友)

1次熱伝導方程式を差分法で解く方法は?

このQ&Aのポイント
  • 友達から頼まれて1次熱伝導方程式を差分法で解く方法をC言語で書こうとしていますが、解き方がわかりません。
  • 差分法の解析に関する本を見ても理解できる記号が多くて困っています。
  • 特に境界条件の設定について迷っているので、どのように設定すればいいのか教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • spring135
  • ベストアンサー率44% (1487/3332)
回答No.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とになると思います。 うまく行ったらメッシュを細かくして精度を上げてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 熱伝導方程式の問題

    とてもわからない問題です。となたか詳しく教えてください。 長さLの一様な金属棒(両端の温度は常に0)において、 f(x)=x (0<x≦L/2) =L-x (L/2≦x<L) このとき、u(x,t)は、 (1).{(x,t):0<x<L, t≧0}上で連続 (2).u(0,t)=0, u(L,t)=0 (3).u(x,0)=f(x) 熱伝導方程式をみたすu(x,t)を求めよ。 また、t→∞のときの温度分布は?

  • 熱伝導方程式

    長さLの一様な金属棒(両端の温度は常に0)において、 f(x)=x (0<x<L/2) =L-x (L/2<x<L) このとき、u(x,t)は、 (1).{(x,t):0<x<L, t>0}上で連続 (2).u(0,t)=0, u(L,t)=0 (3).u(x,0)=f(x) 熱伝導方程式をみたすu(x,t)を求めよ。 また、t→∞のときの温度分布は?

  • 1次元熱伝導方程式を差分法で解く

    長さL、断面積Aの棒で、 初期温度0度、一端は0度固定でもう一端に熱量Qを与えます。 この時の熱伝導方程式を差分法で解くプログラムを作りたいです。(c言語またはmathematica) 初期条件 t=0のとき温度T=0 と差分法の式(陽解法)はわかったのですが、 熱量Qが与えられたときの境界条件が分からずに困っています。 画像はシミュレーションソフトの結果で、熱量Qを与えた面の温度変化です。 ある時刻で定常状態になることがわかりました。 プログラムの計算結果も同じようになるはずなのですが、どうしたらそうなるのか分からない状態です。 どのようなプログラムを組めばよいでしょうか? プログラムと熱伝導については初心者ですので勉強不足な点も多々あると思いますが、しっかり理解したいと思っております。 教えていただけたら幸いです。よろしくお願いいたします。

  • 断面積の違う熱伝導方程式

    長さL、断面積S(x)の棒での熱伝導方程式の解が知りたいです。 偏微分の形で構いません。 どの教科書を見ても面積が一定で分かりません。 お願いします!! もし境界条件が必要なら、 T(0,x)=a T(t,L)=a T(t,0)=bt+a でといていただけるとめちゃめちゃありがたいです。

  • 1次元熱伝導方程式を差分法で解く

    モデルは長さL、断面積Aの直方体で 初期温度0度、一端は0度固定でもう一端に熱量Qを与えます。 この熱伝導方程式を差分法(陽解法)で解くプログラム(c言語またはwolfram)を作りたいのですが、上手くいかなくて困っています。 初期条件はT(i,0)=0 境界条件はT(n,j)=0 ←0度固定 T(1,j)=Q*dt/(m*c*dx*A) 差分法の式 T[i][j+1]=T[i][j]+0.5*(T[i+1][j]+T[i-1][j]-2*T[i][j]); としてfor文で計算させたのですが、いずれ温度が定常状態になるはずが無限に上がり続けてしまいます。 どのようなプログラムを書けば正しく計算できるのでしょうか? 独学で教科書をみながらやっているため気軽に質問できる方が近くにいないためこちらで質問させて頂きました。 なにかアドバイス頂けたら幸いです。 よろしくお願いいたします。

  • この熱伝導方程式を教えて下さい

    棒があって、両端0というよくあるやつです。 よく見るのは棒の長さl、端を原点としてu(0,t)=u(l,t)=0の条件でフーリエ級数を使って解くやつです。 ただ、ここでは棒の長さが2lで原点が真ん中として少しひねってあるんです。 困っています。お願いいたします。

  • 差分法

    単振動の運動方程式 x"+x=0 を差分法で解こうと思っています。 おそらく差分方程式は、 (x[n+1]-2x[n]+u[n-1])/dt^2=u[n] で良いと思われるのですが(違ってたら指摘してください)、初期条件 x(t=0)=aとx'(t=0)=b の与え方が良く分かりません。 また、sin(ωt)の強制振動を与えたときの差分方程式はどのようになるのでしょうか? よろしくお願いします。

  • 波動方程式の差分法による境界条件

    波動方程式(ρ*∂^2u/∂t^2=T*∂u^2/∂x^2)を差分法で、境界条件をx=0とx=Lで自由条件(T*∂u/∂x=0)とした場合を考えています。 上の波動方程式を差分化すると、 (u[n+1][j]-2*u[n][j]+u[n-1][j])/(dt^2)=(u[n][j+1]-2*u[n][j]+u[n][j-1])/(dx^2) の形になると思います。(T/ρ=1.0とし、nは時間、jは距離の格子点として考えています) 初期条件は適当な形状を与えます。 両端を固定条件(u[n][0]=0,u[n][xp]=0,)とした場合はうまく解を得ることが出来ました。(xpはx=Lでの格子点) 問題は自由条件(T*∂u/∂x=0)すなわち、 T*(u[n][1]-u[n][0])/dx=0、T*(u[n][xp+1]-u[n][xp])/dx=0 となる場合、これをどのように使用したらよいのでしょうか? または根本的に考え方が間違っているのでしょうか? 本当に困ってます。よろしくお願いいたします。 内容が不十分の場合は補足要求お願いします。

  • 熱伝導方程式を差分法で解くプログラム

    前回熱伝導方程式の差分法の解き方について質問させて頂いたものです。 https://sp.okwave.jp/qa/q9363032.html 回答ありがとうございました。おかげさまで差分法で解くプログラムを書くことができました。 書けたのは良いのですが、間違っている可能性が大きいです。 私の考えでは、安定性条件を満たしていれば dt,dxを小さくすればするほど、収束温度は変わらず計算精度が高くなっていくと思ったのですが、 私の書いたプログラムではdxdtの値を変えると収束温度まで変わってしまいます。 プログラムに関しても初心者なので説明が難しいのですが、やはり収束温度が値によって変わるということはプログラムがどこか間違っているということでしょうか。 度々すみませんが、回答いただけるとありがたいです。よろしくお願いいたします。

  • 熱伝導方程式の解

    1次元熱伝導方程式の解についての質問です。 長さlの棒の全体が温度がaである状態から、時間t=0で 片端x=0を温度bの熱浴に接触させたときの 時間tに対する各点xでの温度を求めたいのですが、 解法がわかりません。 よろしくお願い致します。

黒い線が出る理由と対処方法
このQ&Aのポイント
  • 印刷時は発生しないが、コピーすると黒い線が出て困っています。読み取り部を拭いても改善されません。
  • Windows10で使用しており、無線LANで接続しています。
  • 関連するソフトやアプリはありませんが、電話回線はISDNを使用しています。
回答を見る