gpt4 book ai didi

matlab - 精度 Matlab 的斜线矩阵运算符

转载 作者:行者123 更新时间:2023-12-04 19:36:53 24 4
gpt4 key购买 nike

假设我们有这 3 个矩阵:

A=[1 3; 2 2];    B=[4 5; 1 3];     C=[0 2; 2 1]

通常,我尽量避免使用 inv() 或 A^(-1) 并尝试使用正斜杠和反斜杠运算符。但是如果我想计算以下内容:

A*B^(-1)*C

哪种方式最好:

A/B*C

A*(B\C)

虽然两者都使用斜杠运算符并且没有计算“显式逆”,但结果是不同的,有趣的是,A*(B\C) 的计算结果与我试图避免的结果相同,即

A*inv(B)*C

作为

isequal(A*(B\C),A*inv(B)*C)

显示。谁能解释这里发生了什么以及我应该走哪条路?谢谢!

最佳答案

MATLAB 在 mldivide 背后有一些重要的策略:请参阅 documentation 的算法部分.我可以想象它决定大小为 2×2 的逆矩阵是求解的最快方法,因此它调用 inv 并因此显式计算 B 的逆矩阵。对于较大的矩阵,情况并非如此,如果我选择大小为 4×4 的随机矩阵,执行 isequal-sentence 会返回 false。

无论如何,“最佳”方法在很大程度上取决于您的矩阵 ABC


经过一些测试,我发现A*inv(B)*C总是比A*(B\C)花费更多的时间,这意味着它可以也只是一个机器精度的东西(见 Dang Khoa 的有用评论)。不过,对于 mldividemrdivide 而言,没有单一的“最佳”方法。

关于matlab - 精度 Matlab 的斜线矩阵运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com