|
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/ ----------------------------------------------------------------------- |