逆矩阵:设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。
矩阵求逆一般有两种方法,一个是伴随矩阵法,一个是初等变换法,也就是高斯消元法。这里主要讲高斯消元法的编程方法。
由条件AB=BA以及矩阵乘法的定义可知,矩阵A和B都是方阵。再由条件AB=I以及定理“两个矩阵的乘积的行列式等于这两个矩阵的行列式的乘积”可知,这两个矩阵的行列式都不为0。也就是说,这两个矩阵的秩等于它们的级数(或称为阶,也就是说,A与B都是n\times n方阵,且rank(A) = rank(B) = n)。换句话说,这两个矩阵可以只经由初等行变换,或者只经由初等列变换,变为单位矩阵。

因为对矩阵A施以初等行变换(初等列变换)就相当于在A的左边(右边)乘以相应的初等矩阵,所以我们可以同时对A和I施以相同的初等行变换(初等列变换)。这样,当矩阵A被变为I时,I就被变为A的逆阵B。

bool Gauss(float A[][N], float B[][N], int n)
{int i, j, k;float max, temp;float t[N][N];                //临时矩阵//将A矩阵存放在临时矩阵t[n][n]中for (i = 0; i < n; i++){for (j = 0; j < n; j++){t[i][j] = A[i][j];}}//初始化B矩阵为单位阵for (i = 0; i < n; i++){for (j = 0; j < n; j++){B[i][j] = (i == j) ? (float)1 : 0;}}for (i = 0; i < n; i++){//寻找主元max = t[i][i];k = i;for (j = i + 1; j < n; j++){if (fabs(t[j][i]) > fabs(max)){max = t[j][i];k = j;}}//如果主元所在行不是第i行,进行行交换if (k != i){for (j = 0; j < n; j++){temp = t[i][j];t[i][j] = t[k][j];t[k][j] = temp;//B伴随交换temp = B[i][j];B[i][j] = B[k][j];B[k][j] = temp;}}//判断主元是否为0, 若是, 则矩阵A不是满秩矩阵,不存在逆矩阵if (t[i][i] == 0){printf("There is no inverse matrix!");return false;}//消去A的第i列除去i行以外的各行元素temp = t[i][i];for (j = 0; j < n; j++){t[i][j] = t[i][j] / temp;        //主对角线上的元素变为1B[i][j] = B[i][j] / temp;        //伴随计算}for (j = 0; j < n; j++)        //第0行->第n行{if (j != i)                //不是第i行{temp = t[j][i];for (k = 0; k < n; k++)        //第j行元素 - i行元素*j列i行元素{t[j][k] = t[j][k] - t[i][k] * temp;B[j][k] = B[j][k] - B[i][k] * temp;}}}}return true;
}

完整的测试代码如下:矩阵求逆

高斯消元法求矩阵的逆相关推荐

  1. python实现简单的求矩阵的逆

    简单记录一下,后续改进 python代码 #模26运算下,求矩阵的逆. #使用伴随矩阵求逆矩阵法. #整个精度保持在整数位(方便求模运算).import numpy as np #扩展欧几里得算法求最 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. numpy求矩阵的逆和伪逆

    我们可以使用np.linalg中的inv和pinv函数来求解矩阵的逆/伪逆. np.linalg.inv 对于可逆方阵M,我们使用下面这行代码求逆: np.linalg.inv(J(theta)) 示 ...

最新文章

  1. 资金只够支撑10个月,自动驾驶致命事故重演:特斯拉陷入困境
  2. 项目管理心得——你为啥会觉得自己很忙?
  3. oclick vue 传参 函数_详解Vue计算属性和侦听属性
  4. 代码质量在「内卷时代」的重要性
  5. iphone个系列尺寸_最值得入手的4款iPhone,都是内行人的最爱,拿出去有面子
  6. 手机里的html文档是什么,华为手机中后面带HTML的文档能删除吗?
  7. 7.1 elementui的radio无法选中问题
  8. Python官方文档学习心得(第一章)
  9. mysql导出数据dump_MYSQL使用mysqldump导出表的部分数据
  10. java 获取当前方法的名称_Java中获取当前函数名
  11. Java IO 之 介质流
  12. spring 配置项 随机_Spring Boot--从配置文件中获取随机数
  13. IOMMU之Interrupt Remapping
  14. VS2010 旗舰版和专业版 下载
  15. cad图纸问号怎么转换文字_CAD打开图纸后为什么文字显示为问号?怎么解决?
  16. c语言运算符大全极其意义,C语言运算符大全
  17. 计算机软件基础自考实践报告,信息作战自考实践报告
  18. 粗糙集约简 程序 matlab,粗糙集属性约简matlab程序
  19. 【Linux】Linux版本介绍(内核版本和发行版本)
  20. adb命令模拟Android电量

热门文章

  1. Python 将 QQ 聊天记录生成词云(分手了如何欢度情人节?)
  2. Winform做一个仿360界面
  3. 使用Set集合对List集合进行去重
  4. 图像处理之图像噪声和各种噪声的matlab实现
  5. 2023年计算机考研院校推荐50所
  6. java毕业设计餐饮类网站Mybatis+系统+数据库+调试部署
  7. 永中Office 2004 增强版上市,试用版免费下载
  8. vue中组件的父子关系
  9. 装完linux无法进入windows,安装Ubuntu后无法启动Windows,如何解决?
  10. 网站icp备案服务器ip,域名已有icp备案更换服务器