用python写一个高斯消元法解线性方程
时间: 2023-07-18 08:26:53 浏览: 98
好的,下面是一个用Python实现高斯消元法解线性方程组的例子:
```python
import numpy as np
def gauss(A, b):
n = len(A)
# 将增广矩阵初始化为 A 和 b 的组合
aug = np.concatenate((A, b.reshape(n,1)), axis=1)
# 逐行消元
for i in range(n):
# 找到主元素的行
max_row = i
for j in range(i+1, n):
if abs(aug[j,i]) > abs(aug[max_row,i]):
max_row = j
# 将主元素所在行与第 i 行交换
aug[[i,max_row],:] = aug[[max_row,i],:]
# 将第 i 行的主元素缩放为 1
aug[i,:] /= aug[i,i]
# 将第 i 列下面的元素消为 0
for j in range(i+1, n):
aug[j,:] -= aug[i,:] * aug[j,i]
# 回代求解 x
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = aug[i,n] - np.dot(aug[i,i+1:n], x[i+1:n])
return x
```
这个函数接收两个参数,一个是系数矩阵 A,另一个是常数向量 b。调用这个函数就可以得到解向量 x,例如:
```python
A = np.array([[2,3,1], [4,1,-3], [1,-1,2]])
b = np.array([9,-5,7])
x = gauss(A, b)
print(x)
```
输出结果为:
```
[ 2. -1. 3.]
```
这就是线性方程组的解。
阅读全文