2012-07-28 42 views
0

這是一個非常簡單的一維固相導熱微分方程,這裏是我的代碼:我試圖在Mathematica中用NDSolve解決一個非常簡單的熱傳導微分方程,但我得到的解決方案很奇怪...

a = NDSolve[{D[721.7013888888889` 0.009129691127380562` tes[t, x], 
    t] == 2.04988920646734`*^-6 D[tes[t, x], x, x], 
    tes[t, 0] == 298 + 200 t, tes[t, 0.01] == 298, 
    tes[0, x] == 298}, {tes[t, x]}, {t, 0, 0.005}, {x, 0, 0.01}] 
Plot3D[tes[t, x] /. a, {t, 0, 0.005}, {x, 0, 0.01}, PlotRange -> All] 
(Plot[(tes[t, x] /. a) /. t -> 0.0005, {x, 0, 0.01}, 
    PlotRange -> All]) 

運行後,您會看到:溫度(在等式中命名爲tes)低於298!這是荒謬的,這是違反熱力學的第二定律......這個錯誤是怎麼產生的?我該如何糾正它?

回答

0

此問題已得到解決here

我應該承認,我沒有趕上性質卻在我張貼了這個問題的時候......

0

我只處理這個的數值方面。首先,縮放時間和空間,以便無量綱單位中的公式變爲$ \ partial_t f = \ partial_ {x,x} f $。然後,例如,

a = NDSolve[{D[ tes[t, x], t] == D[tes[t, x], x, x], 
    tes[t, 0] \[Equal] 1, 
    tes[t, 1] \[Equal] 1, 
    tes[0, x] \[Equal] Cos[2 \[Pi]*x/2]^2}, 
    tes[t, x], 
    {t, 0, 1}, 
    {x, 0, 1} 
    ] 

Plot3D[tes[t, x] /. a, {t, 0, .2}, {x, 0, 1}, PlotRange -> All, 
AxesLabel \[Rule] {"t", "x"}] 

Mathematica graphics

所以加熱只是擴散向內(注意,我改變了邊界和初始條件)。

+0

呃......你什麼意思我應該做的是轉向(也許在這裏我應該說創造?)一個新的單位系統,使PDE的係數更簡單?看起來沒用......:a = NDSolve [{D [tes,t],x],t] == D [tes [t,x],x,x], tes [t,0] == 298 + [t,x] = {t,0.01/Sqrt [2.04988920646734 * * - 6]] 298, tes [0,x] == 298},{tes [t,x]},{t ,0, 0.005/6.588910766757118'},{x,0, 0.01/Sqrt [2.04988920646734' *^- 6]}] 繪製[(tes [t,x]/.a)/。 t - > 0.0005/6.588910766757118',{x,0, 0.01/Sqrt [2.04988920646734' *^- 6]},PlotRange - > All] – xzczd 2012-07-29 07:04:29

+0

您可能應該閱讀關於在進行數字化之前用無量綱變量表示事物。 – acl 2012-07-29 12:06:34

+0

呃......對不起,我的英文不太好,也許我只是誤解了你,但是......恐怕我不明白你的意思,實際上原文中的數字(如2.04988920646734' *^- 6)都是用SI單位表示的,所以......用無量綱數來表示數字的含義是什麼? – xzczd 2012-07-29 14:09:08

相關問題