不使用np.linalg.inv
时间: 2023-08-24 19:21:13 浏览: 84
numpy基础教程之np.linalg
除了使用numpy库中的linalg.inv()函数求解矩阵的逆之外,还可以使用高斯-约旦消元法来求解矩阵的逆。
具体实现如下:
```python
def inverse_matrix(A):
# 获取矩阵A的行数和列数
n, m = A.shape
# 构造增广矩阵
A_aug = np.hstack((A, np.eye(n)))
# 对增广矩阵进行高斯-约旦消元
for i in range(n):
# 如果A[i][i]为0,则交换当前行和下面行中A[i][i]不为0的行
if A_aug[i][i] == 0:
for j in range(i+1, n):
if A_aug[j][i] != 0:
A_aug[[i,j]] = A_aug[[j,i]]
break
# 将A[i][i]归一
A_aug[i] = A_aug[i] / A_aug[i][i]
# 将非当前行的第i列元素变为0
for j in range(n):
if j != i:
A_aug[j] = A_aug[j] - A_aug[j][i]*A_aug[i]
# 返回矩阵A的逆矩阵
A_inv = A_aug[:, n:]
return A_inv
```
其中,A为待求逆矩阵。函数返回的A_inv为A的逆矩阵。
阅读全文