【问题标题】:Checking which rows switched given an original and an altered matrix in Matlab在 Matlab 中检查给定原始矩阵和更改矩阵的行切换
【发布时间】:2014-08-17 07:05:32
【问题描述】:

一段时间以来,我一直在尝试解决这个问题,并希望获得一些见解。 假设你有矩阵 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 的倒数。我的结论是,给定 2 行切换(也就是在第 1 行和第 2 行之间),除了切换 列。

【问题讨论】:

    标签: matlab matrix permutation linear-algebra matrix-inverse


    【解决方案1】:

    这是一道相当基本的代数题。
    你可以把你的矩阵B写成permutation matrixPA的乘积:

    B = PA;
    

    (在您的示例中:P = [0 1 0;1 0 0;0 0 1];)。
    现在你可以反转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 并显式地对矩阵 it is un-recommended to use inv function 进行数值反转时。

    【讨论】:

    • 哦,排列很有趣。它们是我不熟悉的东西。你是怎么想出第一部分的排列的?你改变 A 的逆矩阵的最终结果是原始矩阵吗?
    • @user3509716 请阅读linked wiki page about permutation matrices 这将为您提供基础知识并为进一步阅读提供指导。我的答案中的inv(A) 是原始A 矩阵的逆矩阵。
    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多