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到底是什么,是个数据结构还是啥东西?
展开
 我来答
iUkiyoE
2014-02-27 · TA获得超过643个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:394万
展开全部

(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}}]

至于三维的,我不知道,我也不是搞微分方程的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式