矩阵的逆的定义:一个n×nn\times nn×n的矩阵AAA是可逆的,如果存在一个n×nn\times nn×n的矩阵CCC使得:
CA=I,且AC=ICA=I, 且 AC=ICA=I,且AC=I
其中I=InI=I_nI=In​为n×nn\times nn×n的单位矩阵,此时矩阵CCC就是矩阵AAA的逆,矩阵AAA的逆记为矩阵A−1A^{-1}A−1。若矩阵AAA可逆,那么它的逆是唯一的。

奇异矩阵与非奇异矩阵:
不可逆矩阵有时也叫奇异矩阵,可逆矩阵有时也成为非奇异矩阵。

求矩阵逆的方法:
把n×nn\times nn×n的方阵AAA与同样是n×nn\times nn×n的单位矩阵III排在一起,构成增广矩阵[AI][A \qquad I][AI],对此增广矩阵进行初等行变换,直到化简为[IA−1][I \qquad A^{-1}][IA−1],这样矩阵AAA的逆A−1A^{-1}A−1就出现在增广矩阵右边。如果不能做如上化简,则表明矩阵AAA没有逆。

可逆矩阵定理

  假设矩阵AAA为n×nn\times nn×n的方阵,以下命题是等价的,即它们同时为真或同时为假:

  1. AAA是可逆矩阵;
  2. AAA行等价于nnn阶单位阵(即AAA经过若干次初等行变换可以变成nnn阶的III);
  3. A有nnn个主元位置;
  4. 方程Ax=0Ax=0Ax=0仅有平凡解;
  5. AAA的各列线性无关;
  6. 线性变换x∣→Axx|\rightarrow Axx∣→Ax是一对一的;
  7. 对RnR^nRn中任意bbb,方程Ax=bAx=bAx=b至少有一个解;
  8. AAA的各列生成RnR^nRn;
  9. 线性变换x∣→Axx|\rightarrow Axx∣→Ax把RnR^nRn映射到RnR^nRn;
  10. 存在n×nn\times nn×n矩阵CCC使得CA=ICA=ICA=I ;
  11. 存在n×nn\times nn×n矩阵DDD使得AD=IAD=IAD=I;
  12. ATA^TAT是可逆矩阵;
  13. AAA的列向量构成RnR^nRn的一个基;
  14. ColA=RnCol\space A=R^nCol A=Rn;
  15. dimColA=ndimCol\space A=ndimCol A=n;
  16. rankA=nrankA=nrankA=n;
  17. NulA={0}NulA=\{0\}NulA={0};
  18. dimNulA=0dimNul\space A=0dimNul A=0;

判断矩阵可逆的方法:
判断矩阵可逆的方法有很多,例如:

  1. 行列式判别法:若一个矩阵行列式不为零,则可逆;若行列式等于零,则不可逆。
  2. 若n×nn\times nn×n的矩阵AAA是可逆的,则对每一RnR^nRn中的bbb,方程Ax=bAx=bAx=b有唯一解x=A−1bx=A^{-1}bx=A−1b。

解方程Ax=bAx=bAx=b三种方法:

  1. 如果n×nn\times nn×n的矩阵AAA是可逆的,那么可以用MATLAB中的反斜杠求解:x=A\bx=A \backslash bx=A\b
A =1     24     7>> [n,n] = size(A)
n =2
n =2>> b = rand(n,1)
b =0.54690.9575>> x1= A\b     //MATLAB中使用反斜杠“\”法直接求x
x1 =-1.91321.2300
  1. (此方法通用性好)不论矩阵AAA是否可逆的,可以先把矩阵AAA和矩阵bbb构成增广矩阵[Ab][A \qquad b][Ab],再把此增广矩阵化简为简化阶梯阵即可。
>> C = [A b]
C =1.0000    2.0000    0.54694.0000    7.0000    0.9575>> rref(C)   // MATLAB中rref函数将矩阵化简为简化阶梯阵。
ans =1.0000         0   -1.91320    1.0000    1.2300

可见,化简得到的简化阶梯阵最后一列[−1.91321.2300]\begin{bmatrix}-1.9132\\1.2300\end{bmatrix}[−1.91321.2300​]即为方程的解,与方法1结果相同。

  1. 如果n×nn\times nn×n的矩阵AAA是可逆的,可以求矩阵AAA的逆A−1A^{-1}A−1,则方程的解为:x=A−1bx=A^{-1}bx=A−1b
