目录

  • 算法流程
  • 代码
  • 测试

列主元Gauss消元法各大教科书都有,是很基础的解方程组方法。其主要思想是把方程组化为上三角方程组,然后通过回代的方法求得方程组的解。

Gauss的具体原理请参照数值分析的相关教课书这里不再赘述。


算法流程

输入:增广矩阵
输出:方程组的解,或方程组无解的提示

  1. 对于k = 1,2,…,n-1,执行步骤2到步骤5
  2. 选择第k列中最大的元素,将其所在行换到第k行。如果最大元素是0,则方程无解,程序退出
  3. 对于i = k + 1,…,n,计算
    l i k = a i k a k k a i j = a i j − l i k a k j b i = b i − l i k b k l_{ik} = \frac{a_{ik}}{a_{kk}}\\ \;\\ a_{ij}=a_{ij}-l_{ik} a_{kj}\\ \;\\ b_{i}=b_{i}-l_{ik} b_{k} lik​=akk​aik​​aij​=aij​−lik​akj​bi​=bi​−lik​bk​
  4. 回代
    x n = b n a n n x i = b i − ∑ j = i + 1 n a i j x j a i i x_n = \frac{b_n}{a_{nn}}\\ \;\\ x_i = \frac{b_i-\sum_{j=i+1}^na_{ij}x_j}{a_{ii}} xn​=ann​bn​​xi​=aii​bi​−∑j=i+1n​aij​xj​​
  5. 输出 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1​,x2​,...,xn​.

代码

def SolvingLinearEquations(AugmentedMatrix):col = AugmentedMatrix.shape[1] #增广矩阵列数#消元for i in range(col- 2):current_column  = AugmentedMatrix[i:,i] max_index = np.argmax(current_column) + i #寻找最大元if(AugmentedMatrix[max_index,i] == 0):print("无唯一解")returnAugmentedMatrix[[i,max_index],:] = AugmentedMatrix[[max_index,i],:] #交换l = AugmentedMatrix[i+1:,i] / AugmentedMatrix[i,i] #计算系数m =  np.tile(AugmentedMatrix[i,:],(l.shape[0],1)) * np.tile(l,(col,1)).T #计算消元时减去的矩阵AugmentedMatrix[i+1:,:] = AugmentedMatrix[i+1:,:] - m #消元if(AugmentedMatrix[col - 2,col - 2] == 0):print("无唯一解")return#代入x = np.zeros(col-1)for i in range(col-2,-1,-1):x[i] = (AugmentedMatrix[i,-1] - np.dot(AugmentedMatrix[i,:-1] , x.T)) / AugmentedMatrix[i,i]return x    

测试

以下面这道题做实验

#增广矩阵
A =  np.array([[0.0120,0.0100,0.1670,0.6781],[1.000,0.8334,5.910,12.10],[3200,1200,4.200,983.3]])
x = SolvingLinearEquations(A)

程序计算结果
[ 17.4605799 , -45.76154086, 5.54603862]

Python解线性方程组:列主元Gauss消元法相关推荐

  1. 列主元Gauss消元法求解线性方程组的MATLAB实现

    目录 顺序高斯消去法求解线性方程组的MATLAB实现 列主元Gauss消元法求解线性方程组的MATLAB实现 一.简介 MATLAB实现列主元Gauss消去法求解线性方程组,并与不列主元的Gauss消 ...

  2. Python解线性方程组的直接法(6)————求解三对角方程组的追赶法

    求解三对角方程组的追赶法 import numpy as npdef zuiganfa(A, d):n = A.shape[0]l = np.mat(np.zeros(n, dtype=float

  3. 用列主元高斯(Gauss)消元法求n阶线性方程组的解(python)

    (一)目的 通过设计.编制.调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解. (二)要求 用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解.用列主 ...

  4. Gauss消元法求解线性方程组的Matlab实现(列主元、全主元)

    最近数值分析有作业要求用Matlab实现Gauss消元法,记录在此. 问题如下: 1.列主元消去法 function []=Gauss_L(A,b) %列主元求解线性方程组 ZG= [A b]; %增 ...

  5. matlab用高斯消元法解线性方程组,用matlab利用高斯消元法求解线性方程组

    用matlab利用高斯消元法求解线性方程组Tag内容描述: 1.用C语言编写软件完成以下任务:请用高斯列主元消元法解下列线性方程组:方法说明(以4阶为例):第1步消元在增广矩阵(A,b)第一列中找到绝 ...

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

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

  7. Gauss 消元法求解线性方程组

    Gauss 消元法求解线性方程组 内容 消元法是将方程组中的一方程的未知数用含有另一未知数的代数式表示,并将其代入到另一方程中,这就消去了一未知数,得到一解:或将方程组中的一方程倍乘某个常数加到另外一 ...

  8. 解线性方程组的python实现(2)——矩阵三角分解法

    解线性方程组的python实现2--矩阵三角分解法 1. 矩阵三角分解法 实现代码 2. LU分解 2.1 基本步骤 2.2 LU分解的计算公式 2.3 LU分解的结果表示 实现代码 3. 选主元的L ...

  9. matlab约当消去法,Gauss消去法解线性方程组(Matlab)

    clear;clc; % Gauss消去法解线性方程组 A=[3 -5 6 4 -2 -3 8; 1 1 -9 15 1 -9 2; 2 -1 7 5 -1 6 11; -1 1 3 2 7 -1 - ...

最新文章

  1. Hibernate工作原理
  2. catia 如何提取cgr面_CATIA教程之创成式外形设计金元宝
  3. java中封装日期加时间_java日期处理简单封装
  4. android ------- TCP/IP
  5. 一日千里 云计算普及势不可挡
  6. go程序执行流程分析
  7. android 片段,android – 将片段添加到片段中(嵌套片段)
  8. mysql 数据备份方案_MySQL常见备份方案
  9. k8s集群部署项目_JAVA项目(部署镜像暴露应用)---K8S_Google工作笔记0062
  10. matlab 动画_MATLAB的动画制作和视频录制
  11. Plot双y轴绘制常用代码
  12. Filter过滤器及其作用
  13. 郑职院官计算机网络,2020年陕西省青年职业技能大赛计算机网络管理员决赛开幕式在汉中职院举行...
  14. 1.1Vue安装以及使用(node安装)
  15. Stream实践总结
  16. Word排版(小计)
  17. 微信支付-扫码支付方式在ThinkPHP商城中的使用(第二部分)
  18. gmail真心用不惯啊
  19. 在TITAN RTX 2080Ti 上安装 Ubuntu18.04+Nvidia-430显卡驱动+配置深度学习环境(1)
  20. 【粉笔结构化面试】综合分析类

热门文章

  1. C语言经典例28-利用递归算年龄
  2. Android初学习 - 国际化
  3. 推送url到百度php,PHPCMS自动推送URL到百度站长平台
  4. lisp 边坡_STAB(土质边坡稳定分析原理、方法与程序)程序使用说明书.pdf
  5. c语言完全二叉树原理,C语言判断完全二叉树
  6. python批量删除微信好友_Python找出微信上删除你好友的人脚本写法
  7. 英文名字大全(女篇) 1
  8. Linux端口转发的几种常用方法
  9. 什么软件可以搜python题_哪个手机软件有python题库
  10. 小米fortnite_适用于Android的Fortnite跳过Play商店,这是巨大的安全风险