列主元素高斯消去法Python
时间: 2023-08-27 12:10:44 浏览: 139
以下是一个 Python 实现的高斯消元法的代码,可以用于求解线性方程组的解。
```python
import numpy as np
def gauss_elimination(A, B):
n = len(B)
# 构造增广矩阵
AB = np.hstack([A, B.reshape(n, 1)])
# 高斯消元
for i in range(n):
# 找到主元素所在的行
max_row = i
for j in range(i+1, n):
if abs(AB[j, i]) > abs(AB[max_row, i]):
max_row = j
# 交换当前行和主元素所在行
AB[[i, max_row], :] = AB[[max_row, i], :]
# 消元
for j in range(i+1, n):
AB[j, :] -= AB[i, :] * AB[j, i] / AB[i, i]
# 回代求解
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = (AB[i, n] - AB[i, :i].dot(x[:i]) - AB[i, i+1:].dot(x[i+1:])) / AB[i, i]
return x
```
其中,输入参数 `A` 是系数矩阵,`B` 是常数向量,输出结果是线性方程组的解向量 `x`。
例如,如果要求解如下的线性方程组:
```
2x + 3y - 4z = 5
3x - 5y + 2z = -1
x + 2y - 3z = 3
```
可以用以下代码求解:
```python
A = np.array([[2, 3, -4], [3, -5, 2], [1, 2, -3]])
B = np.array([5, -1, 3])
x = gauss_elimination(A, B)
print(x) # 输出 [1. 1. 1.]
```
阅读全文