scipy.linalg.solve_triangular#

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

Solve the equation a x = b for x, assuming a is a triangular matrix.

Parameters
a(M, M) array_like

A triangular matrix

b(M,) or (M, N) array_like

Right-hand side matrix in a x = b

lowerbool, optional

Use only data contained in the lower triangle of a. Default is to use upper triangle.

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

Type of system to solve:

trans

system

0 or ‘N’

a x = b

1 or ‘T’

a^T x = b

2 or ‘C’

a^H x = b

unit_diagonalbool, optional

If True, diagonal elements of a are assumed to be 1 and will not be referenced.

overwrite_bbool, optional

Allow overwriting data in b (may enhance performance)

check_finitebool, optional

Whether to check that the input matrices contain only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.

Returns
x(M,) or (M, N) ndarray

Solution to the system a x = b. Shape of return matches b.

Raises
LinAlgError

If a is singular

Notes

New in version 0.9.0.

Examples

Solve the lower triangular system a x = b, where:

     [3  0  0  0]       [4]
a =  [2  1  0  0]   b = [2]
     [1  0  1  0]       [4]
     [1  1  1  1]       [2]
>>> 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.])