在Matlab中检查给定原始矩阵和修改矩阵的行切换
有一段时间我一直在想这个问题,希望能得到一些见解。 假设你有矩阵A,然后你交换行直到你得到矩阵B在Matlab中检查给定原始矩阵和修改矩阵的行切换,matlab,matrix,permutation,linear-algebra,matrix-inverse,Matlab,Matrix,Permutation,Linear Algebra,Matrix Inverse,有一段时间我一直在想这个问题,希望能得到一些见解。 假设你有矩阵A,然后你交换行直到你得到矩阵B A = [1 3 1; 3 2 1; 2 3 1;]; B = [3 2 1; 1 3 1; 2 3 1;]; invA = 0.0000 -1.0000 1.0000 -1.0000 -1.0000 2.0000 3.0000 5.0000 -7.0000 invB = -1.0000 0.0000 1.0000
A = [1 3 1;
3 2 1;
2 3 1;];
B = [3 2 1;
1 3 1;
2 3 1;];
invA =
0.0000 -1.0000 1.0000
-1.0000 -1.0000 2.0000
3.0000 5.0000 -7.0000
invB =
-1.0000 0.0000 1.0000
-1.0000 -1.0000 2.0000
5.0000 3.0000 -7.0000
如何记录这些行开关?。我最终试图改变B的倒数,使之与A的倒数相匹配。我的结论是,给定两行切换(即在第1行和第2行之间切换),倒数的最终结果将是相同的,除了切换倒数B的(1和2)的列。这是一个相当基本的代数问题。
您可以将矩阵
B
写成aP
和a
的乘积:
B = PA;
(在您的示例中:p=[01;10;01];
)。现在您可以反转
B
:
inv( B ) = inv( PA )
乘积的倒数是
= inv(A) * inv(P)
由于矩阵p
是一种排列矩阵:inv(p)=p.
。因此
= inv(A) * P.'
也就是说,inv(B)=inv(A)*p.
这意味着您将排列p
应用于inv(A)
的列
请注意,排列p
可以表示行之间的多个切换,此外,排列可以是乘法以说明行的重复切换
一个重要的注释:我在这个答案中使用
inv
来表示矩阵的逆。但是,当运行Matlab并显式地对矩阵进行数值求逆时。噢,置换很有趣。它们是我不熟悉的东西。第一部分你是怎么想到你的建议的?最终结果是你改变了原始矩阵的倒数吗?@user3509716请阅读这篇文章,它将为你提供基础知识,并提供进一步阅读的指针<代码>库存(A)在我的回答中是原始A
矩阵的逆矩阵。