计算方法 | 高斯消去法解线性方程组
过程很简单,代码实现有点烦,关键点就是矩阵对角线的数据,整就完事儿了。
1 import math 2 3 matrix = eval(input("请输入线性方程组的增广矩阵:")) 4 # 测试数据[[2,2,3,3],[4,7,7,1],[-2,4,5,-7]] 5 width = len(matrix[0]) 6 height = len(matrix) 7 print ("这是一个{}*{}的矩阵,开始计算...".format(width,height)) 8 9 # 使用高斯消去法化为上三角阵 10 for i in range(height): 11 for j in range(i,height-1): 12 a = matrix[j+1][i] / matrix[i][i] 13 # 消元 14 for k in range(width): 15 matrix[j+1][k] -= a * matrix[i][k] 16 print(matrix) 17 18 # 输出上三角阵 19 print("上三角阵:") 20 print("[") 21 for i in range(height): 22 for j in range(width): 23 print("{:>6}".format(matrix[i][j]), end="") 24 print() 25 print("]") 26 27 # 回带求解 28 mat = matrix[:] 29 x = [0 for i in range(width-1)] 30 for i in range(height-1,-1,-1): 31 sum = 0 32 for k in range(i+1,width-1): 33 sum += mat[i][k] * x[k] 34 print("sum="+str(sum)) 35 print("i="+str(i)) 36 x[i] = (mat[i][width-1]-sum) / mat[i][i] 37 38 print("结果:") 39 for i in range(len(x)): 40 print("x{}={}".format(i,x[i]))
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/13834994.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com