A =1     24     7>> Ai = inv(A)    //函数inv求矩阵A的逆
Ai =-7     24    -1>> x2 = Ai * b
x2 =-1.91321.2300

  可见解得的结果与上面两种方法相同。

关于Hilbert矩阵及其逆的求法:
  该矩阵为方阵,中任意元素表示为Aij=1i+j−1A_{ij}=\frac {1}{i+j-1}Aij​=i+j−11​。Hilbert矩阵是高度病态的,任何一个元素发生一点变动,整个矩阵的行列式的值和逆矩阵都会发生巨大变化,病态程度和阶数相关。
  Hilbert矩阵(HHH)阶数越大,其病态程度越严重,使用浮点数计算来解方程Hx=bHx=bHx=b的误差就越大。
  MATLAB里面有内置函数invhilb(n)来计算n阶Hilbert矩阵的逆,输出的解为精确解,如下:

>> H = hilb(5)   //生成5阶Hilbert矩阵
H =1              1/2            1/3            1/4            1/5     1/2            1/3            1/4            1/5            1/6     1/3            1/4            1/5            1/6            1/7     1/4            1/5            1/6            1/7            1/8     1/5            1/6            1/7            1/8            1/9 >> invhilb(5)   //求5阶Hilbert矩阵逆的精确解
ans =25           -300           1050          -1400            630       -300           4800         -18900          26880         -12600       1050         -18900          79380        -117600          56700       -1400          26880        -117600         179200         -88200       630         -12600          56700         -88200          44100      

病态矩阵与良态矩阵:

  一个可逆矩阵是病态的(ill-conditioned),即中的某些元素稍作改变就会变成奇异矩阵(不可逆矩阵),矩阵的逆和以其为系数矩阵的方程组的解对微小的扰动十分敏感,这类矩阵叫病态矩阵,或接近奇异的矩阵。这类矩阵会给数值求解带来很大困难。

  矩阵病态的反面是良态(well-conditioned),关于良态矩阵与病态矩阵的判断,可以使用条件数(Condition Number)作为依据,见下文。

  在MATLAB中实现上面三种方法,对于求解存在该类矩阵的方程(如Ax=bAx=bAx=b中AAA为Hilbert矩阵),精确度都是不太够的,可能会有warning。

