triangular_solve

paddle.linalg. triangular_solve ( x, y, upper=True, transpose=False, unitriangular=False, name=None ) [source]

Computes the solution of a system of equations with a triangular coefficient. x is coefficient matrix y is multiple right-hand sides of equations.

Input x and y is 2D matrices or batches of 2D matrices. If the inputs are batches, the outputs is also batches.

Equations can be described as:

\[x * Out = y\]

Solution of Equations is:

\[Out = x ^ {-1} * y\]
Parameters
  • x (Tensor) – The input triangular coefficient matrix. Its shape should be [*, M, M], where * is zero or more batch dimensions. Its data type should be float32, float64, complex64, complex128.

  • y (Tensor) – Multiple right-hand sides of system of equations. Its shape should be [*, M, K], where * is zero or more batch dimensions. Its data type should be float32, float64, complex64, complex128.

  • upper (bool, optional) – Whether to solve the upper-triangular system of equations (default) or the lower-triangular system of equations. Default: True.

  • transpose (bool, optional) – whether x should be transposed before calculation. Default: False.

  • unitriangular (bool, optional) – whether x is unit triangular. If True, the diagonal elements of x are assumed to be 1 and not referenced from x . Default: False.

  • name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name.

Returns

The solution of the system of equations. Its data type should be the same as that of x.

Return type

Tensor

Examples

>>> # a square system of linear equations:
>>> # x1 +   x2  +   x3 = 0
>>> #      2*x2  +   x3 = -9
>>> #               -x3 = 5

>>> import paddle
>>> x = paddle.to_tensor([[1, 1, 1],
...                       [0, 2, 1],
...                       [0, 0,-1]], dtype="float64")
>>> y = paddle.to_tensor([[0], [-9], [5]], dtype="float64")
>>> out = paddle.linalg.triangular_solve(x, y, upper=True)

>>> print(out)
Tensor(shape=[3, 1], dtype=float64, place=Place(cpu), stop_gradient=True,
[[ 7.],
 [-2.],
 [-5.]])