当我尝试解决偏微分方程时,我遇到了这个问题。这是我的代码:
dd = NDSolve[{D[tes[t, x], t] ==D[tes[t, x], x, x] + Exp[-1/(tes[t, x])],
   tes[t, 0] == 1, tes[t, -1] == 1, tes[0, x] == 1}, {tes[t, x]}, {t, 0, 5}, {x, -1, 0}]

f[t_, x_] = tes[t, x] /. dd
kkk = FunctionInterpolation[Integrate[Exp[-1.1/( Evaluate[f[t, x]])], {x, -1, 0}], {t, 0, 0.05}]
kkg[t_] = Integrate[Exp[-1.1/( Evaluate[f[t, x]])], {x, -1, 0}]
Plot[Evaluate[kkk[t]] - Evaluate[kkg[t]], {t, 0, 0.05}]
N[kkg[0.01] - kkk[0.01], 1]
.

奇怪的是,图中显示的偏差达到了5*10^-7周围的比生icetagcode,而这是由t=0.01计算时的生成icICetagcode,我想知道这个错误是如何出现的。

顺便说一下,我觉得世代古代古代码的输出有这么多小数点的奇怪,我已经将精度设置为1,右边?

有帮助吗?

解决方案

使用 mathematica 7我得到的绘图没有显示0.01:的峰值

Plot[kkk[t] - kkg[t], {t, 0, 0.05}, GridLines -> Automatic]
.

在大约0.00754的峰值:

kkk[0.00754] - kkg[0.00754] // N
.

{6.50604*10^-7}
.
关于N,它不会改变机器精度编号的精度,因为它为精确或任意精度的精度:
N[{1.23456789, Pi, 1.23456789`50}, 2]

Precision /@ %
.
{1.23457, 3.1, 1.2}

{MachinePrecision, 2., 2.}
.

查看 SetPrecision 如果要强制(假)精确度, NumberForm 如果要以特定格式打印一个数字。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top