solve_toeplitz#
- scipy.linalg.solve_toeplitz(c_or_cr, b, check_finite=True)[Quelle]#
Löst die Gleichung
T @ x = bnachx, wobeiTeine Toeplitz-Matrix ist, die durch c_or_cr definiert ist.Die Toeplitz-Matrix hat konstante Diagonalen, mit
cals erster Spalte undrals erster Zeile. Wennrnicht angegeben wird, wirdr == conjugate(c)angenommen.Warnung
Ab SciPy 1.17 werden mehrdimensionale Eingaben als Batch behandelt und nicht
raveled. Um das bestehende Verhalten beizubehalten,ravelen Sie die Argumente, bevor Sie sie ansolve_toeplitzübergeben.- Parameter:
- c_or_crarray_like oder Tupel aus (array_like, array_like)
Der Vektor
coder ein Tupel von Arrays (c,r). Wenn nicht angegeben, wirdr = conjugate(c)angenommen; in diesem Fall ist die Toeplitz-Matrix hermitesch, wenn c[0] reell ist. r[0] wird ignoriert; die erste Zeile der Toeplitz-Matrix ist[c[0], r[1:]].- b(M,) oder (M, K) array_like
Rechte Seite in
T x = b.- check_finitebool, optional
Ob überprüft werden soll, ob die Eingabematrizen nur endliche Zahlen enthalten. Deaktivierung kann zu Leistungsgewinnen führen, aber zu Problemen (vollständiger NaN-Ergebnis) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.
- Rückgabe:
- x(M,) oder (M, K) ndarray
Die Lösung des Systems
T @ x = b. Die Form der Rückgabe entspricht der Form von b.
Siehe auch
toeplitzToeplitz-Matrix
Hinweise
Die Lösung wird mittels Levinson-Durbin-Rekursion berechnet, die schneller ist als generische Kleinste-Quadrate-Methoden, aber numerisch weniger stabil sein kann.
Beispiele
Löst das Toeplitz-System
T @ x = b, wobei[ 1 -1 -2 -3] [1] T = [ 3 1 -1 -2] b = [2] [ 6 3 1 -1] [2] [10 6 3 1] [5]
Um die Toeplitz-Matrix zu spezifizieren, werden nur die erste Spalte und die erste Zeile benötigt.
>>> import numpy as np >>> c = np.array([1, 3, 6, 10]) # First column of T >>> r = np.array([1, -1, -2, -3]) # First row of T >>> b = np.array([1, 2, 2, 5])
>>> from scipy.linalg import solve_toeplitz, toeplitz >>> x = solve_toeplitz((c, r), b) >>> x array([ 1.66666667, -1. , -2.66666667, 2.33333333])
Überprüft das Ergebnis, indem die vollständige Toeplitz-Matrix erstellt und mit
xmultipliziert wird. Es sollte b ergeben.>>> T = toeplitz(c, r) >>> T.dot(x) array([ 1., 2., 2., 5.])