>> A = hilb(20)   //生成20阶的Hilbert矩阵
A =Columns 1 through 51              1/2            1/3            1/4            1/5     1/2            1/3            1/4            1/5            1/6     1/3            1/4            1/5            1/6            1/7     1/4            1/5            1/6            1/7            1/8     1/5            1/6            1/7            1/8            1/9     1/6            1/7            1/8            1/9            1/10    1/7            1/8            1/9            1/10           1/11    1/8            1/9            1/10           1/11           1/12    1/9            1/10           1/11           1/12           1/13    1/10           1/11           1/12           1/13           1/14    1/11           1/12           1/13           1/14           1/15    1/12           1/13           1/14           1/15           1/16    1/13           1/14           1/15           1/16           1/17    1/14           1/15           1/16           1/17           1/18    1/15           1/16           1/17           1/18           1/19    1/16           1/17           1/18           1/19           1/20    1/17           1/18           1/19           1/20           1/21    1/18           1/19           1/20           1/21           1/22    1/19           1/20           1/21           1/22           1/23    1/20           1/21           1/22           1/23           1/24    Columns 6 through 101/6            1/7            1/8            1/9            1/10    1/7            1/8            1/9            1/10           1/11    1/8            1/9            1/10           1/11           1/12    1/9            1/10           1/11           1/12           1/13    1/10           1/11           1/12           1/13           1/14    1/11           1/12           1/13           1/14           1/15    1/12           1/13           1/14           1/15           1/16    1/13           1/14           1/15           1/16           1/17    1/14           1/15           1/16           1/17           1/18    1/15           1/16           1/17           1/18           1/19    1/16           1/17           1/18           1/19           1/20    1/17           1/18           1/19           1/20           1/21    1/18           1/19           1/20           1/21           1/22    1/19           1/20           1/21           1/22           1/23    1/20           1/21           1/22           1/23           1/24    1/21           1/22           1/23           1/24           1/25    1/22           1/23           1/24           1/25           1/26    1/23           1/24           1/25           1/26           1/27    1/24           1/25           1/26           1/27           1/28    1/25           1/26           1/27           1/28           1/29    Columns 11 through 151/11           1/12           1/13           1/14           1/15    1/12           1/13           1/14           1/15           1/16    1/13           1/14           1/15           1/16           1/17    1/14           1/15           1/16           1/17           1/18    1/15           1/16           1/17           1/18           1/19    1/16           1/17           1/18           1/19           1/20    1/17           1/18           1/19           1/20           1/21    1/18           1/19           1/20           1/21           1/22    1/19           1/20           1/21           1/22           1/23    1/20           1/21           1/22           1/23           1/24    1/21           1/22           1/23           1/24           1/25    1/22           1/23           1/24           1/25           1/26    1/23           1/24           1/25           1/26           1/27    1/24           1/25           1/26           1/27           1/28    1/25           1/26           1/27           1/28           1/29    1/26           1/27           1/28           1/29           1/30    1/27           1/28           1/29           1/30           1/31    1/28           1/29           1/30           1/31           1/32    1/29           1/30           1/31           1/32           1/33    1/30           1/31           1/32           1/33           1/34    Columns 16 through 201/16           1/17           1/18           1/19           1/20    1/17           1/18           1/19           1/20           1/21    1/18           1/19           1/20           1/21           1/22    1/19           1/20           1/21           1/22           1/23    1/20           1/21           1/22           1/23           1/24    1/21           1/22           1/23           1/24           1/25    1/22           1/23           1/24           1/25           1/26    1/23           1/24           1/25           1/26           1/27    1/24           1/25           1/26           1/27           1/28    1/25           1/26           1/27           1/28           1/29    1/26           1/27           1/28           1/29           1/30    1/27           1/28           1/29           1/30           1/31    1/28           1/29           1/30           1/31           1/32    1/29           1/30           1/31           1/32           1/33    1/30           1/31           1/32           1/33           1/34    1/31           1/32           1/33           1/34           1/35    1/32           1/33           1/34           1/35           1/36    1/33           1/34           1/35           1/36           1/37    1/34           1/35           1/36           1/37           1/38    1/35           1/36           1/37           1/38           1/39    >> b = rand(20,1)   //生成b向量
b =687/712   589/3737  6271/6461  581/607   614/1265  1142/1427  689/4856  407/965   1065/1163  61/77    1966/2049  3581/5461  489/13693 439/517   283/303   1481/2182  979/1292  541/728   1645/4194  1406/2145  >> x1 = A\b  //反斜杠法求解x=A\b
Warning: Matrix is close to singular or badly scaled. Results may be
inaccurate. RCOND =  5.231543e-20.     //此处为Warning,x1 =
-3424659463
528255780716
-19975903782848
321018859628437
-2688760131266522
12761814815871434
-34399090053517208
45897097341921456
-7254237859641766
-37322034685407312
-49284163552153728
217508096052998944
-205446702755182752
64773453754244512
-105964986075521504
193373000517961920
-30851727609549800
-163776311038511840
135720005301748528
-33347024092943792 R = rref([A b]); x3 = R(:,21) //方法2求解,化简阶梯阵的方法,此方法最通用,没有warning。
x3 =0       0       0       0       0       0       0       0       0       0       0       0       0       0       1       0       0       0       0       0   >> x2=inv(A)*b  //方法3求解,矩阵A的逆乘b
Warning: Matrix is close to singular or badly scaled. Results may be
inaccurate. RCOND =  9.542396e-20. x2 =
-3095618963
478515839234
-18128046963749
291709089884240
-2443748498671269
11565944181737902
-30772016457394916
38422934259310336
6062876912518655
-64009870499747464
-815625744960023
161923881096513024
-174734421275108320
49731260512141016
-57082196217625456
111820626128154624
24957912964649792
-173285108058004640
129261793086585504
-30878300969326916

