scipy.linalg.

solve_triangular#

scipy.linalg.solve_triangular(a, b, trans=0, lower=False, unit_diagonal=False, overwrite_b=False, check_finite=True)[Quelle]#

Löst die Gleichung a @ x = b für x, wobei a eine Dreiecksmatrix ist.

Die Dokumentation wurde unter der Annahme verfasst, dass die Array-Argumente bestimmte „Kern“-Formen haben. Array-Argumente dieser Funktion können jedoch zusätzliche „Batch“-Dimensionen vorangestellt haben. In diesem Fall wird das Array als Stapel von niedrigdimensionalen Schnitten behandelt; siehe Gestapelte lineare Operationen für Details.

Parameter:
a(M, M) array_like

Eine Dreiecksmatrix

b(M,) oder (M, N) array_like

Matrix der rechten Seite in a x = b

lowerbool, optional

Verwendet nur Daten aus dem unteren Dreieck von a. Standardmäßig wird das obere Dreieck verwendet.

trans{0, 1, 2, ‘N’, ‘T’, ‘C’}, optional

Typ des zu lösenden Systems

trans

system

0 oder ‘N’

a x = b

1 oder ‘T’

a^T x = b

2 oder ‘C’

a^H x = b

unit_diagonalbool, optional

Wenn True, werden die Diagonalelemente von a als 1 angenommen und nicht referenziert.

overwrite_bbool, optional

Erlaubt das Überschreiben von Daten in b (kann die Leistung verbessern)

check_finitebool, optional

Ob überprüft werden soll, ob die Eingabematrizen nur endliche Zahlen enthalten. Das Deaktivieren kann zu einer Leistungssteigerung führen, kann aber zu Problemen (Abstürzen, Nicht-Terminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.

Rückgabe:
x(M,) oder (M, N) ndarray

Lösung des Systems a x = b. Die Form der Rückgabe entspricht b.

Löst aus:
LinAlgError

Wenn a singulär ist

Hinweise

Hinzugefügt in Version 0.9.0.

Beispiele

Löst das untere Dreieckssystem a x = b, wobei

     [3  0  0  0]       [4]
a =  [2  1  0  0]   b = [2]
     [1  0  1  0]       [4]
     [1  1  1  1]       [2]
>>> import numpy as np
>>> from scipy.linalg import solve_triangular
>>> a = np.array([[3, 0, 0, 0], [2, 1, 0, 0], [1, 0, 1, 0], [1, 1, 1, 1]])
>>> b = np.array([4, 2, 4, 2])
>>> x = solve_triangular(a, b, lower=True)
>>> x
array([ 1.33333333, -0.66666667,  2.66666667, -1.33333333])
>>> a.dot(x)  # Check the result
array([ 4.,  2.,  4.,  2.])