MATLAB 之 (左除) (右除)

2021-06-03 02:15:31 字數 1818 閱讀 9148

最近編寫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的逆矩...