Python代码用高斯消元法解决下列方程组: 2x1-x2+3x3=1 4x1+2x2+5x3=4 x1+2x2 =7
时间: 2024-12-17 15:55:00 浏览: 7
SFF-8436 QSFP.pdf
为了用Python的高斯消元法(Gaussian Elimination)解这个线性方程组,我们可以首先将方程转换成增广矩阵的形式,然后逐步通过行变换将其化简到阶梯形式,最后回代求解。以下是步骤:
```python
import numpy as np
# 定义系数矩阵和常数项向量
A = np.array([[2, -1, 3], [4, 2, 5], [1, 2, 0]])
b = np.array([1, 4, 7])
# 高斯消元过程
def gauss_elimination(A, b):
# 转置系数矩阵便于处理
A_t = A.T
# 消元阶段
for i in range(len(A)):
# 对当前行进行最大非零元素所在列的倍数消元
max_row = abs(A_t[i]).argmax() if len(A_t[i]) else None
if max_row is not None and max_row != i:
A_t[[i, max_row]] = A_t[[max_row, i]]
b[[i, max_row]] = b[[max_row, i]]
# 如果当前行的第一个元素已经是0,则直接跳过
if A_t[i][0] == 0:
continue
# 将当前行除以第一元素,使其成为单位比例
factor = 1 / A_t[i][0]
A_t[i] *= factor
b[i] *= factor
# 回带求解
x = np.zeros_like(b)
for i in range(len(A) - 1, -1, -1):
x[i] = b[i] - np.dot(A_t[i][:i], x[:i])
return x
# 解方程组
solution = gauss_elimination(A, b)
solution.tolist() # 因为numpy数组默认是浮点型,需要转化为列表显示结果
#
阅读全文