多情况下我们需要用到矩阵,并且需要使用它的逆,下面介绍一下一种求矩阵逆的方法及实现,该方法取自《运筹学(第三版)》,有兴趣大家可以参考一下,若有错误,也希望大家指正。
设矩阵
A=
a11 | a12 | … | a1m |
a21 | a22 | … | a2m |
… | … | … | … |
am1 | am2 | … | amm |
求其逆矩阵可以从第一列开始,
P1=
a11 |
a21 |
… |
am1 |
以a11为主元变换为
1/a11 |
-a21/a11 |
… |
-am1/a11 |
,然后构造含有该列但其他列均为单位列的矩阵
E1=
1/a11 | 0 | … | 0 |
-a21/a11 | 1 | … | 0 |
… | … | … | … |
-am1/a11 | 0 | … | 1 |
则有E1P1=
1 |
0 |
… |
0 |
且E1A=
1 | a(1)12 | … | a(1)1m |
0 | a(1)22 | … | a(1)2m |
… | … | … | … |
0 | a(1)m2 | … | a(1)mm |
然后再以第二列的a(1)22 为主元变换为
-a(1)12/a(1)22 |
1/a(1)22 |
… |
-a(1)m2/a(1)22 |
然后如同第一步一样构造E2,计算出E2E1A,此时第一二列成为单位列,如此一步步进行,直到Em…E2E1A为单位矩阵
可求得逆矩阵A-1为Em…E2E1
下面即是我自己实现的方法,使用了面向对象的方法:
学习运筹学时候实现的,在此贴出来,希望大家能与我交流(别扔砖头啊)^_^!