丁文文 劉子涵 王昌會(huì) 冷平
[摘 ? ? ? ? ? 要] ?基于《教育信息化“十三五”規(guī)劃》中提出的要通過推進(jìn)信息技術(shù)對(duì)教育教學(xué)保駕護(hù)航,探討將MATLAB運(yùn)用于線性代數(shù)課程的實(shí)踐效果,結(jié)合MATLAB推動(dòng)工程問題的計(jì)算機(jī)化,運(yùn)用科學(xué)的方法推動(dòng)信息技術(shù)與課程融合,促進(jìn)課程改革的創(chuàng)新發(fā)展。
[關(guān) ? ?鍵 ? 詞] ?MATLAB程序設(shè)計(jì);線性代數(shù);混合式教學(xué)
[中圖分類號(hào)] ?G642 ? ? ? ? ? ? ? ? ? ?[文獻(xiàn)標(biāo)志碼] ?A ? ? ? ? ? ? ? ? ?[文章編號(hào)] ?2096-0603(2022)28-0061-03
線性代數(shù)是代數(shù)學(xué)的一個(gè)分支,主要處理線性關(guān)系問題。基于線性代數(shù)在工程技術(shù)方面的廣泛應(yīng)用性,應(yīng)該賦予它一項(xiàng)重要使命——推動(dòng)工程問題的計(jì)算機(jī)化。要做到這一點(diǎn),必須讓學(xué)生學(xué)會(huì)用計(jì)算機(jī)求解高階復(fù)雜的矩陣模型,學(xué)會(huì)理解計(jì)算機(jī)給出的答案,而不是讓學(xué)生花很多學(xué)時(shí)用手工去推演求解低階線性方程組的解。然而傳統(tǒng)的線性代數(shù)教學(xué)只見定義、定理和推導(dǎo),越來越形式化,造成很多工科生把線性代數(shù)看作是一門行列式求值和矩陣運(yùn)算技巧訓(xùn)練課,卻不理解計(jì)算的原理,感覺不到線性代數(shù)的應(yīng)用性[1]。用計(jì)算機(jī)和數(shù)學(xué)軟件代替筆算,節(jié)省了學(xué)生時(shí)間,使他們把更多注意力放到線性代數(shù)的應(yīng)用上。MATLAB是美國(guó)的一款商業(yè)數(shù)學(xué)軟件,是matrix和laboratory兩個(gè)詞的組合,稱為矩陣實(shí)驗(yàn)室。MATLAB可以將矩陣計(jì)算、數(shù)值分析和數(shù)學(xué)建模等很多強(qiáng)大的功能以簡(jiǎn)單方便的操作來實(shí)現(xiàn),使得用戶特別是大學(xué)生認(rèn)為數(shù)學(xué)的計(jì)算不再繁雜,減少對(duì)數(shù)學(xué)的恐懼,提高學(xué)習(xí)數(shù)學(xué)的興趣,實(shí)現(xiàn)學(xué)生的自我發(fā)展和科學(xué)創(chuàng)新[2]。
一、國(guó)內(nèi)線性代數(shù)教學(xué)存在的難題
線性代數(shù)是一門非常抽象而又很難掌握的學(xué)科。由于教學(xué)計(jì)劃的限制,課時(shí)少,導(dǎo)致學(xué)生知識(shí)體系的不完整性,這與工科數(shù)學(xué)教學(xué)“以應(yīng)用為目的,以必需夠用為度”的原則是不相符的。
在大數(shù)據(jù)時(shí)代,線性代數(shù)的重要性由于與計(jì)算機(jī)結(jié)合而日益提高,它是組織海量高維度數(shù)據(jù)進(jìn)行科學(xué)計(jì)算和相關(guān)性分析的重要工具。學(xué)生除了學(xué)習(xí)線性代數(shù)基本知識(shí)外,還要學(xué)會(huì)把這些知識(shí)應(yīng)用于自己的專業(yè),這個(gè)特點(diǎn)對(duì)學(xué)生及教師的要求就提高了。比如,在計(jì)算機(jī)院校中,希望學(xué)生能利用矩陣特征值和特征向量進(jìn)行彩色圖像的壓縮;利用矩陣分解來幫助學(xué)生為新的數(shù)據(jù)集選擇適合它的算法和參數(shù)等等。在財(cái)經(jīng)類院校中,希望學(xué)生能利用線性方程組和逆矩陣的計(jì)算建立列昂惕夫投入產(chǎn)出模型;利用矩陣特征值與特征向量解決發(fā)展與環(huán)境問題;利用二次型在優(yōu)化中的應(yīng)用分析價(jià)格彈性等等。這些都需要對(duì)線性代數(shù)知識(shí)能熟練地掌握并具備較高的應(yīng)用技巧。由于實(shí)際問題涉及變量較多,建立其相關(guān)矩陣規(guī)模較大,使用手算無法完成。由于這一局限性,計(jì)算量龐大的問題不能通過教學(xué)來完成,因此割裂了實(shí)際問題建模和線性代數(shù)教學(xué)之間的關(guān)系。
計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的思維方式進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等一系列思維活動(dòng)。編程是實(shí)現(xiàn)計(jì)算思維的具體語言和數(shù)據(jù)的運(yùn)算方式。以往線性代數(shù)課堂教學(xué)中,學(xué)生每個(gè)階段積累的感性認(rèn)識(shí)不足以支撐上升到該階段我們所期望的理性認(rèn)識(shí)高度——計(jì)算思維。在很多學(xué)生計(jì)算機(jī)基礎(chǔ)很薄弱的條件下,采用何種不同尋常的教學(xué)手段和教學(xué)方法,用有限的課時(shí)促使我們突破學(xué)生之瓶頸,讓學(xué)生更好地掌握計(jì)算思維來解決線性代數(shù)的問題?學(xué)生沒有意識(shí)到計(jì)算機(jī)科學(xué)的基本思想和重要方法對(duì)自己“計(jì)算思維能力”培養(yǎng)的重要性,認(rèn)為會(huì)使用幾種編程語言就具備了“計(jì)算思維能力”。探索線性代數(shù)學(xué)科的數(shù)學(xué)思維與計(jì)算思維的聯(lián)系,樹立基于線性代數(shù)的知識(shí)點(diǎn)進(jìn)行計(jì)算思維學(xué)習(xí)設(shè)計(jì)的觀念,可以減少計(jì)算思維在學(xué)習(xí)中的不確定性。通過改進(jìn)教學(xué)方法引導(dǎo)學(xué)生體會(huì)同樣一個(gè)問題,使用數(shù)學(xué)思維怎樣處理,使用計(jì)算思維怎樣實(shí)現(xiàn),讓學(xué)生體會(huì)知識(shí)背后所蘊(yùn)含的計(jì)算思維的規(guī)律和特點(diǎn)。
二、借助MATLAB,建立以工程應(yīng)用為目的的實(shí)驗(yàn)教學(xué)
如今科學(xué)技術(shù)變化迅速、信息高度發(fā)達(dá),需要注重培養(yǎng)學(xué)生把實(shí)際問題轉(zhuǎn)化為數(shù)學(xué)問題然后對(duì)其求解,并加以處理解決。在新工科背景下,教學(xué)不僅要注重解釋線性代數(shù)的基本概念、基本理論和基本方法,同時(shí)還要介紹新的科技成果,比如神經(jīng)網(wǎng)絡(luò)的前向傳導(dǎo)與線性代數(shù)中連續(xù)對(duì)于向量的線性變換過程極其相似,只是在層與層之間多了非線性激活函數(shù)。而這些概念的介紹僅僅通過算式的推導(dǎo)、計(jì)算是極其乏味的。如果能將MATLAB引入到線性代數(shù)課堂教學(xué)中,不僅可以有效地使學(xué)生從煩瑣、復(fù)雜的計(jì)算中解脫出來,還可以讓學(xué)生運(yùn)用MATLAB來訓(xùn)練神經(jīng)網(wǎng)絡(luò),以此觀察向量的線性變換過程,從而讓學(xué)生發(fā)現(xiàn)人腦思考的過程也可以用數(shù)學(xué)來描述[3]。
傳統(tǒng)的線性代數(shù)教學(xué)從高斯消元法到矩陣、行列式再到線性空間、二次型。而針對(duì)剛?cè)雽W(xué)的一年級(jí)新生而言,他們從小一直以實(shí)用為導(dǎo)向,使用具體數(shù)學(xué)模型學(xué)習(xí),這就存在一個(gè)數(shù)學(xué)思維方式的跨越問題[4]。線性代數(shù)可以從解析幾何開始講,從空間的仿射、旋轉(zhuǎn)變換引入矩陣,從定向體積引入行列式,通過這一幾何直觀進(jìn)而引入線性代數(shù)的應(yīng)用[5](如文末圖1所示)。
利用MATLAB的直觀呈現(xiàn)功能,加深學(xué)生領(lǐng)悟矩陣概念、性質(zhì)的能力,有效理解矩陣的特殊性和一般性,夯實(shí)矩陣運(yùn)算的基礎(chǔ),激發(fā)學(xué)生學(xué)習(xí)線性代數(shù)的興趣。比如,n階奇幻方陣是將1,2,3,...,n2共n2個(gè)自然數(shù)排成n行n列的正方形,使得每行、每列及對(duì)角線上的n個(gè)數(shù)之和都相等。對(duì)于低階的奇幻方陣,學(xué)生可能通過筆算還可以勉強(qiáng)算出,若階數(shù)大于5階以上,可以使用MATLAB的函數(shù)magic(n)來實(shí)現(xiàn),并可以從中探索出構(gòu)造成類似矩陣的規(guī)律[6]。當(dāng)需要生成一組數(shù)據(jù)且符合正態(tài)分布時(shí),可以使用函數(shù)randn(n)產(chǎn)生標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)的矩陣。線性代數(shù)可以幫助學(xué)生建立空間概念,但現(xiàn)有教法卻弱化三維,過分強(qiáng)調(diào)N維空間,全是公式,沒法畫圖,很不利于學(xué)生接受。通過MATLAB的函數(shù)randn(d1,d2,...,dN)隨機(jī)生成一個(gè)N維的張量,查看里面的數(shù)據(jù),從而建立起N維空間的概念。
設(shè)x及y分別為n及m維向量,A為m × n矩陣,把方程Ax=y中的x看成輸入變量,y看作輸出變量,則這個(gè)矩陣A就執(zhí)行了把x域內(nèi)的向量組變成y域內(nèi)向量組線性變換。這其實(shí)也實(shí)現(xiàn)了n維空間中圖形的線性變換[7]。比如在二維平面上,直線變換后仍然為直線,三角形變換后仍然為三角形。線性變換A對(duì)x平面上不同方向的向量產(chǎn)生的作用是不同的??梢匀平面上的一個(gè)單位向量,讓它漸漸轉(zhuǎn)動(dòng),看看變換后的y=Ax如何變化。MATLAB設(shè)計(jì)了這樣一個(gè)演示程序?yàn)閑igshow,其輸入變?cè)嵌S矩陣A。鍵入eigshow(A)就出現(xiàn)了不同的變換效果,如文末圖1所示。通過這樣的變換效果,促使學(xué)生建立空間圖形的線性變換。
矩陣的奇異值分解(Singular Value ?Decomposition,SVD)是矩陣常用的一種分解方式,它來源于矩陣?yán)锰卣髦岛吞卣飨蛄康奶卣鞣纸?。SVD用來提取矩陣的主要信息(主成分),從而通過比原矩陣少的數(shù)據(jù)量,還原跟原矩陣差不多的信息,目的是減少數(shù)據(jù)的冗余,以便能夠以有效的形式存儲(chǔ)或傳輸數(shù)據(jù)。比如一幅768×1024×3的圖像A,存儲(chǔ)需要2,359,296個(gè)像素。對(duì)矩陣A進(jìn)行SVD分解,則A=U?鄱V,如果用R來表示???鄱中特征值的個(gè)數(shù),那么U就為1024×R的矩陣,S為R×R的矩陣,V為1024×R的矩陣。所以存儲(chǔ)的圖像需要1024*R+R*R+1024*R個(gè)像素,如果這個(gè)R比較小,那么存儲(chǔ)的空間就會(huì)小很多。如果在教學(xué)中想使用這個(gè)例子來讓學(xué)生理解特征值和特征向量的特征分解的話,如此大的數(shù)據(jù)使用板書呈現(xiàn)根本實(shí)現(xiàn)不了。利用MATLAB可以很方便展示圖像作為一個(gè)矩陣的分解以及利用主成分的提取來壓縮圖像的過程,代碼也非常方便實(shí)現(xiàn),如下所示。
A = imread(′image.jpg′);
R=input(′需要使用的特征值=′);
for i=1 ∶ 3
[U,Sigma,V] = svd(double(A(:,:,i)));
U(:,R+1:end) = 0; ?Sigma(:,R+1:end) = 0;
V(:,R+1:end) = 0;
B(:,:,i) = uint8(U*Sigma*V′);
end
imshow(B)
r=(1024*R+R*R+1024*R)*3/2359296;
title([′特征值= ′,num2str(R),′ ′,′存儲(chǔ)空間百分比=′,num2str(r)]);
如圖2所示,當(dāng)我們?nèi)∏懊?0個(gè)最大的特征值,就可以基本上還原出圖像本身,但是存儲(chǔ)空間只用到了原來圖像存儲(chǔ)的13%。
三、結(jié)論
隨著教學(xué)理念的不斷更新,通過線上自學(xué)、線下實(shí)踐教學(xué)、線上回顧三階段的學(xué)習(xí)以及評(píng)價(jià)體系,線性代數(shù)的翻轉(zhuǎn)課堂教學(xué)模式在不斷改革和創(chuàng)新,不僅強(qiáng)化了學(xué)生學(xué)習(xí)的自主性,而且突出了學(xué)生在學(xué)習(xí)過程中的主體位置,最終將學(xué)習(xí)的主動(dòng)權(quán)從教師手里轉(zhuǎn)移給學(xué)生。
參考文獻(xiàn):
[1]劉錫平,何常香,魏連鑫.新工科背景下線性代數(shù)課程教學(xué)改革的實(shí)踐與探索[J].黑龍江教育(高教研究與評(píng)估),2021(4):35-36.
[2]楊威,高淑萍,陳懷琛,等.新工科背景下線性代數(shù)教學(xué)改革與探索:以國(guó)家精品在線開放課程《實(shí)用大眾線性代數(shù)》為例[J].高教學(xué)刊,2020(5):8-12.
[3]孟小燕.MATLAB數(shù)學(xué)建模技術(shù)在工程數(shù)學(xué)中的應(yīng)用[J].中國(guó)新通信,2019,21(16):161.
[4]楊麗萍.基于Matlab的線性代數(shù)概念教學(xué)法的研究[J].高教學(xué)刊,2020(3):98-100.
[5]寇娜.MATLAB在線性代數(shù)理論教學(xué)中應(yīng)用的探索[J].教育教學(xué)論壇,2020(29):306-307.
[6]孫健,王翠芳.應(yīng)用型本科線性代數(shù)教學(xué)模式的探索:基于MATLAB在解方程組中應(yīng)用實(shí)踐的分析[J].天津商務(wù)職業(yè)學(xué)院學(xué)報(bào),2015,3(6):71-73.
[7]何小年,彭瓊.“3E”背景下線性代數(shù)教材中引入Matlab輔助教學(xué)初探[J].科技創(chuàng)新導(dǎo)報(bào),2018,15(30): 130-131.
[8]楊威,高淑萍,陳懷琛.慕課背景下MATLAB與線性代數(shù)應(yīng)用的融合:介紹國(guó)家精品在線開放課程“實(shí)用大眾線性代數(shù)(MATLAB版)”[J].高等數(shù)學(xué)研究,2019, 22(3):60-62.
編輯 司 楠
①基金項(xiàng)目:安徽省質(zhì)量工程教學(xué)研究項(xiàng)目(2020jyxm1671);安徽省教學(xué)研究項(xiàng)目(2020jyxm1691);安徽省省級(jí)教學(xué)師范課程(2020SJJXSFK2169);淮北師范大學(xué)校級(jí)課程團(tuán)隊(duì)建設(shè)項(xiàng)目(kctdj18043);淮北師范大學(xué)教學(xué)研究校級(jí)重點(diǎn)項(xiàng)目(2018jyxm01)。
作者簡(jiǎn)介:丁文文(1976—),女,漢族,安徽滁州人,博士,副教授,研究方向:智能信息處理、機(jī)器學(xué)習(xí)。
劉子涵(1997—),男,漢族,江蘇泗陽人,研究生在讀,研究方向:中學(xué)數(shù)學(xué)教學(xué)。
王昌會(huì)(1996—),女,布依族,貴州貞豐人,研究生在讀,研究方向:中學(xué)數(shù)學(xué)教學(xué)。
冷平(1980—),女,漢族,山東棗莊人,碩士研究生,講師,研究方向:數(shù)學(xué)教育技術(shù)。