scipy.optimize.

leastsq#

scipy.optimize.leastsq(func, x0, args=(), Dfun=None, full_output=False, col_deriv=False, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=None, factor=100, diag=None)[Quelle]#

Minimiert die Summe der Quadrate eines Gleichungssystems.

x = arg min(sum(func(y)**2,axis=0))
         y
Parameter:
funccallable

sollte mindestens ein (möglicherweise eine Vektor der Länge N) Argument erhalten und M Gleitkommazahlen zurückgeben. Es darf keine NaNs zurückgeben, sonst kann die Anpassung fehlschlagen. M muss größer oder gleich N sein.

x0ndarray

Die Startschätzung für die Minimierung.

argstuple, optional

Alle zusätzlichen Argumente für func werden in diesem Tupel platziert.

Dfuncallable, optional

Eine Funktion oder Methode zur Berechnung der Jacobi-Matrix von func mit Ableitungen über die Zeilen. Wenn dies None ist, wird die Jacobi-Matrix geschätzt.

full_outputbool, optional

Wenn True, alle optionalen Ausgaben zurückgeben (nicht nur x und ier).

col_derivbool, optional

Wenn True, angeben, dass die Jacobi-Matrix-Funktion Ableitungen spaltenweise berechnet (schneller, da keine Transponierungsoperation erforderlich ist).

ftolfloat, optional

Gewünschter relativer Fehler in der Summe der Quadrate.

xtolfloat, optional

Gewünschter relativer Fehler in der ungefähren Lösung.

gtolfloat, optional

Gewünschte Orthogonalität zwischen dem Funktionsvektor und den Spalten der Jacobi-Matrix.

maxfevint, optional

Die maximale Anzahl von Funktionsaufrufen. Wenn Dfun angegeben ist, beträgt die Standardeinstellung für maxfev 100*(N+1), wobei N die Anzahl der Elemente in x0 ist, andernfalls ist die Standardeinstellung für maxfev 200*(N+1).

epsfcnfloat, optional

Eine Variable, die zur Bestimmung einer geeigneten Schrittlänge für die Vorwärts-Differenz-Approximation der Jacobi-Matrix (für Dfun=None) verwendet wird. Normalerweise ist die tatsächliche Schrittlänge sqrt(epsfcn)*x. Wenn epsfcn kleiner als die Maschinenpräzision ist, wird angenommen, dass die relativen Fehler in der Größenordnung der Maschinenpräzision liegen.

factorfloat, optional

Ein Parameter, der die anfängliche Schrittbegrenzung bestimmt (factor * || diag * x||). Sollte im Intervall (0.1, 100) liegen.

diagsequence, optional

N positive Einträge, die als Skalierungsfaktoren für die Variablen dienen.

Rückgabe:
xndarray

Die Lösung (oder das Ergebnis der letzten Iteration bei einem erfolglosen Aufruf).

cov_xndarray

Die Inverse der Hesse-Matrix. fjac und ipvt werden verwendet, um eine Schätzung der Hesse-Matrix zu konstruieren. Ein Wert von None zeigt eine singuläre Matrix an, was bedeutet, dass die Krümmung in den Parametern x numerisch flach ist. Um die Kovarianzmatrix der Parameter x zu erhalten, muss cov_x mit der Varianz der Residuen multipliziert werden – siehe curve_fit. Nur zurückgegeben, wenn full_output True ist.

infodictdict

ein Wörterbuch mit optionalen Ausgaben mit den Schlüsseln

nfev

Die Anzahl der Funktionsaufrufe

fvec

Die an der Ausgabe ausgewertete Funktion

fjac

Eine Permutation der R-Matrix einer QR-Zerlegung der endgültigen ungefähren Jacobi-Matrix, spaltenweise gespeichert. Zusammen mit ipvt kann die Kovarianz der Schätzung angenähert werden.

ipvt

Ein Integer-Array der Länge N, das eine Permutationsmatrix p definiert, so dass fjac*p = q*r, wobei r obere Dreiecksform mit Diagonalelementen von nicht zunehmender Größe hat. Spalte j von p ist Spalte ipvt(j) der Identitätsmatrix.

qtf

Der Vektor (transpose(q) * fvec).

Nur zurückgegeben, wenn full_output True ist.

mesgstr

Eine Meldung, die Informationen über die Ursache des Fehlers gibt. Nur zurückgegeben, wenn full_output True ist.

ierint

Ein Integer-Flag. Wenn es gleich 1, 2, 3 oder 4 ist, wurde die Lösung gefunden. Andernfalls wurde die Lösung nicht gefunden. In beiden Fällen gibt die optionale Ausgabevariable 'mesg' weitere Informationen.

Siehe auch

least_squares

Neueres Interface zur Lösung nichtlinearer Kleinste-Quadrate-Probleme mit Grenzen für die Variablen. Siehe insbesondere method='lm'.

Hinweise

„leastsq“ ist ein Wrapper um die Algorithmen lmdif und lmder von MINPACK.

cov_x ist eine Jacobi-Approximation der Hesse-Matrix der Kleinste-Quadrate-Zielfunktion. Diese Approximation geht davon aus, dass die Zielfunktion auf der Differenz zwischen beobachteten Zieldaten (ydata) und einer (nichtlinearen) Funktion der Parameter f(xdata, params) basiert.

func(params) = ydata - f(xdata, params)

so dass die Zielfunktion lautet

  min   sum((ydata - f(xdata, params))**2, axis=0)
params

Die Lösung x ist immer ein 1D-Array, unabhängig von der Form von x0 oder ob x0 ein Skalar ist.

Beispiele

>>> from scipy.optimize import leastsq
>>> def func(x):
...     return 2*(x-3)**2+1
>>> leastsq(func, 0)
(array([2.99999999]), 1)