【matlab基础知识代码】(十二)逆矩阵与广义逆矩阵

Matlab 复制代码
>>  H=hilb(4);H1=inv(H),norm(H*H1-eye(4))

H1 =

   1.0e+03 *

    0.0160   -0.1200    0.2400   -0.1400
   -0.1200    1.2000   -2.7000    1.6800
    0.2400   -2.7000    6.4800   -4.2000
   -0.1400    1.6800   -4.2000    2.8000


ans =

   2.8455e-13

矩阵维数较大,警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND = 1.334996e-18。

Matlab 复制代码
>> H=sym(hilb(7));H1=inv(H)%7*7逆矩阵
 
H1 =
 
[    49,    -1176,      8820,    -29400,      48510,     -38808,     12012]
[ -1176,    37632,   -317520,   1128960,   -1940400,    1596672,   -504504]
[  8820,  -317520,   2857680, -10584000,   18711000,  -15717240,   5045040]
[-29400,  1128960, -10584000,  40320000,  -72765000,   62092800, -20180160]
[ 48510, -1940400,  18711000, -72765000,  133402500, -115259760,  37837800]
[-38808,  1596672, -15717240,  62092800, -115259760,  100590336, -33297264]
[ 12012,  -504504,   5045040, -20180160,   37837800,  -33297264,  11099088]
 >> H=sym(hilb(50));norm(H*inv(H)-eye(size(H))) 
 
ans =
 
0

>> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; B=inv(A), A*B

警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND = 4.625929e-18。

B =

1.0e+15 *

-0.2649 -0.7948 0.7948 0.2649

-0.7948 -2.3843 2.3843 0.7948

0.7948 2.3843 -2.3843 -0.7948

0.2649 0.7948 -0.7948 -0.2649

ans =

1.5000 0 2.0000 0.5000

-1.0000 -2.0000 3.0000 2.2500

-0.5000 -4.0000 4.0000 0.5000

-1.1250 -5.2500 5.3750 3.0312

Matlab 复制代码
>> inv(A)%符号运算,说明A奇异矩阵
 
ans =
 
[Inf, Inf, Inf, Inf]
[Inf, Inf, Inf, Inf]
[Inf, Inf, Inf, Inf]
[Inf, Inf, Inf, Inf]
Matlab 复制代码
>> a=sym('a%d',[1,4]); H=hankel(a); inv(H)
 
ans =
 
[   0,        0,                      0,                                1/a4]
[   0,        0,                   1/a4,                            -a3/a4^2]
[   0,     1/a4,               -a3/a4^2,              -(- a3^2 + a2*a4)/a4^3]
[1/a4, -a3/a4^2, -(- a3^2 + a2*a4)/a4^3, -(a3^3 - 2*a2*a3*a4 + a1*a4^2)/a4^4]

伪逆矩阵穆尔-彭罗斯广义逆矩阵_百度百科 (baidu.com)

Matlab 复制代码
>> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; B=pinv(A),A*B

B =

    0.1011   -0.0739   -0.0614    0.0636
   -0.0364    0.0386    0.0261    0.0011
    0.0136   -0.0114   -0.0239    0.0511
   -0.0489    0.0761    0.0886   -0.0864


ans =

    0.9500   -0.1500    0.1500    0.0500
   -0.1500    0.5500    0.4500    0.1500
    0.1500    0.4500    0.5500   -0.1500
    0.0500    0.1500   -0.1500    0.9500

奇异矩阵的伪逆

Matlab 复制代码
>> norm(A*B*A-A), norm(B*A*B-B),norm(A*B-(A*B)'), norm(B*A-(B*A)')

ans =

   1.5830e-14


ans =

   4.8420e-17


ans =

   6.5232e-16


ans =

   8.5181e-16
Matlab 复制代码
>> pinv(B), norm(ans-A)

ans =

   16.0000    2.0000    3.0000   13.0000
    5.0000   11.0000   10.0000    8.0000
    9.0000    7.0000    6.0000   12.0000
    4.0000   14.0000   15.0000    1.0000


ans =

   2.0603e-14

对得到的伪逆再求一次伪逆,就可以还原出来原矩阵

Matlab 复制代码
>> A=[6,1,4,2,1; 3,0,1,4,2; -3,-2,-5,8,4]; rank(A)%秩=2

ans =

     2 %长方形,奇异矩阵

>>  iA=pinv(A), norm(A*iA*A-A), norm(iA*A-A'*iA'), norm(iA*A-A'*iA'), norm(A*iA-iA'*A')

iA =

    0.0730    0.0413   -0.0221
    0.0108    0.0020   -0.0156
    0.0459    0.0178   -0.0385
    0.0327    0.0431    0.0638
    0.0164    0.0215    0.0319


ans =

   6.4142e-15


ans =

   2.8268e-16


ans =

   2.8268e-16


ans =

   1.4947e-16
相关推荐
edisao2 分钟前
六、 读者高频疑问解答 & 架构价值延伸
大数据·开发语言·人工智能·科技·架构·php
范纹杉想快点毕业5 分钟前
C语言实现埃拉托斯特尼筛法
c语言·开发语言
catchadmin11 分钟前
Laravel12 + Vue3 的免费可商用 PHP 管理后台 CatchAdmin V5.1.0 发布 新增 AI AGENTS 配置
开发语言·php
一颗青果21 分钟前
auto | 尾置返回类型 | decltype | using | typedef
java·开发语言·算法
江君是实在人43 分钟前
java jvm 调优
java·开发语言·jvm
kylezhao20191 小时前
C# 中实现自定义的窗口最大化、最小化和关闭按钮
开发语言·c#
一苓二肆1 小时前
PUMA机械臂matlab仿真正逆解与路径规划
开发语言·matlab
Frank_refuel1 小时前
C++之继承
开发语言·c++
sunfove1 小时前
Python 自动化实战:从识图点击、模拟真人轨迹到封装 EXE 全流程教学
开发语言·python·自动化
傻啦嘿哟1 小时前
Python网页自动化操作全攻略:从入门到实战
开发语言·python·自动化