NDSolve(Mathematica)中指定参数的数值解

NDSolve(Mathematica)中指定参数的数值解,math,wolfram-mathematica,bioinformatics,pde,Math,Wolfram Mathematica,Bioinformatics,Pde,我正在研究一个解偏微分方程的方法,确切地说是菲克第二扩散定律。 我能够使用NDSolve和Plot3D功能生成3D绘图。 使用的代码: NDSolve[{D[c[t, h], t] == 1*D[c[t, h], h, h], c[0, h] == Erfc[h/(2*81.2)], c[t, 0] == 1, c[t, 4000] == 3.08*^-18}, c, {t, 0, 900}, {h, 0,

我正在研究一个解偏微分方程的方法,确切地说是菲克第二扩散定律。 我能够使用NDSolve和Plot3D功能生成3D绘图。 使用的代码:

NDSolve[{D[c[t, h], t] == 1*D[c[t, h], h, h],
               c[0, h] == Erfc[h/(2*81.2)], 
               c[t, 0] == 1, 
            c[t, 4000] == 3.08*^-18}, c, {t, 0, 900}, {h, 0, 274}]
我不想用图形表示,而是想找到t=900时图形的数值点。
我想知道如何将t=900输入NDSolve(或其他函数),以便生成解的详细数值点。

首先尝试将解保存在变量中:

e = NDSolve[{D[c[t, h], t] == 1*D[c[t, h], h, h], c[0, h] == Erfc[h/(2*81.2)], c[t, 0] == 1, c[t, 4000] == 3.08*^-18}, c, {t, 0, 900}, {h, 0, 274}]
然后,我们可以计算所需变量的表达式:

Evaluate[c[900, 10] /. e]
(*{0.914014}*)
或者为了使其更通用,我们可以使用:

Manipulate[Evaluate[c[t, h] /. e], {t, 0, 900}, {h, 0, 274}]

更新: 考虑到我从以下评论中收到的信息;我们可以定义一个类似于q[t,h]的函数,它将为我们提供作为函数的解:

q[t_, h_] := Evaluate[c[t, h] /. e]
q[900, 10]
(*{0.914014}*)

更简洁一点,因为我们知道有一个解决方案定义
e=c/。First@NDSolve..
那么您可以直接使用e as:
e[900,10]->.91
非常感谢您,乔治!!这正是我想做的!但我似乎无法定义e=c/。First@NDSolve.. 我收到一条错误消息:First::normal:在First[NDSolve]中的位置1处应为非原子表达式。>>ReplaceAll::reps:{First[NDSolve]..}既不是替换规则列表,也不是有效的分派表,因此不能用于替换。>>如何修复此问题?您需要将整个表达式
First@NDsolve[公式、变量等]
太长,无法键入注释。。