李豪
摘要:本文簡(jiǎn)要介紹了MATLAB軟件和《MATLAB程序設(shè)計(jì)》課程,結(jié)合筆者的教學(xué)實(shí)踐,對(duì)程序設(shè)計(jì)的重要性給出了自己的認(rèn)識(shí),最后從四個(gè)方面對(duì)《MATLAB程序設(shè)計(jì)》課程的基礎(chǔ)教學(xué)內(nèi)容進(jìn)行了探討,并且給出了自己提高學(xué)生程序設(shè)計(jì)的途徑。
關(guān)鍵詞:MATLAB軟件;矩陣;畫圖;符號(hào)變量;程序設(shè)計(jì)
中圖分類號(hào):G642.0 ? ? 文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1674-9324(2019)18-0264-03
一、對(duì)MATLAB軟件及《MATLAB程序設(shè)計(jì)》課程的介紹
MATLAB是美國(guó)MathWorks公司開發(fā)的集數(shù)值計(jì)算、符號(hào)計(jì)算和可視化計(jì)算于一體的科學(xué)和工程計(jì)算大型綜合型軟件[1]。它具有出色的科學(xué)計(jì)算機(jī)數(shù)據(jù)處理能力,強(qiáng)大的圖形處理功能和符號(hào)計(jì)算功能。
MATLAB是matrix(矩陣)和laboratory(實(shí)驗(yàn)室)兩個(gè)單詞縮寫,故MATLAB處理的主要對(duì)象是矩陣。MATLAB幾乎把所有的處理對(duì)象都當(dāng)作矩陣。例如一個(gè)行向量或列向量可以看成一個(gè)1×n或n×1的矩陣;一個(gè)數(shù)可以看成1×1的矩陣。甚至一個(gè)字符串也可以看成一個(gè)矩陣,只不過這時(shí)矩陣的元素不再是數(shù),而是字符。
MATLAB程序主要由主程序和各種工具包組成,其中主程序包含數(shù)百個(gè)內(nèi)部核心函數(shù),三十幾種工具包。除內(nèi)部函數(shù)外,所有MATLAB主包文件和各種工具包都是可讀可修改的文件,用戶通過對(duì)源程序的修改或加入自己編寫程序構(gòu)造新的專用工具包[2]。
《MATLAB程序設(shè)計(jì)》是我校數(shù)學(xué)專業(yè)的專業(yè)選修課,非數(shù)學(xué)專業(yè)的公共選修課。課程的教學(xué)地點(diǎn)在機(jī)房,主要采取理論與上機(jī)相結(jié)合的授課方式。MATLAB內(nèi)容之豐富,涉及專業(yè)之廣,但由于受學(xué)生專業(yè)知識(shí)和學(xué)時(shí)的限制,我們主要側(cè)重MATLAB基礎(chǔ)內(nèi)容的教授。
二、對(duì)數(shù)學(xué)軟件重要性的強(qiáng)調(diào)
很多普通高校在開設(shè)MATLAB課程之前,已有對(duì)程序設(shè)計(jì)課程的開設(shè),例如C語言。C語言之類課程的開設(shè)對(duì)于MATLAB課程的學(xué)習(xí)是有益的。筆者認(rèn)為學(xué)了C語言之類的課程,就已經(jīng)會(huì)進(jìn)行初步的程序設(shè)計(jì)。但是在筆者的教學(xué)中,很多學(xué)生在學(xué)MATLAB時(shí)依然不知怎么設(shè)計(jì)程序去解決實(shí)際問題。歸其原因,學(xué)生對(duì)于先前開設(shè)的程序設(shè)計(jì)課程的重要性沒有足夠的認(rèn)識(shí),導(dǎo)致程序設(shè)計(jì)基礎(chǔ)不扎實(shí)。
對(duì)于上世紀(jì)80年代以前的理工科學(xué)生,尤其對(duì)于數(shù)學(xué)專業(yè)的學(xué)生做研究,筆和紙已經(jīng)基本可以滿足驗(yàn)算需求。但隨著科學(xué)技術(shù)的發(fā)展和人們對(duì)于計(jì)算效率的追求,筆和紙?jiān)缫巡荒軡M足人們的需求。例求如解線型方程組為例,很多時(shí)候我們所求解方程的未知數(shù)成千上萬,乃至千萬,這是筆和紙難以演算的,但是對(duì)于計(jì)算機(jī)卻可以輕松完成。
所以數(shù)學(xué)軟件是人們筆和紙的延伸,它可以更高效更準(zhǔn)確地演算比較繁雜的問題。因此,對(duì)于理工科學(xué)生而言,熟練掌握一門數(shù)學(xué)軟件的是非常重要而且是必要的,否則將會(huì)在以后工作學(xué)習(xí)中遭遇瓶頸。
三、對(duì)《MATLAB程序設(shè)計(jì)》教學(xué)的思考
鑒于學(xué)生專業(yè)知識(shí)和學(xué)時(shí)的限制以及我校的本科生程序設(shè)計(jì)之薄弱。筆者著重從以下四個(gè)基本模塊去講解MATLAB,并且對(duì)每個(gè)模塊中的部分重難點(diǎn)給出了自己講解思路。筆者認(rèn)為學(xué)生如果能夠熟練掌握這四個(gè)模塊,那么根據(jù)自己的專業(yè)去學(xué)習(xí)更多的函數(shù)命令和工具箱將不再是件困難的事情。
模塊3:符號(hào)變量。在筆者的《MATLAB程序設(shè)計(jì)》教學(xué)中,很多學(xué)生對(duì)符號(hào)變量感到很茫然,不知為何物。其實(shí)符號(hào)變量就是我們初中教學(xué)中提到的“代數(shù)”,其作用是用字母代替數(shù)。這樣,我們的推導(dǎo)才具有一般性。
MATLAB有兩種定義符號(hào)變量的命令:sym和syms。sym既可以定義符號(hào)變量又可以定義符號(hào)表達(dá)式,但是sym每次只能定義一個(gè)符號(hào)變量。syms每次可以定義多個(gè)符號(hào)變量,但是不能直接定義符號(hào)表達(dá)式。如果符號(hào)表達(dá)式比較復(fù)雜或冗長(zhǎng)且涉及到多個(gè)符號(hào)變量,我們往往先用syms定義符號(hào)表達(dá)式中所有的符號(hào)變量,再定義符號(hào)表達(dá)式。
在MATLAB中需要先定義符號(hào)變量或者符號(hào)表達(dá)式,才能進(jìn)行求積分、求極限、因式分解等運(yùn)算。因此掌握符號(hào)變量能夠很大程度上節(jié)約我們的演算推導(dǎo)時(shí)間。
模塊4:程序設(shè)計(jì)。MATLAB需要建立m文件進(jìn)行程序設(shè)計(jì),其中m文件分為命令式m文件和函數(shù)式m文件。在命令式m文件進(jìn)行編程然后在命令窗口中運(yùn)行,與在命令窗口中直接運(yùn)行命令式m文件中的程序是沒有本質(zhì)區(qū)別的。唯一的區(qū)別是命令窗口中的程序易于修改,可以反復(fù)運(yùn)行。函數(shù)式m文件在命令窗口中運(yùn)行,直接輸出形式參數(shù)指定的變量,程序中的中間變量則隨著程序運(yùn)行的結(jié)束被釋放掉。
程序設(shè)計(jì)具有比較強(qiáng)的邏輯性、嚴(yán)謹(jǐn)性、實(shí)踐性和技巧性。因此,學(xué)習(xí)任何一門計(jì)算機(jī)語言只有反復(fù)的上機(jī)操作,才能不斷提高。在筆者的MATLAB教學(xué)中,筆者通過下面途徑提高學(xué)生的程序設(shè)計(jì)能力。
(1)熟練掌握MATLAB語法部分。計(jì)算機(jī)語言的語法學(xué)習(xí)是比較枯燥的,但是這也是掌握一門計(jì)算機(jī)語言的基礎(chǔ)。不懂語法,便無從編程。所以這一塊要下功夫,反復(fù)練習(xí)直到熟練掌握。
(2)提高學(xué)生程序設(shè)計(jì)的興趣。興趣是最好的老師。無論是在課堂上練習(xí)還是布置作業(yè),筆者會(huì)盡可能選擇一些比較富有趣味性的問題作為程序設(shè)計(jì)的題目。例如猜數(shù)游戲:首先由計(jì)算機(jī)產(chǎn)生[1,100]之間的隨機(jī)整數(shù),然后由用戶猜測(cè)所產(chǎn)生的隨機(jī)數(shù)。根據(jù)用戶猜測(cè)的情況給出不同提示,如猜測(cè)的數(shù)大于產(chǎn)生的數(shù),則顯示“High”,小于則顯示“Low”,等于則顯示“You won”,同時(shí)退出游戲。用戶最多可以猜7次。
(3)理清思路。筆者在課堂上給出的問題,學(xué)生們一般知道解決的方法,但是不善于理清解決問題的思路。筆者會(huì)通過一兩個(gè)問題,引導(dǎo)他們理清解決問題的步驟。我們以猜數(shù)游戲?yàn)槔?/p>
第1步:隨機(jī)產(chǎn)生一個(gè)1~100之內(nèi)的正整數(shù),并賦值給變量。
第2步:我們需要輸入一個(gè)數(shù)與a進(jìn)行比較,將這個(gè)數(shù)賦值給b。
第3步:開始對(duì)a和b進(jìn)行比較。如果a大于b,提示信息“Low”;如果a小于b,給出提示信息“High”;如果a等于b,給出提示信息“You Won”,且退出循環(huán)。
第4步:這個(gè)程序要求最多猜7次。所以我們需要循環(huán)第2~3步7次,并在循環(huán)結(jié)束后給出提示信息“程序結(jié)束”。
讓學(xué)生學(xué)會(huì)理清解決問題的步驟,然后按步驟一步步地解決問題,最后就完成了程序設(shè)計(jì)。
四、結(jié)語
筆者認(rèn)為《MATLAB程序設(shè)計(jì)》作為一門選修課,面對(duì)不同專業(yè)的學(xué)生,講授不能過于膚淺而寬泛。通過少而精的講解,不但讓學(xué)生在課堂上感覺學(xué)有所“成”,而且對(duì)學(xué)生以后根據(jù)自己的需要自學(xué)MATLAB軟件打下了牢固的基礎(chǔ)。另外,通過筆者自身的科研經(jīng)驗(yàn),深深感受到掌握一門計(jì)算機(jī)程序設(shè)計(jì)語言的重要性,所以教師作為“過來人”,在課堂上要反復(fù)強(qiáng)調(diào)程序設(shè)計(jì)的重要性,讓學(xué)生能夠引起足夠的重視,為以后的發(fā)展奠定基礎(chǔ)。
參考文獻(xiàn):
[1]王波,王軍.MATLAB課程的教學(xué)改革思考[J].中國(guó)電力教育,2012,(28):55-56.
[2]百度百科.MATLAB[EB/OL].https://baike.baidu.com/item/MATLAB/263035?fr=aladdin.
Abstrcat:This paper briefly introduces MATLAB software and MATLAB program design course.In combination with the author's teaching practice,it gives the author's understanding of the importance of program design.Finally,it discusses the basic teaching content of the course of MATLAB program design from four aspects,and gives the way to improve student program design.
Key words:MATLAB software;matrix;plotting;symbolic variable;the program design