求解具有上三角矩阵或下三角矩阵的线性方程组。
用法
tf.linalg.triangular_solve(
matrix, rhs, lower=True, adjoint=False, name=None
)
参数
-
matrix
一个Tensor
。必须是以下类型之一:float64
,float32
,half
,complex64
,complex128
。形状是[..., M, M]
。 -
rhs
一个Tensor
。必须与matrix
具有相同的类型。形状是[..., M, N]
。 -
lower
可选的bool
。默认为True
。布尔值,指示矩阵中最内层的矩阵是下三角矩阵还是上三角矩阵。 -
adjoint
可选的bool
。默认为False
。布尔值,指示是否使用矩阵或其 (block-wise) 伴随求解。 -
name
操作的名称(可选)。
返回
-
一个
Tensor
。具有与矩阵相同的类型,形状为[..., M, N]
。
matrix
是形状为 [..., M, M]
的张量,其 inner-most 2 维形成方阵。如果lower
是True
,则假定每个inner-most 矩阵的严格上三角部分为零且未被访问。如果lower
是False
,则假定每个inner-most 矩阵的严格下三角部分为零且未被访问。 rhs
是一个形状为 [..., M, N]
的张量。
输出是一个形状为 [..., M, N]
的张量。如果 adjoint
是 True
则输出中最内层的矩阵满足矩阵方程 sum_k matrix[..., i, k] * output[..., k, j] = rhs[..., i, j]
。如果 adjoint
是 False
则输出中最内层的矩阵满足矩阵方程 sum_k adjoint(matrix[..., i, k]) * output[..., k, j] = rhs[..., i, j]
。
例子:
a = tf.constant([[3, 0, 0, 0],
[2, 1, 0, 0],
[1, 0, 1, 0],
[1, 1, 1, 1]], dtype=tf.float32)
b = tf.constant([[4], [2], [4], [2]], dtype=tf.float32)
x = tf.linalg.triangular_solve(a, b, lower=True)
x
<tf.Tensor:shape=(4, 1), dtype=float32, numpy=
array([[ 1.3333334 ],
[-0.66666675],
[ 2.6666665 ],
[-1.3333331 ]], dtype=float32)>
tf.matmul(a, x)
<tf.Tensor:shape=(4, 1), dtype=float32, numpy=
array([[4.],
[2.],
[4.],
[2.]], dtype=float32)>
相关用法
- Python tf.linalg.tridiagonal_solve用法及代码示例
- Python tf.linalg.tridiagonal_matmul用法及代码示例
- Python tf.linalg.trace用法及代码示例
- Python tf.linalg.tensor_diag_part用法及代码示例
- Python tf.linalg.tensor_diag用法及代码示例
- Python tf.linalg.LinearOperatorFullMatrix.matvec用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.solve用法及代码示例
- Python tf.linalg.LinearOperatorIdentity.solvevec用法及代码示例
- Python tf.linalg.LinearOperatorPermutation.solve用法及代码示例
- Python tf.linalg.band_part用法及代码示例
- Python tf.linalg.LinearOperatorKronecker.diag_part用法及代码示例
- Python tf.linalg.lu_matrix_inverse用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.matvec用法及代码示例
- Python tf.linalg.LinearOperatorBlockLowerTriangular.solvevec用法及代码示例
- Python tf.linalg.LinearOperatorLowerTriangular.matvec用法及代码示例
- Python tf.linalg.LinearOperatorCirculant2D.solve用法及代码示例
- Python tf.linalg.LinearOperatorCirculant3D.diag_part用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.solvevec用法及代码示例
- Python tf.linalg.LinearOperatorCirculant2D.assert_non_singular用法及代码示例
- Python tf.linalg.LinearOperatorPermutation.diag_part用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.linalg.triangular_solve。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。