anderson#
- scipy.optimize.anderson(F, xin, iter=None, alpha=None, w0=0.01, M=5, verbose=False, maxiter=None, f_tol=None, f_rtol=None, x_tol=None, x_rtol=None, tol_norm=None, line_search='armijo', callback=None, **kw)#
Findet eine Wurzel einer Funktion mittels (erweiterter) Anderson-Mischung.
Die Jacobi-Matrix wird für eine „beste“ Lösung im von den letzten M Vektoren aufgespannten Raum gebildet. Dadurch sind nur MxM-Matrixinversionen und MxN-Multiplikationen erforderlich. [Ey]
- Parameter:
- FFunktion(x) -> f
Funktion, deren Nullstelle gefunden werden soll; sollte ein Array-ähnliches Objekt entgegennehmen und zurückgeben.
- xinarray_like
Erster Schätzwert für die Lösung
- alphafloat, optional
Anfangsschätzung für die Jacobi-Matrix ist (-1/alpha).
- Mfloat, optional
Anzahl der zu speichernden vorherigen Vektoren. Standardwert ist 5.
- w0float, optional
Regularisierungsparameter für numerische Stabilität. Im Vergleich zu Eins sind gute Werte in der Größenordnung von 0.01.
- iterint, optional
Anzahl der durchzuführenden Iterationen. Wenn weggelassen (Standard), werden so viele Iterationen durchgeführt, wie zur Erfüllung der Toleranzen erforderlich sind.
- verbosebool, optional
Gibt bei jeder Iteration den Status auf stdout aus.
- maxiterint, optional
Maximale Anzahl von Iterationen. Wenn mehr benötigt werden, um die Konvergenz zu erreichen, wird
NoConvergenceausgelöst.- f_tolfloat, optional
Absolute Toleranz (in der Maximalnorm) für das Residuum. Wenn weggelassen, beträgt der Standardwert 6e-6.
- f_rtolfloat, optional
Relative Toleranz für das Residuum. Wenn weggelassen, wird sie nicht verwendet.
- x_tolfloat, optional
Absolute minimale Schrittweite, wie sie aus der Jacobi-Approximation bestimmt wird. Wenn die Schrittweite kleiner ist als dieser Wert, wird die Optimierung als erfolgreich beendet. Wenn weggelassen, wird sie nicht verwendet.
- x_rtolfloat, optional
Relative minimale Schrittweite. Wenn weggelassen, wird sie nicht verwendet.
- tol_normfunction(vector) -> scalar, optional
Norm, die zur Überprüfung der Konvergenz verwendet wird. Standardmäßig wird die Maximalnorm verwendet.
- line_search{None, ‘armijo’ (Standard), ‘wolfe’}, optional
Welche Art von Liniensuche zur Bestimmung der Schrittweite in der durch die Jacobi-Approximation gegebenen Richtung verwendet werden soll. Standardmäßig wird ‘armijo’ verwendet.
- callbackfunction, optional
Optionale Callback-Funktion. Sie wird bei jeder Iteration als
callback(x, f)aufgerufen, wobei x die aktuelle Lösung und f der entsprechende Rest ist.
- Rückgabe:
- solndarray
Ein Array (vom ähnlichen Array-Typ wie x0) mit der endgültigen Lösung.
- Löst aus:
- NoConvergence
Wenn keine Lösung gefunden wurde.
Siehe auch
rootSchnittstelle zu Wurzelfindungsalgorithmen für multivariate Funktionen. Siehe insbesondere
method='anderson'.
Referenzen
[Ey]Eyert, J. Comp. Phys., 124, 271 (1996).
Beispiele
Die folgenden Funktionen definieren ein System von nichtlinearen Gleichungen
>>> def fun(x): ... return [x[0] + 0.5 * (x[0] - x[1])**3 - 1.0, ... 0.5 * (x[1] - x[0])**3 + x[1]]
Eine Lösung kann wie folgt erzielt werden.
>>> from scipy import optimize >>> sol = optimize.anderson(fun, [0, 0]) >>> sol array([0.84116588, 0.15883789])