【问题标题】:Mathematica 2D Heat Equation AnimationMathematica 2D 热方程动画
【发布时间】:2010-12-03 04:54:31
【问题描述】:

我正在绘制二维的温度梯度图,但遇到了很多麻烦。我目前的方法是定义一个插值函数,然后尝试多次绘制它,然后为该图表设置动画。到目前为止,这是我所拥有的:

RT = 388.726919
R = 1
FUNC == NDSolve[{D[T[x, y, t], t] == 
RT*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]),

   T[x, y, 0] == 0,
   T[0, y, t] == R*t,
   T[9, y, t] == R*t,
   T[x, 0, t] == R*t,
   T[x, 9, t] == R*t},

  T, {x, 0, 9}, {y, 0, 9}, {t, 0, 6}]

所以前两个变量只是控制变化率。我正在求解的方程是基本的二维热方程,其中 dT/dt=a(d^2T/dx^2+d^2T/dy^2)。初始条件将所有内容设置为 0,然后将边缘定义为热变化的来源。现在它从 t=0 扫描到 t=6 的 9x9 块。

第二部分尝试为函数工作设置动画。

ListAnimate[
Table[
   DensityPlot[T[x, y, t] /. FUNC, {x, 0, 9}, {y, 0, 9}, Mesh -> 9]
, {t, 0, 6}]
]

不幸的是,这不起作用,我正疯狂地试图找出原因。我最初认为它与插值函数有关,但现在我对动画代码的工作也不太有信心。有人有什么想法吗?

【问题讨论】:

  • 尝试“FUNC =”而不是“FUNC ==”
  • 还是不行。图表只是同一图表的副本。

标签: animation wolfram-mathematica heatmap differential-equations


【解决方案1】:

快速检查一下:

RT = 1
R = 1
FUNC = NDSolve[{D[T[x, y, t], t] == 
     RT*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]), T[x, y, 0] == 0, 
    T[0, y, t] == R*t,
    T[9, y, t] == R*t,
    T[x, 0, t] == R*t,
    T[x, 9, t] == R*t}, T,
   {x, 0, 9}, {y, 0, 9}, {t, 0, 6}];
a = Table[
  Plot3D[T[x, y, t] /. FUNC, {x, 0, 9}, {y, 0, 9}, Mesh -> 15, 
   PlotRange -> {{0, 9}, {0, 9}, {-1, 10}}, 
   ColorFunction -> Function[{x, y, z}, Hue[.3 (1 - z)]]], {t, 0, 6}]
Export["c:\anim.gif", a]

PS:使用小写字母作为符号的第一个字符可以避免很多错误...

【讨论】:

  • -1:用于在 Export 中使用显式路径,从而表明您使用的是 Windows 机器。 (为漂亮的图片+1)
  • @Simon 我用于加载和保存信息的实际路径集在我的 std init 单元格中...为了清楚起见,我只是将 svGifPath 替换为“c:\whatever”:D
  • @belisarius 哦,标准初始化单元!听起来像是工具包问题的东西。我一直想设置一些东西,除了一些机器/操作系统相关的路径,你会做什么?
  • @Timo 我只是想隐藏我真的运行 Windows 的事实 :(
  • @belisarius 哦,别难过,我在 Windows、Linux 和 OS X 上运行 MMA,它们都运行良好。
【解决方案2】:

我支持 Mark -- 你的程序没有问题。问题是在t=0 之后你的函数没有发生任何有趣的事情:试着看看

ListAnimate[
 Table[Plot3D[T[x, y, t] /. FUNC, {x, 0, 9}, {y, 0, 9}, Mesh -> 9], {t, 0, 6}]]

如您所见,所发生的只是缩放,因此当DensityPlot 独立重新缩放每个帧时,它们最终看起来相同:)

【讨论】:

  • 这是我的想法。我在玩 ColorFunctionScaling->False 但我无法让它作为一个函数工作,所以我最终为每一帧设置了纯色。
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
相关资源
最近更新 更多