误差讨论:

  上面的Warning中的“RCOND”表示条件数的倒数(reciprocal),如果这个值很小,则表示条件数很大,也就是说矩阵求解的误差越大。

  条件数很大的矩阵是病态矩阵,对矩阵中元素很小的扰动会对结果产生很大影响。上面对含有Hilbert矩阵的方程进行求解过程中得到的RCOND = 9.542396e-20RCOND = 5.231543e-20都是很小的,表示条件数都非常大,所以,产生上面报警的计算是非常不精确的。

  由于MATLAB中的反斜杠求解Ax=bAx=bAx=b(矩阵AAA是可逆方阵)算法是使用了部分主元法的LU分解法,使用部分主元法的算法计算量较小,且舍入误差较小。所以这种方法误差总体来说较小。

  如果使用inv(A)先求A的逆,再x2=inv(A)*b的话,MATLAB先计算inv(A),也就是求解Ax=eiAx=e_iAx=ei​,eie_iei​是单位矩阵III中的每一列向量,这样每一列向量eie_iei​对应的解向量xxx求出后,拼合起来就是矩阵AAA的逆A−1A^{-1}A−1,最后计算A−1bA^{-1}bA−1b。可见此种计算方法的计算量很大,所以每步的误差积累更多,总体误差更大。

  对于使用rref( )求增广矩阵的简化阶梯式的方法,由于这种算法不检测矩阵是病态还是良态(所以不会提示矩阵是否是近奇异的或者病态的),仅在小的矩阵中比较精确,矩阵很大则计算很慢,但是这并不是说这种方法就最精确,其误差和上述两种方法在一个量级,但是一般不使用这种方法。

关于条件数(Condition Number)

  条件数越大,矩阵越接近于奇异。单位矩阵的条件数是1,奇异矩阵的条件数为无穷大。在极端情况下,矩阵计算程序可能无法区别奇异矩阵与病态矩阵。
  当条件数很大时,矩阵计算可能产生很大的误差。

  定义:矩阵AAA的条件数(Condition Number)为∣∣A∣∣∣∣A−1∣∣||A||\space ||A^{-1}||∣∣A∣∣ ∣∣A−1∣∣。

  计算方法有很多种,如:矩阵AAA是可逆矩阵,其最大奇异值和最小奇异值之比σ1σn\frac {\sigma_1}{\sigma_n}σn​σ1​​就是矩阵AAA的条件数。

  MATLAB中计算矩阵条件数的函数:cond( )。例如:

A =0.7060    0.8235    0.4387    0.4898    0.27600.0318    0.6948    0.3816    0.4456    0.67970.2769    0.3171    0.7655    0.6463    0.65510.0462    0.9502    0.7952    0.7094    0.16260.0971    0.0344    0.1869    0.7547    0.1190>> cond(A)   //计算矩阵A的条件数
ans =7.4466

