|
MATLAB中有個(gè)很有意思的運(yùn)算符,那就是左除和右除 先不告訴你怎么寫,自己寫寫看,許多人都容易寫反,或者寫對(duì)了,但是也拿不準(zhǔn)。
這里有個(gè)簡(jiǎn)單的記憶方法:
先想,有根棍子,|
然后左除是\,右除是/
你就想左除了棍子向左邊倒了(\),右除就是向右邊倒了(/),這樣應(yīng)該比較好記,
或者有學(xué)習(xí)機(jī)械的同學(xué),你就把他們理解為螺栓上的螺紋,左旋的就是左除(\)右旋的就是右除(/)
哈哈。
下面說說使用吧。
先是左旋,呃,不左除。
用一個(gè)簡(jiǎn)單的線性方程組說明:
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
相當(dāng)于在方程的左右兩邊同時(shí)乘以了inv(A),左乘逆矩陣,就是左除了。
那么和X=inv(A)*b有什么區(qū)別呢?
我不知道,不過根據(jù)Moler(對(duì),就是MATLAB的主要發(fā)明者)先生的建議,盡量使用左除,而不是inv函數(shù),理由嘛,可能是具有更好的數(shù)值穩(wěn)定性吧,不過具體是什么,你自己去問他吧。
根據(jù)相關(guān)資料,MATLAB會(huì)根據(jù)矩陣A的形式判斷,如果A具有(1)稀疏和帶狀
(2)三角(或者簡(jiǎn)單變換能轉(zhuǎn)化為三角形式)(3)對(duì)稱,則使用對(duì)應(yīng)的高效算法,例如帶狀求解器、向后和向前回代,楚列斯基分解等。如果不滿足上述條件,再使用完整的高斯消元過程。
類似的,右除就很容易理解了,其實(shí)相當(dāng)于右乘逆矩陣,例如:
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
|
|
|