Python实现高斯消元法解线性方程组(无函数版)
Python实现高斯消元法解线性方程组(无函数版)
本文介绍如何使用Python编写高斯消元法,用于求解线性方程组,代码简洁易懂,无需自定义函数。
代码实现
以下代码展示了如何使用Python(结合NumPy库)实现高斯消元法,并附带一个示例:pythonimport numpy as np
定义系数矩阵A和常数向量bA = np.array([[2, 1, -1], [-3, -1, 2], [-2, 1, 2]])b = np.array([8, -11, -3])
n = len(A)
高斯消元法for i in range(n): # 选取主元 max_row = i for j in range(i+1, n): if abs(A[j, i]) > abs(A[max_row, i]): max_row = j A[[i, max_row], :] = A[[max_row, i], :] b[[i, max_row]] = b[[max_row, i]] # 主元素归一化 A[i, :] /= A[i, i] b[i] /= A[i, i] # 消元 for j in range(i+1, n): factor = A[j, i] / A[i, i] A[j, :] -= factor * A[i, :] b[j] -= factor * b[i]
回代求解x = np.zeros(n)x[n-1] = b[n-1]for i in range(n-2, -1, -1): x[i] = b[i] - np.dot(A[i, i+1:n], x[i+1:n])
print('解x =', x)
代码解释
- 导入NumPy库: 代码首先导入NumPy库,用于高效的矩阵和向量运算。2. 定义系数矩阵和常数向量: 定义了线性方程组的系数矩阵
A和常数向量b。3. 高斯消元法: - 选取主元: 寻找每一列绝对值最大的元素作为主元,并进行行交换。 - 主元素归一化: 将主元所在的行除以主元自身,使其变为1。 - 消元: 将主元所在列的下方元素消为0。4. 回代求解: 从最后一行开始,逐行回代求解未知数。
结果
运行代码,得到线性方程组的解:
解x = [ 2. 3. -1.]
这意味着线性方程组的解为:x1 = 2,x2 = 3,x3 = -1。
注意事项
- 该代码假设输入的系数矩阵
A是一个方阵,并且方程组有唯一解。- 在实际应用中,建议添加错误处理和验证逻辑,以确保输入数据的准确性和可靠性。
原文地址: https://www.cveoy.top/t/topic/oZM 著作权归作者所有。请勿转载和采集!