Nächste: , Vorige:   [Inhalt][Index]

62 mnewton


Nächste: , Vorige: , Nach oben: mnewton   [Inhalt][Index]

62.1 Einführung in mnewton

Das Paket mnewton implementiert das Newton-Verfahren mit der Funktion mnewton für das numerische Lösen nichtlinear Gleichungen in einer oder mehrerer Variablen. Die Funktion newton ist eine weitere Implementierung, die im Paket newton1 enthalten ist.


Vorige: , Nach oben: mnewton   [Inhalt][Index]

62.2 Funktionen und Variablen für mnewton

Optionsvariable: newtonepsilon

Standardwert: 1.0e-8

Genauigkeit mit der getestet wird, wie gut die Funktion mnewton sich der Lösung angenähert hat. Unterschreitet die Änderung der Approximation den Wert newtonepsilon, bricht der Algorithmus ab und gibt das Ergebnis zurück.

Optionsvariable: newtonmaxiter

Standardwert: 50

Obere Grenze für die Anzahl an Iterationen, falls die Funktion mnewton nicht oder sehr langsam konvergiert.

Funktion: mnewton (FuncList, VarList, GuessList)

Implementation des Newton-Verfahrens für das numerische Lösen von Gleichungen in mehreren Variablen. Das Argument FuncList ist die Liste der Gleichungen, für die eine numerische Lösung gesucht wird. Das Argument VarList ist eine Liste der Variablen und das Argument GuessList ist eine Liste mit den Startwerten des Newton-Verfahrens.

Die Lösungen werden als eine Liste zurückgegeben. Kann keine Lösung gefunden werden, ist die Rückgabe eine leere Liste [].

mnewton wird von den Funktionen newtonepsilon und newtonmaxiter kontrolliert.

Die Funktion wird mit dem Kommando load("mnewton") geladen. Siehe die Funktion newton für eine alternative Implementierung des Newton-Verfahrens.

Beispiele:

(%i1) load("mnewton")$

(%i2) mnewton([x1+3*log(x1)-x2^2, 2*x1^2-x1*x2-5*x1+1],
              [x1, x2], [5, 5]);
(%o2) [[x1 = 3.756834008012769, x2 = 2.779849592817897]]
(%i3) mnewton([2*a^a-5],[a],[1]);
(%o3)             [[a = 1.70927556786144]]
(%i4) mnewton([2*3^u-v/u-5, u+2^v-4], [u, v], [2, 2]);
(%o4) [[u = 1.066618389595407, v = 1.552564766841786]]

Die Optionsvariable newtonepsilon kontrolliert die Genauigkeit der Approximation. Weiterhin kontrolliert die Optionsvariable, ob die Berechnung mit Gleitkommazahlen in doppelter oder großer Genauigkeit durchgeführt wird.

(%i1) load("mnewton")$

(%i2) (fpprec : 25, newtonepsilon : bfloat(10^(-fpprec+5)))$

(%i3) mnewton([2*3^u-v/u-5, u+2^v-4], [u, v], [2, 2]);
(%o3) [[u = 1.066618389595406772591173b0, 
                               v = 1.552564766841786450100418b0]]
Funktion: newton (expr, x, x_0, eps)

Die Funktion newton gibt eine Näherungslösung der Gleichung expr = 0 zurück, die mit dem Newton-Verfahren berechnet wird. Der Ausdruck expr ist eine Funktion einer Variablen x. Der Anfangswert ist x = x_0. Der Algorithmus bricht ab, wenn abs(expr) < eps, wobei der Ausdruck expr für den aktuellen Näherungswert x ausgewertet wird.

newton erlaubt symbolische Variablen im Ausdruck expr, wenn der Ausdruck abs(expr) < eps zu true oder false ausgewertet werden kann. Daher ist es nicht notwendig, dass der Ausdruck expr zu einer Zahl ausgewertet werden kann.

Das Kommando load("newton1") lädt die Funktion.

Siehe auch die Funktionen realroots, allroots und find_root, um numerische Lösungen von Gleichungen zu finden. Das Paket mnewton enthält mit der Funktion mnewton eine weitere Implementation des Newton-Verfahrens.

Achtung: Auch mit load("newton") wird eine Funktion mit dem Namen newton geladen, die sich jedoch in ihrer Syntax von der hier beschriebenen Funktion unterscheidet und auch nicht dokumentiert ist.

Beispiele:

(%i1) load ("newton1");
(%o1) /usr/share/maxima/5.10.0cvs/share/numeric/newton1.mac
(%i2) newton (cos (u), u, 1, 1/100);
(%o2)                   1.570675277161251
(%i3) ev (cos (u), u = %);
(%o3)                 1.2104963335033528E-4
(%i4) assume (a > 0);
(%o4)                        [a > 0]
(%i5) newton (x^2 - a^2, x, a/2, a^2/100);
(%o5)                  1.00030487804878 a
(%i6) ev (x^2 - a^2, x = %);
                                           2
(%o6)                6.098490481853958E-4 a

Nächste: , Vorige:   [Inhalt][Index]