在使用Mathematica的评估和情节后,这种偏差如何出现?
-
11-12-2019 - |
题
当我尝试解决偏微分方程时,我遇到了这个问题。这是我的代码:
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
如果要以特定格式打印一个数字。
不隶属于 StackOverflow