我正在尝试用Mathematica中的NDSolve解决一个非常简单的热传导差分方程,但我得到的解决方案是非常奇怪的......
-
13-12-2019 - |
题
这是一个非常简单的一维固相热传导差分方程,这里是我的代码:
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!这是荒谬的,它是针对第二种热力学定律的......这个错误怎么出来了?如何纠正它?
解决方案 2
这个问题已经解决了这里,
我应该承认我还没有抓住本质,我在发布这个问题时...
其他提示
我只处理这个数字的数值方面。首先,规模的时间和空间使您的等式成为$ \ 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"}]
.
不隶属于 StackOverflow