python实现列主元消去法解线性方程组
水平有限,代码随便写写的,没怎么优化,供参考:
def findsolution(mat):ans=[]dic={}error=0 #ans用于保存运算结果,dic将解以字典的形式表示,error用于判断该方程组是否有唯一解,error=0则有唯一解for i in range(len(mat)-1):max=0change=[]for j in range(i,len(mat)):if mat[j][i]>=max:max=mat[j][i]sign=jelse:passchange=mat[i]mat[i]=mat[sign]mat[sign]=change #将i列最大主元所在行与i行交换for k in range(i+1,len(mat)):yin=mat[k][i]/mat[i][i]for v in range(i,len(mat[0])):mat[k][v]=float(format((mat[k][v]-mat[i][v]*yin),'.10f')) #从上往下将每个系数依次减去乘积因子与i行中每列的元素乘积d=len(mat)while d:try:x=mat[d-1][len(mat[0])-1]for l in range(len(ans)):x-=ans[l]*mat[d-1][len(mat[0])-2-l]x=x/mat[d-1][d-1] #回代求解,每解出一个就保存在ans中,供下次回代使用except ZeroDivisionError:error=1break #如果消元过程中列主元素为0,则触发ZeroDiv错误,从而得知该线性方程组没有唯一解ans.append(x)d-=1lenth = len(ans)i = 1while lenth:dic['x' + str(i)] = ans[lenth - 1]i += 1lenth-=1if error==1 or not len(mat)+1==len(mat[0]):return '方程没有唯一解'else:return dic
mat=eval(input('请输入一个线性方程组的增广矩阵\n'))
print(findsolution(mat))
没什么技巧,就是很直球的思路,算呗。
使用方法:
输入一个线性方程组的增广矩阵,以字典形式返回解.(若有唯一解则返回,若没有则返回没有唯一解)
python实现列主元消去法解线性方程组相关推荐
- 高斯列主元消去法解线性方程组
最近在看惯导的东西,然后想要用C++解惯导控制方程,然后就重头把C++解方程组这方面的知识回顾了一下,首先就是高斯列主元消去法,这个方法还算实用,这里以3*3的矩阵为例,里面注释很详细,各位小白可以参 ...
- 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 - ...
- 用gauss消去法解线性方程组(数值数学实验教程P74ex5.2)-2021-11-03
用gauss消去法解线性方程组(数值数学实验教程P74ex5.2) function [x,Ak] =caguss_elimination(A,b,epsilon) %gauss消去法解线性方程组 % ...
- 数值分析—行主元消去法解线性方程组—FORTRAN程序
数值分析-行主元消去法解线性方程组-FORTRAN程序 program main implicit none real8,dimension( :,: ),allocatable::A real8,d ...
- MATLAB 列主元消去法 解方程组
clear % creat all input variable disp('(1)中为A1 (2)中为A2');A1 = [3.01,6.03,1.99;1.27,4.16,-1.23;0.987, ...
- Guass列主元消去法求解线性方程组
上篇博文讲到:Guass消去法求解线性方程组,也提到了此方法求解线性方程组存在的问题,因此有如下: 基本思想: 看不懂没关系,直接看下面的例题,会有更直观的理解,然后再回到这里继续看. 选主元的步骤( ...
- c语言消去法解线性方程组,高斯消元法解线性方程组(C++实现)
最近在学数值分析,正好学到求解线性方程组.就自己动手简单实现了一下.关于本算法的原理可以在<数值分析>第5版(李庆扬编),对应于该书的P145页,详细讲解了公式.因本人时间有限,暂时不详细 ...
- 列主元法解线性方程组
import java.util.Scanner;public class Gauss {static final int MAXN = 20;static double a[][] = new do ...
- 列主元高斯消去法解线性方程组——C语言实现
原理 高斯消去法 的基本原理就是用初等变换将用行的,逐次消去未知数的方法,把原来的方程组,化为与其等价的上三角方程组. 设有线性方程Ax=B\boldsymbol{A}\boldsymbol{x}=\ ...
- Python代码列主元消去法matlab编程_工业机器人用什么语言编程的?
曾经有很多小伙伴一直问,工业机器人编程用的是什么语言啊?这次给大家总结一下机器人编程中常用的语言. 1.硬件描述语言(HDLs) 硬件描述语言一般是用来描述电气的编程方式.这些语言对于一些机器人专家来 ...
最新文章
- 用 Git 和 Github 提高效率的 10 个技巧!
- PAT-乙级-1064 朋友数
- html函数中怎么写超链接,如何调用html超链接中的函数
- js---BOW---页面打开方式,跳转方式 2017-03-24
- LeetCode-Add Binary
- 史蒂夫乔布斯6月斯坦佛大学演讲: 必须找到你所钟爱的东西
- Java Statement PK PrepareStatement
- Git(9)-diff
- leetcode 4 --- 寻找两个有序数组的中位数
- 【华为云技术分享】MongoDB经典故障系列六:CPU利用率太高怎么办?
- (31)FPGA原语设计(IBUFG)
- 对应sql建表_图解SQL面试题:如何查找工资前三高的员工
- 你以为你懂MySQL索引?阿里的面试官:你还太嫩!
- [转]关于java中的 sychronized 同步方法 与 同步块的理解
- 深度揭秘:诺基亚的百年沧桑
- 全新版在线迅捷PDF转换器
- JAVA 生成随机数两种方式
- 分分钟免费搭建一个简单而美博客
- hdu 5325 Crazy Bobo (树形dp)
- 苹果发布黄色版 iPhone 14,定价 5999 元起;大神李沐被曝离职投身大模型创业;Atlassian 裁员 |极客头条