線性方程組是線性代數(shù)中的重要內(nèi)容之一,其理論發(fā)展的最為完善。MATLAB中包含多種處理線性方程組的命令,下面進(jìn)行詳細(xì)介紹。
對(duì)于形如AX=B的方程組來(lái)說(shuō),假設(shè)其系數(shù)矩陣A是m×n的矩陣,根據(jù)其維數(shù)可以將方程組分以下3種情況。
1)若m=n,則為恰定方程組,即方程數(shù)等于未知量數(shù)。
2)若m>n,則為超定方程組,即方程數(shù)大于未知量數(shù)。
3)若m<n,則為欠定方程組,即方程數(shù)小于未知量數(shù)。
線性方程組解的類型也可以分為以下3種情況。
1)若rank(A)= rank( [ A | B])≥n,則方程組有唯一解。
2)若rank( A)= rank([A| B])<n,則方程組有無(wú)窮解。
3)若rank(A )≠rank([A|B]),則方程組無(wú)解。
不難看出,線性方程組解的類型是由對(duì)應(yīng)齊次方程組的解、對(duì)應(yīng)系數(shù)矩陣和增廣矩陣間的關(guān)系共同決定的。
非齊次線性方程組AX=B解的形式可以描述如下。
1)使用null 函數(shù)求解對(duì)應(yīng)非齊次線性方程組AX=B對(duì)應(yīng)的齊次方程組AX=0的基礎(chǔ)解系,也可以稱為通解,則AX=B的解都可以通過(guò)通解的線性組合表示。
2)求解非齊次線性方程組AX=B的特解。
3)最后求得非齊次線性方程組AX=B解的形式為通解的線性組合加上特解。下面介紹 MATLAB中求解線形方程組的方法。
除法求解方法
若線性方程組AX=B的系數(shù)矩陣可逆,則A \B給出方程組的唯一解。
例1:使用除法求解系數(shù)矩陣可逆的恰定線性方程組。
在命令行窗口中輸入如下語(yǔ)句。
>>A=pascal(4) %A為四階可道矩陣
det_A =det(A) %計(jì)算矩陣A的行列式
B= rand(4,1) %隨機(jī)生成4行1列的矩陣B
X1=A\B %求出方程唯一解
X2 =in(A) *B %A\B等價(jià)于inv(A)*B
命令行窗口中的輸出結(jié)果如下。
A=
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
det_A=
1.000
B=
0.8147
0.9058
0.1270
0.9134
X1=
-2.5813
9.1360
-8.1751
2.4351
X2=
-2.5813
9.1360
-8.1751
2.4351
若線性方程組AX=B的系數(shù)矩陣不可逆,則方程組的解不存在或者不唯一。此時(shí)執(zhí)行A\B,則 MATLAB會(huì)顯示提示信息,表示該矩陣是奇異矩陣,無(wú)法得到精確的數(shù)值解。
例2:使用除法求解欠定線性方程組。
在命令行窗口中輸入如下語(yǔ)句。
>>C= magic(4);
A=C(2;4,:)
B=[ 0;1;0];
X=A\B
命令行窗口中的輸出結(jié)果如下所示。
A=
5 11 10 8
9 7 6 12
4 14 15 1
X=
0.2475
-0.0662
0
-0. 0637
例3:使用除法求解超定線性方程組。在命令行窗口中輸入如下語(yǔ)句。
>>T=magie(5)
A=T(:,2:5)
B=[0;0;1 ;0;0];
X=AIB
命令行窗口中的輸出結(jié)果如下所示。
T=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
A=
24 1 8 15
5 7 14 16
6 13 20 22
12 19 21 3
18 25 2 9
X=
-0.0222
0. 0060
0.0034
0.0303
求逆求解方法
在例1中,已經(jīng)介紹了通過(guò)求逆的方法求解線性方程組的解,這里著重介紹利用偽逆方法求解。對(duì)于方程組而言,其系數(shù)矩陣可能是方陣但不可逆,也可能不是方陣,無(wú)論上述兩種情況的哪一種都將導(dǎo)致它的逆不存在或無(wú)意義,此時(shí)就需要引入偽逆的概念。
偽逆矩陣包含很多種形式(具體情況請(qǐng)參考矩陣的有關(guān)書籍),下面介紹最常用的基于
最小二乘的最優(yōu)偽逆。MATLAB使用pinv函數(shù)來(lái)實(shí)現(xiàn),即可以使用矩陣A的偽逆矩陣pinv(A)來(lái)得到方程的一個(gè)解,其對(duì)應(yīng)的數(shù)值解為pinv( A) * B。
例4使用偽逆矩陣的方法求解奇異矩陣線性方程組的解。
在命令行窗口中輸人如下語(yǔ)句。
>>A=[ 1 5 8;-135;174];
B=[3;6;9];
X= pinv(A)* B
C=A*X
命令行窗口中的輸出結(jié)果如下所示。
X=
-2.6897
1. 9655
-0. 5172
C=
3.0000
6.0000
9. 0000
從例題中的輸出結(jié)果可以看出,通過(guò)使用偽逆矩陣的方法可以求解得到數(shù)值解,同時(shí)該數(shù)值解可以精確地滿足預(yù)期結(jié)果。
上面的例子都是介紹如何計(jì)算特解,下面介紹如何計(jì)算線性方程組的所有解。
例5使用求逆法計(jì)算線性方程組的所有解。
在命令行窗口中輸入如下語(yǔ)句。
>>A=[1 3 5 7;2 4 6 8;9 10 11 12];
B=[1;2;3];
X1=null(A)
X2 = pinv(A)*B
命令行窗口中的輸出結(jié)果如下所示。
X1=
0.5336 -0.1237
-0.6193 0.5626
-0.3622 -0.7542
0.4479 0.3153
X2=
0.0344
0.0579
0.0814
0.1049文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-415675.html
此時(shí)線性方程組的所有解為X=a×X1( :,1 )+b×X2 ,( :,2)+X2,其中a、b為任意實(shí)數(shù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-415675.html
到了這里,關(guān)于MATLAB-線性方程組求解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!