田睿
【摘要】一般線性方程組的性質(zhì)和其求解方法是基礎(chǔ)數(shù)學(xué)領(lǐng)域下代數(shù)分支的基本內(nèi)容,在其解的研究發(fā)展中產(chǎn)生了矩陣、秩以及行列式等概念。本文圍繞線性方程組的求解,從解的存在定理、解的三種基本解法等理論研究到手動(dòng)求解。再?gòu)氖謩?dòng)求解到利用軟件進(jìn)行求解做了一系列系統(tǒng)的探究,其中軟件部分是針對(duì)MATLAB,Python的實(shí)際應(yīng)用。
【關(guān)鍵詞】線性方程組 ?解的存在定理 ?三種解法 ?Matlab ?Python
【中圖分類號(hào)】G633.6 【文獻(xiàn)標(biāo)識(shí)碼】A 【文章編號(hào)】2095-3089(2018)42-0143-03
線性方程組及其解法涉及到秩、矩陣、行列式、向量等高階線性代數(shù)的基本概念,是線性代數(shù)的基本內(nèi)容。本篇論文中研究的線性方程組及其解法是我們小學(xué)、初高中線性方程組解法的更高階的知識(shí)擴(kuò)充,是用矩陣和行列式等概念將方程組本身和它的解的結(jié)構(gòu)抽象出來,從簡(jiǎn)單的解具體線性方程組的現(xiàn)象中提煉出求解步驟的本質(zhì)規(guī)律的過程。本篇論文從理論入手,介紹了線性方程組的定義,深入地研究了線性方程組的三種解法及其相互對(duì)比,然后用手動(dòng)求解具體案例的方法加以應(yīng)用,最后研究總結(jié)了如何利用Matlab和Python軟件進(jìn)行求解線性方程組。
1.線性方程組解的相關(guān)定義
1.1線性方程組及矩陣
一般線性方程組的形式為:
a11x1+a12x2+…+a1nxn=b1a21x1+a22x2+…+a2nxn=b2……am1x1+am2x2+…+amnxn=bm ? ? ? (1)
其中x1,x2,…,xn是n個(gè)未知量(也稱為“元”),其余都為常數(shù)項(xiàng)。
線性方程組(1)的系數(shù)矩陣記為:
A=■
線性方程組(1)的增廣矩陣記為:
■
當(dāng)b1,b2,…,bm全都等于0時(shí)所對(duì)應(yīng)的方程組稱為(1)的導(dǎo)出組。
1.2矩陣的乘法
兩個(gè)矩陣相乘依然得出一個(gè)矩陣,且定義規(guī)定兩個(gè)矩陣能夠相乘當(dāng)且僅當(dāng)矩陣一的列數(shù)和等于矩陣二的行數(shù),即設(shè)m、n、p均為常數(shù),那么形狀為m?鄢n與 n?鄢p的兩個(gè)矩陣可以相乘,并且按照如下規(guī)則進(jìn)行計(jì)算:
(AB)ij=■aikbkj=ai1b1j+ai2b2j+…+aipbpj
例如:
若A=■ B=■
則C=AB=■
2.線性方程組的求解方法
2.1高斯消元法
高斯消元法的本質(zhì)是不斷的利用三種初等變換對(duì)線性方程組進(jìn)行消元,最后使得方程組呈現(xiàn)階梯型。其中初等變換總共分為三種:
(1)讓方程乘以一個(gè)非0的數(shù)
(2)兩個(gè)方程相加
(3)互換兩個(gè)方程的位置
其中基于的原理為:對(duì)方程組進(jìn)行以上三種初等變換本質(zhì)上只是對(duì)未知數(shù)前的系數(shù)進(jìn)行乘法和加法,不會(huì)使得方程組的解有變化。根據(jù)最后所得的階梯型矩陣的具體情況可知線性方程組的解分為三種情況:
(1)無解。若所得梯形方程組為:
c11x1+c12x2+…+c1rxr+…+c1nxn=d1, ? ? ? c22x2+…+c2rxr+…+c2nxn=d2, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?…… ? ? ? ? ? ? ? ? ? ?crrxr+…+crnxn=dr, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0=dr+1, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0=0, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? …… ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0=0.
其中d1,d2…dr,dr+1均不為零,由于0等于非0的數(shù)始終不成立,所以方程組無解。
(2)有唯一解:
若所得階梯方程組為:
c11x1+c12x2+…+c1nxn=d1, ? ? ? c22x2+…+c2nxn=d2, ? ? ? ? ? ? ? ? ? ? ?…… ? ? ? ? ? ? ? ? ? cnnxn=dn.
最終仍有n個(gè)非0的方程,那么通過xn=dn/cnn層層倒推可得出相應(yīng)唯一的一組xn-1,…,x2,x1。
(3)有無數(shù)組解:
若所得階梯方程組為:
c11x1+c12x2+…+c1rxr+c1r+1xr+1+…+c1nxn=d1, ? ? ? c22x2+…+c2rxr+c2r+1xr+1+…+c2nxn=d2, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? …… ? ? ? ? ? ? ? ? ? ?crrxr+crr+1xr+1+…+crnxn=dn.
此時(shí)r<n,可將任意一組滿足條件的xr,xr+1,…xn帶入第r個(gè)方程,再將第r個(gè)方程分別帶入前r-1個(gè)方程,可分別求出一組x1,x2…xr-1。因?yàn)榭烧业綗o數(shù)組滿足第r個(gè)方程的xr,xr+1…xn,所以線性方程組有無數(shù)組解。
綜上所述,
(1)若r(A)≠ r([A,b]),則無解(其中r代表秩);
(2)若r(A)=r([A,b])=n,則有唯一解,
(3)若r(A)≠r([A,b])<n,則有無數(shù)解。
容易證明,在第情況(3)下,該方程組任意一個(gè)解,都可以用該線性方程組的一個(gè)特解及其導(dǎo)出組的基礎(chǔ)解系刻畫。
2.2 Cramer法則
行列式在數(shù)學(xué)中是一個(gè)函數(shù),自變量是正方形矩陣,輸出的是一個(gè)數(shù),記作det(A)或 | A | 。
Cramer法則即:若| A |≠0,則方程組有唯一解。且| A |≠0時(shí),方程組的唯一解有如下具體的計(jì)算公式:
x1=■,x2=■,…,xn=■
其中dj 是把矩陣A中第j 列換成方程組的常數(shù)項(xiàng) b1,b2,…所成的矩陣的行列式,即
dj=■,j=1,2,…,n.
2.3 逆矩陣法
逆矩陣:設(shè)A、B均為方陣,若A?鄢B=E(其中E為單位矩陣),則B和A互為逆矩陣。
對(duì)于方程組
a11x1+a12x2+…+a1nxn=b1a21x1+a22x2+…+a2nxn=b2……am1x1+am2x2+…+amnxn=bm
A=■ X=■ B=■
翻譯成矩陣的“語(yǔ)言”,上式等價(jià)于AX=B,若A的逆矩陣存在,左右兩邊同時(shí)乘以A-1,則等式變?yōu)閄=A-1B,從而得到了方程組的解。因此只要求得矩陣A的逆矩陣便可求得方程租的解,可用如下方法求得逆矩陣:
行初等變換法求逆矩陣:
A=■
E=■(E共有n行n列)
(A|E)=■
對(duì)(A|E)進(jìn)行初等變換,并將左邊化為單位矩陣,那么與之得出的對(duì)應(yīng)的右邊部分即為A-1,即得到(E| A-1):
(E|A∧(-1))=■
則A的逆矩陣為:
A∧(-1)=■
由此可求得方程組的解。
2.4 線性方程組三種解法對(duì)比及聯(lián)系
(1)高斯消元法的缺點(diǎn)
不適用于未知數(shù)多或方程個(gè)數(shù)多的情況,過于繁瑣。
(2)若A為方陣,可先用Cramer法則確定線性方程組是否有唯一解后,再選擇用或不用高斯消元法求解。
若| A |=0,則可用高斯消元法求得方程組唯一解。
若| A |≠0,則方程組無解或有無數(shù)組解。此時(shí),當(dāng)r<n時(shí),方程組有無數(shù)組解;反之無解。
(3)Cramer法則缺點(diǎn)
①求解效率較低。
②當(dāng)| A |=0時(shí),不能確定是無解還是有無窮多組解。
③只適用于n?鄢n的矩陣。
2.5 三種解法的實(shí)際運(yùn)用舉例
x1-2x2+3x3-4x4=4x2-x3+x4=-3x1+3x2+x4=1-7x2+3x3+x4=-3
(1)高斯消元法
■→■→■ 由此方程組化為:
x1-2x2+3x3-4x4=4 ? ? ? x2-x3+x4=-3 ? ? ? -x3+2x4=-6 ? ? ? ? ?-2x3=-12→x1=-8x2=3x3=6x4=0
(2)Cramer法則
系數(shù)矩陣的行列式=■
=■+2■+3■+4■
=(0-3+7+3-0+9)+2(0-0+0+1-0+3)+3(0-0+0-1-0-7)+4(0-0+0-3-0+7)=16+8-24+16=16≠0,因此有唯一解
d=16
d1=■=■-3■-■
=(2+6+3+21+28-12)-3(-4-12-9+9+12+36)-(12-28+18+6+9+63)=48-96-80=-128
d2=■=■-4■+3■+4■
=(0+9+1+3+3+0)-4(0+0+1+0+0+3)+3(0+0+3+0+0+3)+4(0+0+9+0+0+3)=16-16+18+48=66
d3=■=96 d4=■=0
x1=d1/d=-8x2=d2/d=3x3=d3/d=6x4=d4/d=0
(3)逆矩陣乘積法
(A|E)=■→■ →■→■→■
因此A^(-1)=■
X= A^(-1)B=■ ■=■
x1=-8x23x3=6x4=0
3.利用軟件求解線性方程組
3.1 利用MATLAB進(jìn)行求解
方法一:X=A\b
對(duì)m×n的線性方程組,用函數(shù)rank()查看A和(A,b)的秩,
(1)若rank(A)= rank (|A,b|)=n,則X=A\b輸出方程的唯一解。
(2)若rank (A)= rank (|A,b|)<n,方程組有無數(shù)組解,此時(shí)X=A\b的輸出結(jié)果為方程租的一個(gè)特解,需進(jìn)一步用null(A)或null(A.‘r)(其中r為A的秩)找到方程組的基礎(chǔ)解系。
(3)若rank (A) ≠rank (|A,b|),此時(shí)輸出結(jié)果為空。
方法二:X=inv(A)?鄢b
此方法為逆矩陣法。適用于m=n=rank (A)的情形。
方法三:X=pinv(A)?鄢b
適用于無解的情形,輸出的為近似解。
方法四:用Cramer法則直接帶入行列式公式(行列式用det()函數(shù)),適用于有唯一解的情況。
3.2利用Python進(jìn)行求解
利用sympy包中的solve函數(shù):
示例:
from sympy import?鄢
a=Matrix([[1,1,3],[1,2,4]]) #定義系數(shù)矩陣
b=Matrix([[1,2]]) ? #定義等號(hào)右邊常數(shù)向量
x=symarray(‘x,3) ?#定義未知數(shù)個(gè)數(shù)
solve(a?鄢x-b)
若結(jié)果為空,則方程組無解;
若結(jié)果為常數(shù)解,則其為唯一的解;
若結(jié)果帶有自由變量,類似于{x_0:-2x_2,x_1:-x_2+1},則方程組有無數(shù)組解。
參考文獻(xiàn):
[1]夏磊.線性方程組的解法探討及MAPLE實(shí)現(xiàn)[J].淮南職業(yè)技術(shù)學(xué)院學(xué)報(bào),2017(6):74-77
[2]曾振新.關(guān)于線性變換乘法和矩陣乘法[J].數(shù)學(xué)學(xué)習(xí)與研究,2016,19:149-151
[3]王萼芳,石生明.高等代數(shù)[M].北京:高等教育出版社,2003:178-179
[4]肖瀅.逆矩陣的判定及計(jì)算方法[J].高等數(shù)學(xué)研究,2016(4):73-76
[5]陳永勝,劉洋萍.基于MATLAB求解非齊次線性方程組[J].赤峰學(xué)院學(xué)報(bào).2009(10):1-2