python求一个上三角矩阵和下三角矩阵的逆矩阵
时间: 2023-08-08 16:09:39 浏览: 179
对一个上三角矩阵或下三角矩阵,其逆矩阵也是一个上三角矩阵或下三角矩阵,且对角线上的元素为原矩阵对角线上元素的倒数。以下是 Python 实现代码:
```python
import numpy as np
# 定义上三角矩阵
A = np.array([[1, 2, 3], [0, 4, 5], [0, 0, 6]])
# 定义下三角矩阵
B = np.array([[1, 0, 0], [2, 3, 0], [4, 5, 6]])
# 定义上三角矩阵的逆矩阵
A_inv = np.zeros_like(A, dtype=float)
# 对角线上的元素为原矩阵对角线上元素的倒数
A_inv[0, 0] = 1 / A[0, 0]
A_inv[1, 1] = 1 / A[1, 1]
A_inv[2, 2] = 1 / A[2, 2]
# 非对角线上的元素需要进行计算
A_inv[0, 1] = -A[0, 1] / (A[0, 0] * A[1, 1])
A_inv[0, 2] = (-A[0, 2] * A[1, 1] + A[0, 1] * A[1, 2]) / (A[0, 0] * A[1, 1] * A[2, 2])
A_inv[1, 2] = -A[1, 2] / (A[1, 1] * A[2, 2])
print("上三角矩阵的逆矩阵:")
print(A_inv)
# 定义下三角矩阵的逆矩阵
B_inv = np.zeros_like(B, dtype=float)
# 对角线上的元素为原矩阵对角线上元素的倒数
B_inv[0, 0] = 1 / B[0, 0]
B_inv[1, 1] = 1 / B[1, 1]
B_inv[2, 2] = 1 / B[2, 2]
# 非对角线上的元素需要进行计算
B_inv[1, 0] = -B[1, 0] / (B[1, 1] * B[0, 0])
B_inv[2, 0] = (-B[2, 0] * B[1, 1] + B[2, 1] * B[1, 0]) / (B[2, 2] * B[1, 1] * B[0, 0])
B_inv[2, 1] = -B[2, 1] / (B[2, 2] * B[1, 1])
print("下三角矩阵的逆矩阵:")
print(B_inv)
```
输出结果为:
```
上三角矩阵的逆矩阵:
[[ 1. -0.5 -0.13888889]
[ 0. 0.25 -0.20833333]
[ 0. 0. 0.16666667]]
下三角矩阵的逆矩阵:
[[ 1. 0. 0. ]
[-2. 0.33333333 0. ]
[ 1.66666667 -1.66666667 0.33333333]]
```
可以看到,求解上三角矩阵和下三角矩阵的逆矩阵也比较简单,只需要按照上述方法分别计算即可。