Я пытаюсь решить очень простое дифференциальное уравнение теплопроводности с помощью NDSVEL в Mathematica, но решение, которое я получаю, довольно странно ...
-
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"}]
.
Так что тепло только диффундирует внутрь (обратите внимание, что изменил граничные и начальные условия).