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 undMGleitkommazahlen zurückgeben. Es darf keine NaNs zurückgeben, sonst kann die Anpassung fehlschlagen.Mmuss größer oder gleichNsein.- 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
Trueist.- infodictdict
ein Wörterbuch mit optionalen Ausgaben mit den Schlüsseln
nfevDie Anzahl der Funktionsaufrufe
fvecDie an der Ausgabe ausgewertete Funktion
fjacEine 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.
ipvtEin 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.
qtfDer Vektor (transpose(q) * fvec).
Nur zurückgegeben, wenn full_output
Trueist.- mesgstr
Eine Meldung, die Informationen über die Ursache des Fehlers gibt. Nur zurückgegeben, wenn full_output
Trueist.- 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_squaresNeueres 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)