![](/img/trans.png)
[英]matlab and octave operator precedence of mldivide: a*A\b gives (a*A)^-1*b instead of a*inv(A)*b
[英]inv(A)*B vs A\B - Why this weird behavior in MatLab?
讓我們創建兩個隨機矩陣,
A = randn(2)
B = randn(2)
inv(A)*B
和A\B
都給出相同的結果
inv(A)*B
A\B
ans =
0.6175 -2.1988
-0.7522 5.0343
ans =
0.6175 -2.1988
-0.7522 5.0343
除非我乘以某個因素。 為什么是這樣?
.5*A\B
.5*inv(A)*B
ans =
1.2349 -4.3977
-1.5045 10.0685
ans =
0.3087 -1.0994
-0.3761 2.5171
這很煩人,因為 MatLab 總是讓我使用A\B
而不是inv(A)*B
並且我花了好幾年才弄清楚為什么我的代碼不起作用。
當A
是非奇異矩陣時,則inv(A) * B = A \ B
。
您的計算如下: .5 * A\B = (0.5 * A) \ B
vs .5* inv(A) * B = 0.5 * (A\B)
。 因此,它會給你帶來不平等的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.