最近編寫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的逆=三分之一,再乘以5.
2. a/b=a*(inv(b)) (a右除b等於a乘以b的逆)
>> 3/5
ans =
0.6000
在傳統的matlab 演算法中 右除是先計算矩陣的逆再相乘(matlab 6以前),而左除則不需要計算逆矩陣直接進行相除。通常右除要快 一點,但左 除可避免被矩陣的奇異性帶來的麻煩。
比如下面的例子:
>> g
g = 1 2
>> p
p =1 1
>> y=g*p
y = 3
>> g\y %左除,結果不是p,但也滿足方程。所以 g\y 結果不一。
ans =
01.5000
>> g*m
ans =
2 %結果也為3
%%%%%%%%%%%%%%%%%%%%%%%%matlab 6.0 以後右除也可以了,不在先inv(p)。
>> y/p
ans =
3 0
>> e=y/p
e = 3 0
>> e*p
ans =
3>> p
p = 1
1但如果inv(p) 就會出現
??? error using ==> inv
matrix must be square.
在看矩陣可逆情況:
>> a
a = 1 2
2 1
>> b
b = 1 2
2 3
>> c=a*b
c = 5 8
4 7
>> c/b %%%= a
ans =
1 2
2 1
>> a\c %%%=b
ans =
1 2
2 3
>> c*inv(b) %% c/b=c*(inv(b)) (c右除b等於c乘以b的逆)
ans =
1 2
2 1
>> inv(a)*c %%驗證了a\c=inv(a)*c (a左除c=a的逆乘以c)
ans =
1.0000 2.0000
2.0000 3.0000
總結:為了方便記憶對哪個矩陣進行逆運算,規律如下:
在可逆形式下轉換成逆矩陣,右除對右邊矩陣逆,左除對左邊矩陣逆。
1. c/b=c*(inv(b)) (c右除b等於c乘以b的逆)
2. a\c=inv(a)*c (a左除c=a的逆乘以c)
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中有個很有意思的運算子,那就是左除和右除 這裡有個簡單的記憶方法 先想,有根棍子,然後左除是 右除是 你就想左除了棍子向左邊倒了 右除就是向右邊倒了 這樣應該比較好記,下面說說使用吧。先是左除。用乙個簡單的線性方程組說明 ax b 則x a b,如 a 0 7 5 0 4 7 4 3 7...
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的逆矩...