简单记录一下,后续改进

python代码

#模26运算下,求矩阵的逆。
#使用伴随矩阵求逆矩阵法。
#整个精度保持在整数位(方便求模运算)。import numpy as np #扩展欧几里得算法求最大公约数gcd
def EX_GCD(a,b,arr): #扩展欧几里得if b == 0:arr[0] = 1arr[1] = 0return ag = EX_GCD(b, a % b, arr)t = arr[0]arr[0] = arr[1]arr[1] = t - int(a / b) * arr[1]return g#求乘法逆元
def ModReverse(a,n): #ax=1(mod n) 求a模n的乘法逆xarr = [0,1,]gcd = EX_GCD(a,n,arr)if gcd == 1:return (arr[0] % n + n) % nelse:return -1if __name__ == "__main__":n = 26 #模26list_A1 = [] #目标矩阵A1A1 = np.array([[3,13,21,9],[15,10,6,25],[10,17,4,8],[1,23,7,2]])# A1 = np.array([[5,17],[8,3]])#1.求伴随矩阵A2#np.linalg.inv(A1)目标矩阵的逆#np.linalg.det(A1)目标矩阵的行列式#伴随矩阵 = 行列式 * 矩阵的逆= np.linalg.inv(A1) * np.linalg.det(A1)for i in range((np.linalg.inv(A1) * np.linalg.det(A1)).shape[0]):for j in range((np.linalg.inv(A1) * np.linalg.det(A1)).shape[1]):list_A1.append(round((np.linalg.inv(A1) * np.linalg.det(A1))[i][j]))#round(x,n)n是表示保留几位小数,不写n默认是整数即n=0。A2 = np.array([list_A1],dtype=int)#伴随矩阵(如果运行提示错误OverflowError: Python int too large to convert to C long,这是因为其中的数据类型定为了int,但是实际长度超过了。把这里的dtype=int去掉即可,但是求模运算可能会出现误差)A2 = A2.reshape(A1.shape[0],A1.shape[1])#重塑矩阵,行列信息和A1相同。#2.求((1/行列式)%26) A3。#注意当行列式过大之后 (1/行列式)再进行模运算的时候会造成较大精度误差。通过除法改乘法来减小精度误差(1/行列式)% 26 =(1*行列式的乘法逆元)%26。A3 = ModReverse(round(np.linalg.det(A1)),n)#3.求逆矩阵A4A4 = (A3 * A2) % nprint("得到目标矩阵A1的逆:\n %s" % A4)

附加:
求乘法逆元代码参考博客:
https://blog.csdn.net/SSS_Benjamin/article/details/90345614

python实现简单的求矩阵的逆相关推荐

  1. Python解决矩阵的PLU分解及求矩阵的逆

    Python解决矩阵的PLU分解及求矩阵的逆 关于PLU的分解基础知识就不叙述了,可以自己去看矩阵分析的书,大体上和高斯消去法差不多. PLU分解被经常用在Ax=bAx=bAx=b的求解上 在这里xx ...

  2. 判断一个矩阵全为0_中学生线性代数1——从线性方程组到求矩阵的逆

    需要的前置数学知识:一元一次,一元二次方程的解法,基本的初中代数. 会用到的记号 读者对象:初中高年级,高中生,大学低年级学生以及其它数学爱好者.讲解了矩阵,增广矩阵,矩阵乘法,转置,行列向量,求矩阵 ...

  3. Fortran 求矩阵的逆、行列式的值

    #2019,10,8 更新: 重写部分程序,增加部分注释 学Fortran的第一天,就写了这么点东西,分享一下. 内容包括:求矩阵的逆.行列式的值 其中:求逆的方法是先求伴随矩阵再除以行列式的值, 求 ...

  4. C语言求矩阵的逆(高斯法)

    初等变换法是常用的矩阵求逆方法之一 相对于伴随法,初等行变换法有着较低的时间复杂度,可以进行相对高维的矩阵运算,但同时也会损失一点点精度. 伴随法可参考之前的博客:C语言求矩阵的逆(伴随法) 目录 数 ...

  5. 求矩阵的逆的三种方法

    我们知道求矩阵的逆具有非常重要的意义,本文分享给大家如何针对3阶以内的方阵,求出逆矩阵的3种手算方法:待定系数法.伴随矩阵法.初等变换法(只介绍初等行变换) 待定系数法求逆矩阵 1 首先,我们来看如何 ...

  6. 【MATLAB】几种求矩阵伪逆的方法

    几种求矩阵伪逆的方法 A*x=y当A不可逆如何解x 求伪逆有五种方法,左右同时乘以A','chol()分解,qr() 分解,svd()分解和pinv()求伪逆,下面来比较一下哪个最优秀. 如果A是个3 ...

  7. C语言求矩阵的逆(伴随法)

    之前介绍了C语言用代数余子式求行列式 本次开始介绍如何用公式法对矩阵求逆,并用C语言将其实现. 之前程序有点小bug,已于2022年11月29日修改. 目录 数学原理 矩阵求逆的公式 数乘矩阵 程序设 ...

  8. Matlab求矩阵的逆(三种方法)

    Matlab求矩阵的逆(三种方法) 说明:若所求矩阵为非奇异矩阵(可逆矩阵),则可以精确求得其逆矩阵:若所求矩阵为奇异矩阵,则所求出的逆矩阵是近似的(不精确). 下面以矩阵A为例. inv()方法 A ...

  9. python求矩阵的逆

    文章目录 准备工作 Ready to work 环境 Environment 模块导入 Module import 代数余子式 Algebraic cofactor 定义 Definition 代码实 ...

最新文章

  1. mysql中groupby会用到索引吗_开发人员不得不知的MySQL索引和查询优化
  2. 一作解读:Microbiome马铃薯疮痂病与土壤微生物组关系新进展
  3. werkzeug中服务器处理请求的实现
  4. python编程if语法-python if控制流语句 语法笔记
  5. 64位Linux下使用QQ
  6. Hadoop + Amazon EC2 –更新的教程
  7. mysql数据库服务器名_mysql数据库服务器名
  8. Laravel核心解读 -- Request
  9. 基础的c语言题目,几个c语言的基础题目
  10. /dev/shm目录下产生大量的ora_$ORACLE_SID的二进制文件
  11. qtvs添加qchart_如何使用Qt Designer在窗体中插入QChartView?
  12. android packagemanager源码,Android源码个个击破之PackageManager
  13. 计算机组成原理期中考,计算机组成原理期中考卷
  14. java怎么取map中的key值,Java获取map中key和value的方法
  15. “双料王”傍身,极智嘉Geek+成功开辟行业新蓝海
  16. Ubuntu简单使用操作
  17. 树模型(一):预备知识
  18. SICK激光扫描仪(LD-LRS3601与LMS511)使用小结
  19. 【致青春】致我终将逝去的22年的青春
  20. 抗疫得闲●流花湖(1)

热门文章

  1. 被遗忘权_HTML:前5个被遗忘的元素
  2. 抑郁症自我测试皮肤软件,皮肤瘙痒像虫子爬竟是抑郁症
  3. 计算机控制实验ppt模板,计算机控制技术实验课件.ppt
  4. YYDS!迅雷的代码结构,竟然被大佬“扒了精光”!
  5. 学Git?这一篇就够了
  6. HBuilder将项目生成安卓手机app
  7. RCF—用于C++的进程间通讯(3)
  8. paypal创始人_艾问PayPal创始人彼得·蒂尔(无删减)
  9. python mysql where in 对列表(list,,array)问题
  10. Android M及以上版本系统 悬浮窗权限 的解决方案