使用最小二乘时尚matlab求解下三角矩阵
solving lower triangular matrix using least square fashion matlab
请问在Matlab中用以下两种方式求解x
的区别:
方式一:x = A\b
方式二:x = inv((A.').*A)*(A.'*b)
(p.s:逆矩阵可逆)
我认为这两种方式应该给出相同的结果,但我无法实现这种匹配。我想应用最小二乘时尚。然而,它包括许多不同类型的矩阵(转置、反转然后是多个)并且在使用 Matlab 语言编写时,我感到困惑。请大家帮我指出方法2中错误的地方。
非常感谢您的意见!
最小二乘公式,即
拼写错误。在后者 b<-->y
而 p<-->x
.
在 inv()
函数中,A.'
和 A
之间的乘积不是元素级乘积。
此外,根据 PEMDAS 规则,将 A.'
和 b
加入括号内是不正确的,相对于前者,给予此类术语优先权。
综上所述,LS的Matlab公式为:
x=inv((A.')*A)*(A.')*b;
最后,您还可以通过计算 Moore-Penrose Pseudoinverse 的 pinv()
函数简化上述公式,即 inv((A.')*A)*(A.')
。实际上 pinv(A)
会导致与 inv((A.')*A)*(A.')
相同的结果,因此您可以将 LS 解决方案重写为
x=pinv(A)*b;
请问在Matlab中用以下两种方式求解x
的区别:
方式一:x = A\b
方式二:x = inv((A.').*A)*(A.'*b)
(p.s:逆矩阵可逆)
我认为这两种方式应该给出相同的结果,但我无法实现这种匹配。我想应用最小二乘时尚。然而,它包括许多不同类型的矩阵(转置、反转然后是多个)并且在使用 Matlab 语言编写时,我感到困惑。请大家帮我指出方法2中错误的地方。
非常感谢您的意见!
最小二乘公式,即
拼写错误。在后者 b<-->y
而 p<-->x
.
在 inv()
函数中,A.'
和 A
之间的乘积不是元素级乘积。
此外,根据 PEMDAS 规则,将 A.'
和 b
加入括号内是不正确的,相对于前者,给予此类术语优先权。
综上所述,LS的Matlab公式为:
x=inv((A.')*A)*(A.')*b;
最后,您还可以通过计算 Moore-Penrose Pseudoinverse 的 pinv()
函数简化上述公式,即 inv((A.')*A)*(A.')
。实际上 pinv(A)
会导致与 inv((A.')*A)*(A.')
相同的结果,因此您可以将 LS 解决方案重写为
x=pinv(A)*b;