python 高斯约当消元法求逆矩阵
judge函数判断该矩阵该矩阵是否有逆矩阵
calculate计算逆矩阵
import sysclass MatrixInverse:""""求逆矩阵"""def __init__(self, matrix):self.matrix = matrixself.a = len(self.matrix)self.b = len(self.matrix[0])if self.a != self.b:print("该矩阵不可求逆矩阵")def judge(self):c = 1e = 0m = self.matrixfor i in range(self.a):for j in range(self.a):c = c * m[j % self.a][(i + j) % self.a]# print(f"{j % self.a},{(i + j) % self.a}")e = e + cc = 1for i in range(self.a):for j, k in zip(range(0, self.a*2, 2), range(self.a)):c = c * m[k % self.a][(i + j) % self.a]# print(f"{k % self.a},{(i + j) % self.a}")e = e - cc = 1print(f"该矩阵的值为:{e}", end=",")if e != 0:print("存在逆矩阵。")else:print("不存在逆矩阵。")return edef calculate(self):"""使用高斯约当消元法计算所给矩阵的逆矩阵"""if MatrixInverse.judge(self) == 0:sys.exit()d = [[0 for i in range(self.a*2)] for j in range(self.a)]e = [[0 for i in range(self.a)] for j in range(self.a)]for i, j in zip(range(self.a), range(self.a)):e[i][j] = 1for i in range(self.a):for j in range(self.a):d[i][j] = self.matrix[i][j]for i in range(self.a):for j in range(self.a, self.a*2):d[i][j] = e[i][j-self.a]"""重新选取主元"""m1 = []for i in range(self.a):m1.append(i)for i in range(self.a):m = 0while m < self.a: # 这两个循环为选取主元if d[m][i] != 0 and i < self.a and m in m1:c2 = d[m][i] # c2 为选取的主元,m为行,i为列。for x in range(self.a*2): # 本循环改变主元所在行的元素,各元素除以主元d[m][x] = d[m][x]/c2 # 防止 d[i][m] 的变化for j in range(self.a): # 本循环以主元所在行为标准,改变其他行c3 = d[j][i]for k in range(self.a*2):if j != m:d[j][k] = d[j][k]/c3 - d[m][k]m1.remove(m)m = self.a # i 列产生主元后,本列不再产生主元,切换到下一列else:m += 1for i in range(self.a):for j in range(self.a):if d[i][j] != 0:c5 = d[i][j]for k in range(self.a*2):d[i][k] = d[i][k]/c5"""将逆矩阵保存在d2中"""d2 = [[0 for i in range(self.a)] for j in range(self.a)]for i in range(self.a):for j in range(self.a, self.a*2):d2[i][j-self.a] = float('%.2f' % d[i][j])print("该矩阵的逆矩阵为:")print(d2)n = [[1, 2, 3], [0, 0, 0], [3, 4, 3]]
s = MatrixInverse(n)
s.calculate()
结果:
代码只支持二维矩阵
python 高斯约当消元法求逆矩阵相关推荐
- 用高斯约当法求逆矩阵A-1
原矩阵: 求. 用高斯约当法求逆矩阵. #include<iostream> #include<cstdio> #include<cs ...
- 高斯约当法求逆矩阵的算法实现(C++)
#include"iostream.h" #include"math.h" void main() { float a[10][10],A[10][10],b[ ...
- 4.6 高斯约当消元法
4.6 高斯约当消元法 高斯消元法把矩阵变换为上三角阵,上三角阵还可以继续变换为对角阵.例如上面增广矩阵 [A,b][A, b][A,b] 变换为上三角阵 [24−2201140048]\left[ ...
- 高斯-约当消元法(转)
高斯-约当消元法(转) 转载来源 选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵.解线性方程组(插一句:LM算法求解的一个步骤),等等.它的速度不是最快 ...
- 高斯消元法(高斯·约当消元法)(浮点)
高斯消元法,用于解多元一次方程(几乎类似模拟手动解方程). 思路: 通过等式的乘除,把方程1的x1x1x_1系数a11a11a_{11}分别化为方程2~方程n的x1x1x_1系数,然后将方程2~方程n ...
- C语言:选列主元约当消元法求线性方程组唯一解
采用选列主元约当消元法求线性方程组唯一解:输入4*5的线性方程组的满秩增广矩阵,输出方程组的解(使用双精度double类型精确到小数点后9位有效数). 输入格式 m(整数,实验数据总数) a11 a1 ...
- 高斯-约当消元法(随机程序,UVA 10828)
就是有一类题目: 就是给你一个图,和一个起始点(可以很抽象,比如UVA 11762需要你自己建模.也可以很具体,比如就是一个网格) 然后每个节点都有一定概率转移到另一些节点. 具体解法就是: 如果是有 ...
- 高斯消元法(高斯·约当消元法)(整数)
整数高斯消元作用在于最后得出的解可以判断是否为整数. 首先看高斯消元法(浮点) 整数的高斯消元法,在消元时通过等式乘法,将同一项系数统一成它的最小公倍数,然后再进行消元. 核心代码: int n,A[ ...
- 高斯-约当 (Gauss-Jordan) 消元法 [学习笔记]
朴素高斯消元 program ttdd8; var matrix:array[1..100,1..101] of double;temp:array[1..101] of double;x:array ...
最新文章
- oracle date怎么用,Oracle to_date的使用方法
- R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs absolute path)
- HDU 1573~3579 X问题Hello Kiki[同余方程]
- html5 响应式布局
- DotNetNuke 框架总揽
- 信息学奥赛一本通 1069:乘方计算 | OpenJudge NOI 1.5 13
- 【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)
- Activiti的BPMN2.0中的子流程
- wxpython播放视频_opencv视屏流嵌入wxpython框架
- 一键安装服务器系统,一键安装服务器系统
- 2022-2028年中国AC-DC蓝牙音箱市场现状研究分析与发展前景预测报告
- C++实现人机对战围棋(使用Leela Zero权重)-策略
- python爬虫qq好友信息_qq好友空间说说爬虫
- ipad上编译运行代码_是否可以在iPad上编写和运行PHP代码?
- 台式计算机搜索不到无线信号,win7电脑搜不到无线信号怎么办_win7找不到无线网络怎么解决-win7之家...
- 截图软件:TechSmith SnagIt V10.0.0.788英文原版+有效激活码
- php替换掉,php替换
- 百度地图API(WEB端/JavaScript API)--实际运用与扩展
- 获取Android设备唯一标识(唯一序列号)
- csrf漏洞防御方案_CSRF原理实战及防御手段
热门文章
- 启动MySQL报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
- java pdf stamper_使用pdfstamper(Itext)将页码添加到pdf
- 云帆加速:广电新媒体营收如何跑赢成本
- Python爬虫——你们要的王者荣耀高清图
- ASP.NET 复习资料
- Qt Windows上实现毛玻璃效果
- php word的使用
- Oracle实例囚笼(Instance Caging)
- 云计算大数据基础知识点
- DSF data model