早教吧 育儿知识 作业答案 考试题库 百科 知识分享

mathematica解偏微分方程数值解,用s=NDSolve[.],如何从s中提出数值解,或者这个s是什么?我初次使用mathematica,我自己写了一个程序来解偏微分,为了验证程序的正确性,利用mathematica的NDSolve函数来解偏

题目详情
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}]