计算方法 | 高斯消去法解线性方程组

过程很简单,代码实现有点烦,关键点就是矩阵对角线的数据,整就完事儿了。

 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]))

posted @ 2020-10-18 14:26  Mz1  阅读(143)  评论(0编辑  收藏  举报