在Matlab中检查给定原始矩阵和修改矩阵的行切换

在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,然后你交换行直到你得到矩阵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
   -1.0000   -1.0000    2.0000
    5.0000    3.0000   -7.0000

如何记录这些行开关?。我最终试图改变B的倒数,使之与A的倒数相匹配。我的结论是,给定两行切换(即在第1行和第2行之间切换),倒数的最终结果将是相同的,除了切换倒数B的(1和2)的列。

这是一个相当基本的代数问题。
您可以将矩阵
B
写成a
P
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
矩阵的逆矩阵。