Rudolf Gorenflo schreibt:
> ...
> als auch mit Mathematica 3.0 tritt bei langsam konvergenten
> Fixpunktiterationsverfahren Stellenverlust ein. Es ist klar, warum: bei
> langen Rechnungen geht Mathematica davon aus, dass die hinteren
> Dezimal-Stellen
> nach und nach unzuverlaessig werden, und druckt diese dann gar nicht
> mehr aus. Nun aber sind doch uebliche
> Iterationsverfahren (Banachsche Fixpunktiteration, Newton-Verfahren) zur
> Aufloesung von Gleichungen "selbstkorrigierend", man hat also
> eigentlich keinen Stellenverlust. Wie kann man diesen Stellenverlust
> vermeiden oder wenigstens an die unterdrueckten Stellen wieder
> herankommen?
> ...
In solchen Fällen können Sie mit einer festen Stellenzahl rechnen,
was Sie durch setzen von $MinPrecision und $MaxPrecision auf den
gewünschten Wert erreichen können (diese Einstellungen wirken sich
aber nicht auf Maschinenzahlen aus!). Also etwa so:
myprec = 200;
Block[{$MinPrecision = myprec, $MaxPrecision = myprec},
(* Ihre Iteration *)
]
oder Sie erhöhen vor Beginn der Iterationen die Genauigkeit des
Startwertes mittels
x = SetPrecision[x, myprec + extra]
genügend, um den Stellenverlust zu kompensieren. Code-Beispiele finden
Sie im Paket AddOns/ExtraPackages/ProgrammingInMathematica/Newton.m;
wie es geht, steht in meinem Buch "Programming in Mathematica, 3rd Ed.",
Abschnitt 7.2.4.
mit freundlichen Grüßen,
Roman Mäder
-----------------------------------------------------------------------
MathConsult Dr. R. Mäder Samstagernstrasse 58a
Mathematik- und Informatik-Beratung CH-8832 Wollerau
T: +41-1-687 4050 mailto:maeder@XXXXXXX.ch
F: +41-1-687 4054 http://www.mathconsult.ch/
-----------------------------------------------------------------------
|