高斯列消元法 python
时间: 2023-09-22 17:03:16 浏览: 215
python实现高斯消元法求线性方程组的解
5星 · 资源好评率100%
高斯列消元法(Gaussian elimination)是一种线性方程组求解方法,通过将线性方程组转化为行阶梯形矩阵,从而可以方便地求解未知数的值。以下是一个使用Python实现高斯列消元法的示例:
```python
import numpy as np
def gaussian_elimination(A, b):
n = len(A)
# 将增广矩阵构造为扩展矩阵
Ab = np.column_stack((A, b))
for i in range(n):
# 选取主元,确保主元不为0
if Ab[i, i] == 0:
for j in range(i+1, n):
if Ab[j, i] != 0:
Ab[i], Ab[j] = Ab[j].copy(), Ab[i].copy()
break
# 将主元所在列下方的元素消为0
for j in range(i+1, n):
ratio = Ab[j, i] / Ab[i, i]
Ab[j] = Ab[j] - ratio * Ab[i]
# 回代求解未知数的值
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = (Ab[i, -1] - np.dot(Ab[i, :-1], x)) / Ab[i, i]
return x
# 测试
A = np.array([[3, 2, -1],
[2, -2, 4],
[-1, 0.5, -1]])
b = np.array([1, -2, 0])
x = gaussian_elimination(A, b)
print("方程组的解为:", x)
```
以上示例中,我们定义了一个名为`gaussian_elimination`的函数,该函数接受一个系数矩阵A和常数向量b,并返回线性方程组的解向量x。在函数中,我们首先将增广矩阵构造为扩展矩阵,然后使用高斯列消元的过程将增广矩阵转化为行阶梯形矩阵,最后通过回代求解未知数的值。最后,我们使用一个具体的线性方程组进行了测试,并输出了方程组的解。
请注意,以上仅为高斯列消元法在Python中的一种实现方式,实际上还有其他不同的实现方法和优化技巧,例如选择主元时的选取策略、部分主元消元法等。
阅读全文