作业帮 > 综合 > 作业

mathematica解偏微分方程数值解,用s=NDSolve[.],如何从s中提出数值解,或者这个s是什么?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 15:15:36
mathematica解偏微分方程数值解,用s=NDSolve[.],如何从s中提出数值解,或者这个s是什么?

我初次使用mathematica,我自己写了一个程序来解偏微分,为了验证程序的正确性,利用mathematica的NDSolve函数来解偏微分,将其结果和我的结果对比.程序如下:

其中有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}}]至于三维的,我不知道,我也不是搞微分方程的。