matlab中有個很有意思的運算子,那就是左除和右除
這裡有個簡單的記憶方法:
先想,有根棍子,|
然後左除是\,右除是/
你就想左除了棍子向左邊倒了(\),右除就是向右邊倒了(/),這樣應該比較好記,
下面說說使用吧。
先是左除。
用乙個簡單的線性方程組說明:
ax=b
則x=a\b,如:
>> a=[0 -7 5;0 4 7;-4 3 -7];
>> b=[50 -30 40]';
>> x=a\b
x =-15.1812
-7.2464
-0.1449
相當於在方程的左右兩邊同時乘以了inv(a),左乘逆矩陣,就是左除了。
那麼和x=inv(a)*b有什麼區別呢?
我不知道,不過根據moler(對,就是matlab的主要發明者)先生的建議,盡量使用左除,而不是inv函式,理由嘛,可能是具有更好的數值穩定性吧,不過具體是什麼,你自己去問他吧。
根據相關資料,matlab會根據矩陣a的形式判斷,如果a具有(1)稀疏和帶狀 (2)三角(或者簡單變換能轉化為三角形式)(3)對稱,則使用對應的高效演算法,例如帶狀求解器、向後和向前回代,楚列斯基分解等。如果不滿足上述條件,再使用完整的高斯消元過程。
類似的,右除就很容易理解了,其實相當於右乘逆矩陣,例如:
a =
0 -7 5
0 4 7
-4 3 -7
b =1 3 2
5 1 -2
4 4 1
>> c=a*b
c =-15 13 19
48 32 -1
-17 -37 -21
那麼求a,可以使用c*inv(b),使用右除就是:
>> c/b
ans =
0 -7.0000 5.0000
0 4.0000 7.0000
-4.0000 3.0000 -7.0000
MATLAB中矩陣左除 右除和求逆的關係
matlab提供了兩種除法運算 左除 和右除 一般情況下,x a b是方程a x b的解,而x b a是方程x a b的解。例 a 1 2 3 4 2 6 7 4 9 b 4 1 2 x a b 則顯示 x 1.5000 2.0000 0.5000 如果a為非奇異矩陣,則a b和b a可通過a的逆矩...
MATLAB 之 (左除) (右除)
最近編寫matlab 程式老是被 搞混淆。運算子 名稱 說明 向右倒稱為右除 右除 ab c a c b 向左倒稱為左除 左除 ab c b a c b a 就是對應線性方程b x a 的解。左除 右除 1.a b inv a b a左除b a的逆乘以b 3 5 ans 1.6667 3的逆 三分之...
MATLAB 之 (左除) (右除)
最近編寫matlab 程式老是被 搞混淆。運算子 名稱 說明 向右倒稱為右除 右除 ab c a c b 向左倒稱為左除 左除 ab c b a c b a 就是對應線性方程b x a 的解。左除 右除 1.a b inv a b a左除b a的逆乘以b 3 5 ans 1.6667 3的逆 三分之...