不要用linalg.solve()函数,用高斯约旦消元法
时间: 2024-02-24 12:55:40 浏览: 26
好的,可以使用高斯-约旦消元法来解决这个问题。具体实现方法如下:
```python
import numpy as np
# 输入方阵A和列矩阵b
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([[1], [2], [3]])
# 将方阵A和列矩阵b合并成增广矩阵Ab
Ab = np.hstack((A, b))
# 对增广矩阵Ab进行高斯-约旦消元,化为行最简形式
n, m = Ab.shape
for i in range(n):
# 如果Ab[i][i]为0,则交换当前行和下面行中Ab[i][i]不为0的行
if Ab[i][i] == 0:
for j in range(i+1, n):
if Ab[j][i] != 0:
Ab[[i,j]] = Ab[[j,i]]
break
# 将Ab[i][i]归一
Ab[i] = Ab[i] / Ab[i][i]
# 将非当前行的第i列元素变为0
for j in range(n):
if j != i:
Ab[j] = Ab[j] - Ab[j][i]*Ab[i]
# 提取未知量x的值
x = Ab[:, -1]
# 输出未知量x的值
print(x)
```
这段代码中,我们首先输入了一个方阵A和一个列矩阵b,然后将它们合并成增广矩阵Ab。接着对增广矩阵Ab进行高斯-约旦消元,将其化为行最简形式。最后从行最简形式的增广矩阵中提取出未知量x的值,输出x的值即可。