python实现高斯(Gauss)迭代自动计算
输入系数矩阵mx、值矩阵mr、迭代次数n,即可得到答案。
本人在原博主的代码基础上优化了数据输出形式,原文链接:https://blog.csdn.net/cswfqxs_/article/details/84068660
# Gauss迭代法 输入系数矩阵mx、值矩阵mr、迭代次数n(以list模拟矩阵 行优先)
def Gauss(mx, mr, n=100):
if len(mx) == len(mr): # 若mx和mr长度相等则开始迭代 否则方程无解
x = [] # 迭代初值 初始化为单行全0矩阵
for i in range(len(mr)):
x.append([0])
count = 0 # 迭代次数计数
while count < n:
for i in range(len(x)):
nxi = mr[i][0]
for j in range(len(mx[i])):
if j != i:
nxi = nxi + (-mx[i][j]) * x[j][0]
nxi = nxi / mx[i][i]
x[i][0] = nxi
count = count + 1
print('第{}次迭代的值:{}'.format(count,x))
return x
else:
return False
# 调用 Gauss(mx,mr,n=100) 示例
mx = [[4, 1, 0], [0, 2, 1], [1, 0, 1]]
mr = [[4], [2], [2]]
print(Gauss(mx, mr, 5))
运算结果如下图: