diagbroyden#
- scipy.optimize.diagbroyden(F, xin, iter=None, alpha=None, 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 Nullstelle einer Funktion mittels diagonal-approximierter Broydenscher Jacobi-Matrix.
Die Jacobi-Matrix wird aus vorherigen Iterationen abgeleitet, indem nur die Diagonale der Broydenschen Matrizen beibehalten wird.
Warnung
Dieser Algorithmus kann für spezifische Probleme nützlich sein, aber ob er funktioniert, hängt stark vom Problem ab.
- 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).
- 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 Algorithmen zur Nullstellensuche für multivariate Funktionen. Siehe insbesondere
method='diagbroyden'.
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.diagbroyden(fun, [0, 0]) >>> sol array([0.84116403, 0.15883384])