源自於http://bime-matlab.blogspot.com/2006/11/102.html
所謂線性方程式係指方程式中之變數僅屬一階者,其幕次不能大於一,且任何項中不得有兩變數相乘或相除之情形。在矩陣表示法上,通常採用[A][x]=[b]之型式,其解為[x]=[A]\[b]或[x]=[b]/[A]。
對於線性聯立方程式目前已經發展出許多種解法,其中包括變數迭代消去法及克雷蒙法(Creamer's Method)。目前MATLAB 所使用之解法則以變數迭代消去法為主,或稱為高斯(Gauss Elimination)消去法。這是利用兩線性方程式分別乘以某特定常數,使其與另一方程式之同一變數係數相同,因而兩式相減得以消除該變數。如此展轉消除,最後可以得聯立方程之解。茲舉例說明如下:
3x +4y =10
5x -2y =8
由上式整理之後,可得果為y = 1;代入原式任一式可得x = 2,終得解。如果利用第九章之繪圖指令可以繪出此兩條曲線,由其交點即可得到相同的解。
ezplot('3*x+4*y-10',[-10,10]);hold on
ezplot('5*x-2*y-8',[-10,10])
利用這樣的解法並不是解線性方程式之重點,因為線性代數方程式可用矩陣的型式表示,甚至以矩陣之乘除法可以得解。以上面之聯立線性方程式為例,可以化成AX=C之型式,設x=x1,y=x2:左除法求解
利用MATLAB求解時,只要用矩陣倒除即可,或稱為左除法。例如一組聯立方程式以矩陣表示為[A][X]=[C]時,其未知數項[X]可以利用MATLAB倒除的指令求得,即[X]=[A]\[C]:A=[3 4;5 -2];結果立即得到x1=2、x2=1。
C=[10;8];
X=A\C
X =
2
1
反矩陣法求解
解上式矩陣有時可用反矩陣法。反矩陣有倒數的意義,但在矩陣中必須為方矩陣,且須為非特異矩陣(non-singular)。通常用(-1)次方表示之,如A-1 。其基本特質為與原矩陣相乘後,將得到單位矩陣I:
A-1A=AA-1=I
以此乘於AX=C之兩側,可得:
A-1AX=A-1C 或A-1AX=IX=X= A-1C
在MATLAB反矩陣A-1 之求法為inv(A);I或稱為單位矩陣,表示為eye(A)。就上面之聯立方程式之解,可以用MATLAB演算如下:
A=[3 4;5 -2];
C=[10;8];
X=inv(A)*C
X =
2.0000
1.0000%範例:有一組聯立方程式如下: % 6x - 3y +5z = 12 % 10x + 4y -8z =-20 % -6x + 2y +3z = 15 A=[6 -3 5; 10 4 -8;-6 2 3] C=[12 ;-20; 15] x=A\C Y=inv(A)*C
A = 6 -3 5 10 4 -8 -6 2 3 C = 12 -20 15 x = 0.0479 2.1737 3.6467 Y = 0.0479 2.1737 3.6467
可用以反求C值,C=Ax,其結果也正確。
>> d=A*Y d = 12.0000 -20.0000 15.0000 >> D=A*x D = 12.0000 -20.0000 15.0000
沒有留言:
張貼留言