如何理解公式 c=A(i:j,:)*inv(A)*b.



我正在尝试理解公式

c=A(i:j,:)*inv(A)*b

哪里i,j=1:length(A).假设 A 是可逆

上面的公式允许我们将索引 i 中的所有元素复制到向量 b 中的索引j。我还通过 matlab 代码实现了它,如以下代码所示。但是,我不清楚为什么上面的公式允许我们在向量b中复制元素。让我们看看我的公式和我的实现,请解释帮助我吗?非常感谢当我在 matlab 中实现时,代码是

A =[ 10     1     7    10     9;
     3     9     3     1     2;
     9     2     3     5     4;
     1     2     8     6     1;
     5     2     6     6    10]
b =[ 8;
     5;
     8;
    10;
     6]

然后c=A(3:5,:)*inv(A)*b=[8;10;6]结果看起来像c=b(3:5,:);

更多扩展:假设 D 是矩阵 4 x 5,其中从第 3 行到第 5 行创建第 1 行到第 3 行。D 的最后一行是 1。那么上面的公式是

c(1:4,:)=D*inv(A)*b=[8;10;6;1.12]...

它还复制向量 b 的第 3 到 5 个元素

对于可逆矩阵A代码c = A(i:j,:)*inv(A)*b(最多数值误差)等价于:

tmp = A*inv(A)*b;
c = tmp(i:j);

矩阵乘积A*inv(A)将相互抵消(就像123*(1/123)或更普遍地x*(1/x) x~=0一样),(再次:对于数值误差的可逆矩阵),因此它等价于:

tmp = b;
c = tmp(i:j);

真的没有理由做上述任何一件事,你只会引入数值误差,它甚至不能正确工作在奇异矩阵上!只需改用c = b(i:j)即可。

相关内容

  • 没有找到相关文章

最新更新