Mathematica的NDSolve的插值函数里的具体数据如何提取保存?例如可不可以保存为一个Table或者List?
我要用ContourPlot指令画一个等高线图。但是函数无法用f(x,y)表示。f必须解数值微分方程才能解出来。我目前想法是:固定x值,再遍历y。大循环是遍历x值。每一次...
我要用ContourPlot指令画一个等高线图。但是函数无法用f(x,y)表示。f必须解数值微分方程才能解出来。我目前想法是:固定x值,再遍历y。大循环是遍历x值。每一次给定x,以y为未知数可用NDSolve解微分方程,得到一组数据(fi,yi)(i为不同的f和y值),保存NDSolve的结果。最后等所有循环结束。提取出来之前保存的数据,画出等高图。
可是现在不知道如何提取NDSOlve的值><~求求各位大神帮助! 展开
可是现在不知道如何提取NDSOlve的值><~求求各位大神帮助! 展开
1个回答
展开全部
实际上是可以用ContourPlot直接画NDSolve的结果的,举个例子吧:
s = NDSolve[{D[u[t, x], t] == D[u[t, x], x, x], u[0, x] == 0,
u[t, 0] == Sin[t], u[t, 5] == 0}, u, {t, 0, 10}, {x, 0, 5}]
DensityPlot[(u[t, x] /. s), {x, 0, 5}, {t, 0, 10}, PlotPoints -> 35,
ColorFunction -> Hue]
2步就搞定了。
另外,你如果真的想取出函数u[x,t]上面的点的话,这样做
data = Flatten[ Table[{x, t, (u[t, x] /. s)[[1]]}, {t, 0, 10, 0.1}, {x, 0, 5, 0.1}], 1];
得到的结果是{xi,yi,f[xi,yi]}的形式的数组
s = NDSolve[{D[u[t, x], t] == D[u[t, x], x, x], u[0, x] == 0,
u[t, 0] == Sin[t], u[t, 5] == 0}, u, {t, 0, 10}, {x, 0, 5}]
DensityPlot[(u[t, x] /. s), {x, 0, 5}, {t, 0, 10}, PlotPoints -> 35,
ColorFunction -> Hue]
2步就搞定了。
另外,你如果真的想取出函数u[x,t]上面的点的话,这样做
data = Flatten[ Table[{x, t, (u[t, x] /. s)[[1]]}, {t, 0, 10, 0.1}, {x, 0, 5, 0.1}], 1];
得到的结果是{xi,yi,f[xi,yi]}的形式的数组
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询