mathematica解偏微分方程数值解,用s=NDSolve[。。。],如何从s中提出数值解,或者这个s是什么?
我初次使用mathematica,我自己写了一个程序来解偏微分,为了验证程序的正确性,利用mathematica的NDSolve函数来解偏微分,将其结果和我的结果对比。程...
我初次使用mathematica,我自己写了一个程序来解偏微分,为了验证程序的正确性,利用mathematica的NDSolve函数来解偏微分,将其结果和我的结果对比。程序如下:
其中有S=NDSolve[。。。。]。(1)我想s就是得出的数值解,但是我怎么把每个值取出来呢,比如我想看到u(10,1,1)的值什么的,或者得到t=10时x行y列的值的矩阵。
(2)我想知道那个s到底是什么,是个数据结构还是啥东西? 展开
其中有S=NDSolve[。。。。]。(1)我想s就是得出的数值解,但是我怎么把每个值取出来呢,比如我想看到u(10,1,1)的值什么的,或者得到t=10时x行y列的值的矩阵。
(2)我想知道那个s到底是什么,是个数据结构还是啥东西? 展开
展开全部
(1) u(10,1,1) 的数值值,
(u /. s[[1]])[10, 1, 1]
t=10 时 x 行 y 列的值的矩阵,x 与 y 分别从 1 到 100 时的函数值,要想生成其他点上的数据矩阵,可以在帮助查看函数 Array 的用法。
Array[(u /. s[[1]])[10, #1, #2] &, {100, 100}]
(2) 那个 s 实际上是一个规则 Rule,u 和 微分方程数值解的规则,
{{u->InterpolatingFunction[{{0.,10.},{0.,100.},{0.,100.}},<>]}}
函数 InterpolatingFunction 和 Mathematica 中其他的函数没什么本质区别,可以用来画图什么的,下面这是 t=10 的图像。
Plot3D[(u /. s[[1]])[10, x, y], {x, 0, 100}, {y, 0, 100}]
追问
对于Array[(u /. s[[1]])[10, #1, #2] &, {100, 100}],如果我想打印x从0-100,y从0-100的值,应该怎么改,如果是三维的,即有x,y,z这时候s的结构会变吗,我如果想打印下来,或者打印到文件中,如何改这个语句?谢谢啦!
追答
帮助中不是都有介绍和用法吗,
Array[f,{n1,n2,...},{{a1,b1},{a2,b2},...}]
生成使用 ni 个从 ai 到 bi 的数值组成的列表.
Array[(u /. s[[1]])[10, #1, #2] &, {101, 101}, {{0, 100}, {0, 100}}]
至于三维的,我不知道,我也不是搞微分方程的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |