歐陽異能 楊婷
【摘要】 結合線性代數課程特點,引入計算軟件MATLAB輔助教學,探討MATLAB在線性代數中的矩陣運算、行列式計算、向量組的線性相關性、線性方程組求解以及特征值和特征向量等若干問題方面的應用,以期提高教學質量,改進教學效果.
【關鍵詞】 矩陣;線性方程組;特征值;MATLAB
線性代數課程是高等學校的重要數學基礎課,是用數學知識解決實際問題的一個強有力的工具,廣泛地應用于信號處理、系統控制、電子通信等學科領域. 線性代數課程除了培養學生的基本運算能力、抽象思維能力、邏輯推理能力外,還應注重培養學生的數學建模能力與數值計算能力,使學生學會用數學方法解決實際問題,并能利用計算機進行一定的科學計算.
目前傳統的線性代數教材仍然是以理論為主導,偏重理論體系的系統性、完整性,過多強調證明和推導,卻忽視了概念、原理和模型的實際背景,缺乏解決實際問題的訓練. 再加上課程本身所固有的抽象性和計算的繁瑣性,學習興趣不高,針對線性代數課程的這些特點,必須對現有的教學模式進行改革. 利用計算機軟件輔助教學,既能提高教學效率,減輕學生計算負擔,促進線性代數教學理論走向應用,又能鍛煉和培養學生的數值計算能力,使得學生逐漸喜歡線性代數課程. 本文主要通過實例介紹MATLAB在線性代數教學中的應用.
1. 矩陣的基本運算
(1)矩陣的初等變換
在線性代數中,矩陣的初等變換是最基本也是最重要的一種運算,求矩陣的逆、矩陣的秩、判斷向量組的線性相關性、解線性方程組等問題都離不開初等變換,而矩陣的初等變換相對比較繁瑣,故教學過程中老師會省略很多步驟,這樣不利于學生的學習,引入MATLAB可以方便解決此類問題.
初等變換包括行變換和列變換,下面重點介紹MATLAB在初等行變換中的命令,列變換命令類似. (I)交換矩陣A第i行和第j行,A([j,i],:)=A([i,j],:);(II)矩陣A第i行乘以k倍,A(i,:)=k*A(i,:);(III)將矩陣A第i行的k倍加到第j行上去,A(j,:)=k*A(i,:)+A(j,:) .
例1 設A = 0 -2 13 0 -2-2 3 0,用初等變換求A-1.
解 將(A,E)通過初等行變換化成(E,A-1),求得逆矩陣A-1. MATLAB程序和運行結果:
>> A=[0 -2 1;3 0 -2;-2 3 0];
>> B=[A,eye(3)];
>>B(2,:)=1*B(3,:)+B(2,:); B(3,:)=2*B(2,:)+B(3,:); B(3,:)=4*B(1,:)+B(3,:);
>>B(1,:)=2*B(3,:)+B(1,:); B(2,:)=(-3)*B(3,:)+B(2,:); B(2,:)=2*B(1,:)+B(2,:);
>> B([1,2],:)=B([2,1],:); B([3,2],:)=B([2,3],:)
執行后,輸出結果為:
B = 1 0 0 6 3 4
0 1 0 4 2 3
0 0 1 9 4 6
即求得A-1 = 6 3 44 2 39 4 6
(2)矩陣的其他典型計算
矩陣A的典型計算還包括:矩陣的轉置A′;方陣行列式det(A);矩陣逆inv(A);矩陣的秩rank(A);矩陣的行最簡型rref(A). 例如例題1中的矩陣A,MATLAB命令det(A)、inv(A)分別得到運行結果是1和3.
2. 行列式與方程組求解
根據克拉默法則,若線性方程組系數行列式D ≠ 0,則方程組有唯一解. 當線性方程組為AX = B,則用矩陣左除X=A/B,即X = A-1B;當線性方程組為XA = B,則用矩陣右除X=B/A,即X = BA-1.
例2 當a取何值時,線性方程組
(1 - a)x1 - 2x2 + 4x3 = 12x1 + (3 - a)x2 + x3 = 4x1 + x2 + (1 - a)x3 = 2有唯一解?
解 當系數行列式不等于零時,方程組有唯一解. 因此,先求解a使得系數行列式等于零. MATLAB計算程序和運行結果:
syms a
format rat
>>A=[1-a,-2,4;2,3-a,1;1,1,1-a]; b=[1,4,2]'; >>D=det(A);
>>a0=solve(D)' %系數行列式等于零的根
>>X=A\b %利用左除求出方程組的符號解
>>X=subs(X,a,-1)' %特別的當時,方程組的根
執行后,輸出結果為:
a0 =
[ 0, 2, 3]
X =
(- a^2 + 4*a + 2)/(a*(a^2 - 5*a + 6))
-(2*a - 1)^2/(a*(a^2 - 5*a + 6))
-((2*a - 1)*(a - 1))/(a*(a^2 - 5*a + 6))
X =
1/4 3/4 1/2
3. 向量組的線性相關性及方程組的通解
向量組的線性相關性的判斷,需先將列向量矩陣化成行階梯形,非零行非零首元所在列一定線性無關,MATLAB命令[R, s]=rref(A)可以快速完成行最簡形計算, 其中R為A的行最簡形矩陣;s是一個行向量,它的元素由R的非零行非零首元所在列號構成. 求方程組通解,除了用行最簡形的方法,還可以用null(A, 'r')求齊次線性方程組Ax = 0的基礎解系和x0 = A\b求非齊次線性方程組Ax = b的一個特解x0.
例3 設矩陣A = 1 2 1 -22 3 0 -11 -1 -5 7,求矩陣A的列向量組的一個最大無關組,并把不屬于最大無關組的列向量用最大無關組線性表示.
解 MATLAB命令窗口中輸入:
>>A=[1,2,1,-2;2,3,0,-1;1,-1,-5,7];
>> [R,s]=rref(A)
執行后,輸出結果為:
R =
1 0 -3 4
0 1 2 -3
0 0 0 0
s = 1 2
記A = (a1,a2,a3,a4),由運行結果可知,列向量組的極大無關組為a1,a2,并且a3 = -3a1 + 2a2,a4 = 4a1 - 3a2.
解 根據線性方程組解結構,先求對應齊次方程通解,再求特解x0,輸入MATLAB命令:
>>A=[1 -1 -1 1;1 -1 1 -3;1 -1 -2 3]; b=[0 1 -0.5]';
>>null(A, 'r')
>>x0=A\b
執行后,輸出結果為:
ans =
1 1
1 0
0 2
0 1
x0 = [ 0 -1/4 0 -1/4]
即所求通解為x = k11100 + k21021 + 0-1/40-1/4,k1,k2∈R
4. 特征值和特征向量
求解方陣的特征值和特征向量時,很多同學解不出特征值,顯然影響求解和理解特征向量. 應用MATLAB的命令[V, D]=eig(A)可以快速求解特征值特征向量,其中矩陣D為A的特征值所構成的對角陣,V的列向量為A的特征向量,與D中特征值一一對應. 從而可以節省更多時間來加深理解特征值和特征向量. 當矩陣A為對稱陣時,還可用MATLAB命令[V, D]=schur(A)求特征值與特征向量.
例5 求矩陣A = 4 6 0-3 -5 0-3 -6 1的特征值和特征向量.
解 MATLAB命令窗口中輸入:
>>A=[4 6 0;-3 -5 0;-3 -6 1];
>> [V, D]=eig(A)
執行后,輸出結果為:
V =
0 0.5774 -0.8944
0 -0.5774 0.4472
1.0000 -0.5774 0
D =
1 0 0
0 -2 0
0 0 1
上面的輸出結果可以清楚地看出,特征值與特征向量是相對應的,而這一點在課堂學習中很容易被忽略.
MATLAB作為一種直觀高效的計算軟件,為線性代數教學提供了很好的平臺,它的最大優點是數值計算功能強大,且易學易懂,運用MATLAB輔助教學,可以省去繁瑣而易錯的手工計算過程,更有利于在教學中突出重點,有效提高教學質量和效率. 如何在線性代數教學中應用MATLAB軟件,而不改變線性代數整個理論體系,需要對現有的線性代數課程的教學體系、教學內容和教學方式進行深刻的改革,讓MATLAB為線性代數教學和學生學習效率服務,既發揮MATLAB的軟件優勢,又凸顯線性代數理論的主體地位.
【參考文獻】
[1]同濟大學應用數學系.工程數學線性代數[M].北京:高等教育出版社,2003.
[2]陳懷琛,龔杰明.線性代數實踐及MATLAB入門[M].2 版.北京:電子工業出版社,2009.
[3]李紹剛,段復建等.線性代數中MATLAB實驗教學的探索與實踐[J].長春大學學報,2010,vol.20,No.6.