高斯消去法


已知:Aϕ=bA\phi=bAϕ=b

向前消去:

第i行的系数减去第一行的系数乘以ai1a11\frac{a_{i1}}{a_{11}}a11​ai1​​,消去第i行的ϕ1\phi_1ϕ1​,重复操作,将A处理为一个上三角矩阵。伪代码如下:

for k = 1 to N-1
{for i = k + 1 to N  //从第二行开始计算{ratio = a_ik/a_kk{for j = k to N   // 从第k列开始a_ij = a_ij - ratio * a_kj}b_i = b_i - ratio * b_k}
}

向后回带

消去完毕后的矩阵方程可以通过回带的方式求解ϕi\phi_iϕi​,如第N个方程只有一个未知量ϕN\phi_NϕN​,可以直接计算得到:
ϕN=bNN−1aNNN−1\phi_N=\frac{b_N^{N-1}}{a_{NN}^{N-1}} ϕN​=aNNN−1​bNN−1​​
ϕN−1\phi_{N-1}ϕN−1​可以通过ϕN\phi_NϕN​的值计算得到:
ϕN−1=bN−1N−2−a(N−1)NN−2ϕNa(N−1)(N−1)N−2\phi_{N-1}=\frac{b_{N-1}^{N-2}-a_{(N-1)N}^{N-2}\phi_N}{a_{(N-1)(N-1)}^{N-2}} ϕN−1​=a(N−1)(N−1)N−2​bN−1N−2​−a(N−1)NN−2​ϕN​​
以此类推:
ϕi=bii−1−∑j=i+1Naiji−1ϕjaiii−1\phi_i = \frac{b_i^{i-1}-\sum_{j=i+1}^Na_{ij}^{i-1}\phi_j}{a_{ii}^{i-1}} ϕi​=aiii−1​bii−1​−∑j=i+1N​aiji−1​ϕj​​
伪代码如下:

phi_N = b_N / a_NN
for i = N-1 to 1
{term = 0for j = i+1 to N{term = term + a_ij * phi_j}phi_i = (b_i - term) / a_ii
}

最终的python实现:

import numpy as np
if __name__ == '__main__':A = [[2, -1, 3, 2],[3, -3, 3, 2],[3, -1, -1, 2],[3, -1, 3, -1]]B = [6, 5, 3, 4]A = np.array(A).astype(float)B = np.array(B).astype(float)for k in range(A.shape[0]-1): # 0-n-1行for i in range(k+1, A.shape[0]): # k+1 - n 行ratio = A[i][k] / A[k][k]for j in range(k, A.shape[1]): # k - n 列A[i][j] = A[i][j] - ratio * A[k][j]B[i] = B[i] - ratio * B[k]print(A)print(B.size)n = B.size-1phi = np.zeros(B.size)phi[n] = B[n] / A[n][n]for i in range(n-1, -1, -1):term = 0for j in range(i+1, n+1): # i+1 - B.sizeterm = term + A[i][j] * phi[j]phi[i] = (B[i]-term) / A[i][i]print(phi) # [1 1 1 1]

高斯消去法(python实现)相关推荐

  1. 高斯消去法python(源码)

    import numpy as npdef gauss(a, b):m, n = a.shape # 获取矩阵的行数和列数c = np.zeros(n) # 根据矩阵的行数构建一个一维0数组for i ...

  2. 高斯消元法、列主元高斯消去法、全主元高斯消去法Python实现

    求解有解的线性方程组: 代码实现: 高斯消元法: import numpy as np def Gauss_elimination(A): # 高斯消去法求解# 消元,化为上三角for k in ra ...

  3. 高斯消去法的python实现

    数值分析中,高斯消去法的原理和python代码 原理 python代码 原理 高斯消去法(Gauss)的原理如下: python代码 import numpy as np #首先确保python安装了 ...

  4. 列主元高斯消去法数学原理及超级纯手工Python实现

    一.引言 从高斯消去法,我们看到还是有缺陷,高斯消去法中,当对角元素=0时,消去无法进行,当对角元素很小的时候,导致其他它元素数量级严重增长和舍入误差扩散1,使结果不可靠.因此引出了列主元高斯消去法. ...

  5. 高斯消去法c++_高斯消去法的算法改进

    高斯消去法的过程如图所示 其中括号内的数字表示对该行处理的次数,比如第三列,该列中的第一个元素没有变化,第二个元素处理了一次,第三个元素处理了两次,处理的过程为 现将这个过程写成数组形式 A=A-B* ...

  6. 解线性方程组的python实现(1)——高斯主元消去法

    解线性方程组的python实现1--高斯主元消去法 1. 高斯(顺序)主元消去法 1.1 消去过程 1.2 回代过程求解 实现代码 2 列主元消去法 实现代码 3 高斯-约旦(Gauss-Jordan ...

  7. ANU COMP6670 Python学习笔记

    ANU COMP6670 Python学习笔记 目录 ANU COMP6670 Python学习笔记 Numpy Numpy矩阵运算总结 1. 创建矩阵对象 2. 元素获取 3. 矩阵运算 4. 高级 ...

  8. 如何短时间精通python_怎么自学并且精通Python?

    Python目前是入门者学习编程的首选语言,它不仅被应用于传统的编程任务,如Web应用程序设计:也被大量"被赶鸭子上架的程序员"--科学家.数据专员以及工程师所采用,他们编程并非出 ...

  9. 现代法谱估计(2)Levinson-Durbin递推算法MATLAB及Python实现

    原理 Levinson-Durbin递推算法是解Yule Walker方程的快速有效的算法,Yule Walker方程是p+1元线性方程组,它的一般解法是矩阵求逆或高斯消去法.通常都尽量避免使用矩阵求 ...

最新文章

  1. 分布式架构spring mvc +mybatis +shiro+ Activiti +Alibaba Druid
  2. DeepStream开发日志
  3. python多线程并发写入_Python多线程并发的简单测试
  4. HDOJ-1203 I NEED A OFFER!
  5. c++频繁读取数据会丢失_异常堆栈信息丢失?到底是怎么回事?
  6. java_interface的用法_Java注释@interface的用法
  7. GIT插件EGIT使用手册
  8. 【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测
  9. “双态IT”成就业务“互联网+”转型
  10. cameralink图像接收与发送代码
  11. 最大公约数简便算法_最大公约数算法
  12. 椭圆形印章核心算法浅析及使用GDI+绘制椭圆印章的方法
  13. 第十四章 字符编码(补充)
  14. 【Java】java修炼之道
  15. Value cannot be null. (Parameter ‘connectionString‘)
  16. 儒家思想的核心:仁、义、礼、智、信、忠、孝、悌、节、恕、勇、让
  17. Visual Studio 2022如何安装和使用MSDN
  18. 真假美猴王-Numpy数据与Python数组的区别与联系
  19. 从NT开发过程中看到的东西
  20. 无人机导航定位技术-复习

热门文章

  1. maven-svn-revision-number-plugin使用总结
  2. rancher2.0如何搭建,内详
  3. 分析一下快手sig3参数算法分析研究学习过程
  4. 产品经理国际认证NPDP有用吗?含金量咋样?
  5. html怎么建立css文件,怎么创建css文件
  6. Ubuntu20.04设置DNS后自动重置问题
  7. 在html文件中集成easy,easyapi 通过java注解或注释自动生成带页面的接口文档
  8. 【YOLOV5-6.x讲解】数据配置文件 data/XXX.yaml
  9. JavaDay05.练习4.体彩7位数摇奖+福彩大乐透摇奖
  10. XXL-JOB执行器注册成功但是在管理界面里不显示