scipy.linalg.

solve_toeplitz#

scipy.linalg.solve_toeplitz(c_or_cr, b, check_finite=True)[Quelle]#

Löst die Gleichung T @ x = b nach x, wobei T eine Toeplitz-Matrix ist, die durch c_or_cr definiert ist.

Die Toeplitz-Matrix hat konstante Diagonalen, mit c als erster Spalte und r als erster Zeile. Wenn r nicht angegeben wird, wird r == 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 an solve_toeplitz übergeben.

Parameter:
c_or_crarray_like oder Tupel aus (array_like, array_like)

Der Vektor c oder ein Tupel von Arrays (c, r). Wenn nicht angegeben, wird r = 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

toeplitz

Toeplitz-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 x multipliziert wird. Es sollte b ergeben.

>>> T = toeplitz(c, r)
>>> T.dot(x)
array([ 1.,  2.,  2.,  5.])