Skip to main content
`Ctrl`+`K`
scipy.sparse.linalg.

# spsolve_triangular

scipy.sparse.linalg.spsolve_triangular(A, b, lower=True, overwrite_A=False, overwrite_b=False, unit_diagonal=False)

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

  Parameters:
    A(M, M) sparse array or matrix

      A sparse square triangular matrix. Should be in CSR or CSC format.

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

      Right-hand side matrix in `A x = b`

    lowerbool, optional

      Whether A is a lower or upper triangular matrix. Default is lower triangular matrix.

    overwrite_Abool, optional

      Allow changing A. Enabling gives a performance gain. Default is False.

    overwrite_bbool, optional

      Allow overwriting data in b. Enabling gives a performance gain. Default is False. If overwrite_b is True, it should be ensured that b has an appropriate dtype to be able to store the result.

    unit_diagonalbool, optional

      If True, diagonal elements of a are assumed to be 1.

      Added in version 1.4.0.

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

      Solution to the system `A x = b`. Shape of return matches shape of b.

  Raises:
    LinAlgError

      If A is singular or not triangular.

    ValueError

      If shape of A or shape of b do not match the requirements.

  Notes

  Added in version 0.19.0.

  Examples

      >>> import numpy as np
      >>> from scipy.sparse import csc_array
      >>> from scipy.sparse.linalg import spsolve_triangular
      >>> A = csc_array([[3, 0, 0], [1, -1, 0], [2, 0, 1]], dtype=float)
      >>> B = np.array([[2, 0], [-1, 0], [2, 0]], dtype=float)
      >>> x = spsolve_triangular(A, B)
      >>> np.allclose(A.dot(x), B)
      True