首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试着用NDSolve在Mathematica中解一个非常简单的热传导微分方程,但是我得到的解是非常奇怪的…

我试着用NDSolve在Mathematica中解一个非常简单的热传导微分方程,但是我得到的解是非常奇怪的…
EN

Stack Overflow用户
提问于 2012-07-28 21:14:34
回答 2查看 993关注 0票数 0

这是一个非常简单的一维固相热传导微分方程,这是我的代码:

代码语言:javascript
复制
 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!这太荒谬了,这违反了热力学第二定律…这个错误是怎么出来的?我该怎么纠正它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-26 21:00:56

这个问题已经被here解决了,

我应该承认,在我发布这个问题的时候,我还没有抓住这个问题的本质…

票数 0
EN

Stack Overflow用户

发布于 2012-07-29 04:45:39

我将只讨论数值方面的内容。首先,缩放时间和空间,使您的方程以无量纲单位表示为$\partial_t f=\partial_{x,x}f$。然后,举例来说,

代码语言:javascript
复制
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"}]

所以热只是向内扩散(注意,我改变了边界和初始条件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11701327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档