劉 娟 鄧凌峰
?
Matlab在線性方程組求解中的應用
劉娟鄧凌峰
(湖南科技學院 經濟與管理學院,湖南 永州 425199)
線性方程組的求解是線性代數教學的重點難點內容,學生在求解方程組的通解過程很容易在系數矩陣、增廣矩陣初等化簡為行最簡型時出現計算失誤,從而導致對方程組通解的求解錯誤。文章應用Matlab軟件實現齊次非齊次線性方程組的求解,便于學生在求解過程中的檢驗計算結果,以期提高學生理論結合實踐的動手解決問題能力。
線性方程組;解的結構;MATLAB
線性方程組的求解在整個線性代數的教學中非常重要。線性方程組的求解,通常采用初等變換方法求解線性方程組的通解,但是在求解過程中,存在計算難度大,計算容易出錯等問題,導致學生一步錯步步錯,不能很好的求出對應方程組的通解問題。Matlab軟件計算功能強大,可以提高學生對該門課的興趣,文章通過Matlab軟件求解線性方程組的解,以期提高學生的實踐動手能力。
齊次線性方程組的矩陣形式為,其中是×階矩陣,是維未知列向量[1]。
(1)維零向量是方程組的解;
在Matlab中,可以調用函數null(A,'r')來求出齊次線性方程組的解。下面給出兩個實例[2]。
解:程序為
A=[1 1 1 1 1;3 2 1 1 -3;0 1 2 2 6;5 4 3 3 -1];
B=null(A,'r')%線性方程組的有理數解
得到:B =
1 1 5
-2 -2 -6
1 0 0
0 1 0
0 0 1
再輸入:
syms k1 k2 k3; %定義符號參數
X=k1*B(:,1)+k2*B(:,2)+k3*B(:,3)
結果為
X =
k1 + k2 + 5*k3
- 2*k1 - 2*k2 - 6*k3
k1
k2
k3
解:程序為
A=[1 1 -1 1;1 2 -1 2;1 -1 1 -1;-3 2 3 1];
B=null(A, 'r')
結果為
B =
Empty matrix: 4-by-0
答:此齊次線性方程組只有零解。
注:克萊姆法則僅適用于未知數個數與方程個數相同的情況。
例題3 求下列非齊次線性方程組的通解(有唯一解的情形)。
解法一:逆矩陣法.程序為
A=[1 0 -1 1 ;3 0 2 1;2 -1 4 8;4 1 6 3];
b=[1 -1 0 0]';
C=[A,b];
rank(A)
rank(C)
D=det(A)
得到:ans =
4
ans =
4
D =
57
x=inv(A)*b
結果為
x =
-3/19
42/19
-32/57
34/57
解法二:克萊姆法則.程序為
A=[1 0 -1 1 ;3 0 2 1;2 -1 4 8;4 1 6 3];
b=[1 -1 0 0]';
D= det(A)
得到:D =
57
a1=[1 3 2 4]';
a2=[0 0 -1 1]';
a3=[-1 2 4 6]';
a4=[1 1 8 3]';
x1=det([b a2 a3 a4])/D;
x2=det([a1 b a3 a4])/D;
x3=det([a1 a2 b a4])/D;
x4=det([a1 a2 a3 b])/D;
X=[x1;x2;x3;x4]
結果為
x =
-0.1579
2.2105
-0.5614
0.5965
解法三:程序為
A=[1 0 -1 1 ;3 0 2 1;2 -1 4 8;4 1 6 3];
b=[1 -1 0 0]';
X=linsolve(A,b)
結果為
X =
-0.1579
2.2105
-0.5614
0.5965
解法一:程序為
A=[1 2 3 1;3 7 7 2;1 4 5 2];
b=[3;12;6];
C=[A b];
n=4;
[rank(A),rank(C)]
得到ans =
3 3
注:先判斷解的情況,rank(A)=rank(C)=3<4,方程有無窮多解.
B=null(A,'r')
x0=pinv(A)*b %或用x0=A
結果為
B =
0.5000
0
-0.5000
1.0000
x0 =
0.3333
2.0000
-0.3333
-0.3333
解法二:在Matlab中建立一個M文件:ex1如下
A=[1 2 3 1;3 7 7 2;1 4 5 2];
b=[3;12;6];
B=[A b];
n=4;
r1=rank(A);
r2=rank(B);
if(r1==r2&r1==n) %n為未知數個數,判斷是否有唯一解
X=A;
else if (r1==r2&r1 C=null(A, 'r') %求AX=0的基礎解系 x0=pinv(A)*b %求特解 else fprintf('方程組無解') %判斷是否無解 end end 輸入命令:ex1 結果為 C = 0.5000 0 -0.5000 1.0000 x0 = 0.3333 2.0000 -0.3333 -0.3333 答:非齊次線性方程組的通解為: ,其中為任意常數。 例題5求非齊次線性方程組 解:程序為: A=[1 1 1 1;0 1 -1 2;2 3 1 4;3 5 1 7]; b=[1 1 4 5]'; C=[A b] [rank(A),rank(C)] 結果為: ans = 2 3 矩陣A與矩陣C的秩不相等,故次方程組無解。 線性代數課程開設的目的是讓學生掌握行列式、矩陣的相關計算,線性方程組的通解的求解。但學生對理論理解不透徹,計算過程存在計算量大,人工手算容易出錯的問題,為了提高學生對該門課的學習興趣,根據Matlab軟件的很多優(yōu)良的性質,具備計算功能強大,應用Matlab軟件在教學方式上進行改革,提高同學們對線性代數這門課的理解,提升學生運算效率和動手能力。 [1]北京大學數學系幾何與代數教研室前代數小組編.高等代數[M].北京:高等教育出版社,2003. [2]劉衛(wèi)國.MATLAB程序設計教程[M].北京:中國水利水電出版社,2010. (責任編校:何俊華) 2017-06-20 劉娟(1987-),女,湖南衡陽人,碩士,講師,研究方向為時間序列。 F224 A 1673-2219(2017)10-0018-03