矩阵的逆及求逆矩阵的方法,可逆矩阵定理与判定方法,(非)奇异矩阵,方程Ax=b解法,Hilbert矩阵及其逆的求法,条件数(Condition Number)及其计算方法相关推荐

  1. c语言求逆程序,求逆矩阵的C语言源程序CINV

    详细的求逆矩阵的算法,可以直接使用 /*文件名 CINV.C,徐士良编写 复矩阵求逆,其中ar为复矩阵实部对应的二维数组首地址,ai为虚部数组的首地址, 求逆矩阵后的结果覆盖原数组*/ #includ ...

  2. 线性代数 --- 用条件数(condition number)来判断矩阵是否可逆

    条件数(condition number) 在很长的一段时间里,我们判断一个矩阵是否可逆,都是根据矩阵的行列式det是否为0,来判断的.如果行列式的值为0,则我们认定该矩阵为奇异矩阵,即不可逆矩阵.如 ...

  3. 7-1 sdut-求一个3*3矩阵对角线元素之和7-2 求矩阵各行元素之和7-3 sdut- 对称矩阵的判定7-4 sdut- 杨辉三角7-5 sdut- 鞍点计算7-6 矩阵转置

    7-1 sdut-C语言实验-求一个3*3矩阵对角线元素之和 分数 12 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 给定一个3*3的矩阵,请你求出对角线元素之和. 输入格式: 按照行优 ...

  4. 怎么用计算机求逆矩阵,计算机是怎么求解线性方程的(矩阵乘和求逆)

    上回我们说到,高斯老哥用消元法解线性方程,大致步骤呢就是给系数矩阵消元,运气好点呢直接整出上三角系数矩阵,得到方程组的唯一解,运气不行呢,消着消着发现整不出上三角,这时就得再讨论方程是有多解还是无解. ...

  5. matlab中的a逆怎么使用方法,Matlab求逆矩阵怎么操作?求逆矩阵方法详解

    现在使用Matlab的朋友越来越多,而接下里的这篇文章小编就带来了Matlab求逆矩阵的操作方法,感兴趣的朋友就跟小编一起来学习一下吧. Matlab求逆矩阵的操作方法 方法一:用inv()函数求矩阵 ...

  6. 下三角矩阵的逆矩阵_上三角或下三角矩阵的逆矩阵能否简便方法求出??只有主副对角线不为0的矩阵能否直接写出逆矩阵。...

    1.上三角矩阵的逆矩阵 将上三角矩阵划分成块矩阵,如上图所示,则其逆矩阵结果如下回图.答 2.下三角矩阵的逆矩阵 将下三角矩阵划分成块矩阵,如上图所示,则其逆矩阵结果如下图. 3.只有主对角线不为零的 ...

  7. C++设计矩阵,实现矩阵相乘和求逆矩阵

    矩阵变换是机器人学的基础,所以Jungle把这一节内容划分到"工业机器人"栏目.这一节Jungle用C++设计了矩阵的类Matrix,并设计了3个方法: 矩阵相加add 矩阵相乘m ...

  8. python numpy逆_Python使用numpy计算矩阵特征值、特征向量与逆矩阵

    原标题:Python使用numpy计算矩阵特征值.特征向量与逆矩阵 Python扩展库numpy.linalg的eig()函数可以用来计算矩阵的特征值与特征向量,而numpy.linalg.inv() ...

  9. C语言 n*n矩阵求值及求逆矩阵

    求出矩阵的值以及输出逆矩阵,英语不好,略拗口. 上代码: #include<stdio.h> #include<string.h> #include<math.h> ...

  10. 机器学习常见求逆矩阵的方法

    机器学习的常见求解逆矩阵的方法 高斯消元法 LU分解法 SVD分解法 QR分解法 高斯消元法 高斯消元法是最经典也是最广为人知的一种矩阵求逆方法,但是在现实应用中很少用到高斯消元法来进行矩阵的逆矩阵的 ...

最新文章

  1. Android 自定义View (入门 篇) 的使用
  2. linux的帮助命令及区别,Linux命令及帮助
  3. 源代码管理的新15条建议
  4. 使用Logstash filter grok过滤日志文件
  5. Angular rxjs operators 笔记
  6. centos7 docker安装和使用_入门教程
  7. 《Go 语言程序设计》读书笔记 (五) 协程与通道
  8. 中望cad能编写lisp吗_宁水集团:中望CAD解决方案增强设计创新力,加速转型促发展...
  9. HackingTeam重磅炸弹: 估值超1000万美金带有军火交易性质的木马病毒以及远控源码泄露
  10. 数学建模-灰色预测模型基本原理及其编程实现
  11. java反应器构型_27种反应器的结构及原理,你想了解的都在这里
  12. 重装系统之制作U盘启动盘 - 一盘通装
  13. 【集合论】关系闭包 ( 关系闭包求法 | 关系图求闭包 | 关系矩阵求闭包 | 闭包运算与关系性质 | 闭包复合运算 )
  14. spring mvc 扫描与注解
  15. Pyghon文件操作
  16. mysql 集群 运维_【MySQL运维】Canal集群模式与多数据库同步部署
  17. ixgbe 如何开启vf
  18. 轻量的web框架Bottle
  19. 使用 Vert.x Maven 插件快速创建项目
  20. ThinkCMF知识点汇总

热门文章

  1. 安卓Systrace工具使用流程
  2. 【永恒之蓝】最新勒索软件WannaCrypt病毒感染前后应对措施
  3. STM32CUBEIDE USB下载总是连接不上 总是USBD_BUSY
  4. 磊科linux无线网卡驱动安装步骤,磊科nw360无线网卡安装教程(附磊科nw360驱动下载)...
  5. adprw指令通讯案例_S71200 ModbusTCP 通讯配置向导说明
  6. 搭建自己的wiki系统
  7. jenkins下载安装及环境搭建
  8. Hive beeline连接hiveserver2报错:User: root is not allowed to impersonate root
  9. JUCE入门级教程01——界面设计(细分12块)
  10. 晨曦记账本记账收支,统计结余