zoukankan      html  css  js  c++  java
  • 计算方法 | 高斯消去法解线性方程组

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

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

  • 相关阅读:
    paper:Exploiting Query Reformulations for Web Search Result Diversification
    Z3
    IDA pro 类型参考
    Angr包含什么
    Gcc编译选项
    Angr
    一张图系列之PLT-GOT
    ELF头文件
    BROP_轮子
    Pwn_
  • 原文地址:https://www.cnblogs.com/Mz1-rc/p/13834994.html
Copyright © 2011-2022 走看看