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]
グラフに表示される偏差が最大で 2000 以上に達するのは奇妙です 5*10^-7
その周り t=0.01
, 、それがただである間、 -3.88578*10^-16
で計算すると N[kkg[0.01] - kkk[0.01], 1]
, このエラーはどうして出てくるのでしょうか。
ちなみに、 の出力は奇妙に感じます N[kkg[0.01] - kkk[0.01], 1]
小数点以下の桁数が多すぎるので、精度を 1 に設定しましたね。
解決
使用する マセマティカ 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