Mathematica에서 Evaluate와 Plot을 사용한 후에 이러한 편차는 어떻게 나타나나요?
-
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
약 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