Question

J'ai rencontré ce problème lorsque je tente de résoudre une équation différentielle partielle.Voici mon code:

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]

Il est étrange que l'écart a montré dans le graphique atteint jusqu'à plus de 5*10^-7 autour de t=0.01, même s'il n' -3.88578*10^-16 lorsqu'elle est calculée par N[kkg[0.01] - kkk[0.01], 1], Je me demande comment cette erreur vient de sortir.

Par la manière, je pense qu'il est étrange que la sortie de N[kkg[0.01] - kkk[0.01], 1] a donc, nombre de décimales, j'ai réglé le de précision 1, à droite?

Était-ce utile?

La solution

À l'aide de Mathematica 7 la parcelle I get n'est pas de montrer un pic à 0.01:

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

Mathematica graphics

Il y est un pic à environ 0.00754:

kkk[0.00754] - kkg[0.00754] // N
{6.50604*10^-7}

Concernant N, il ne change pas la précision de la machine de précision des nombres, comme il le fait pour exacte ou arbitraires précision:

N[{1.23456789, Pi, 1.23456789`50}, 2]

Precision /@ %
{1.23457, 3.1, 1.2}

{MachinePrecision, 2., 2.}

Regarder SetPrecision si vous voulez forcer le (faux) une précision, et NumberForm si vous souhaitez imprimer un nombre dans un format spécifique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top