譚少軒 李平舟
(西安電子科技大學(xué)理學(xué)院,陜西 西安 710071)
數(shù)學(xué)物理方法中MATLAB的應(yīng)用
譚少軒 李平舟
(西安電子科技大學(xué)理學(xué)院,陜西 西安 710071)
數(shù)學(xué)物理方法廣泛應(yīng)用于物理教育、通信、光纖傳輸?shù)雀鱾€(gè)領(lǐng)域。其計(jì)算復(fù)雜,知識(shí)內(nèi)容跨度頗大。使得學(xué)生學(xué)習(xí)物理方法時(shí)較為吃力。而 MATLAB作為目前較為流行的數(shù)學(xué)軟件之一,對(duì)數(shù)學(xué)物理方法中圖像的處理、復(fù)雜公式的計(jì)算有相當(dāng)大的作用。文章就MATLAB處理數(shù)學(xué)物理方法中的一些函數(shù)作出了簡(jiǎn)單的介紹。
數(shù)學(xué)物理方法;復(fù)變函數(shù);積分變換;特殊函數(shù)
數(shù)學(xué)物理方法是許多理工專(zhuān)業(yè)的必修課和重要基礎(chǔ)課,是學(xué)生進(jìn)行“電磁場(chǎng)理論”、“光纖通信”以及“微波技術(shù)”學(xué)習(xí)的重要前導(dǎo)課程,也是科研人員常用的基本方法。但它是一門(mén)公認(rèn)的難度大的課程。因課程內(nèi)容抽象,數(shù)學(xué)推導(dǎo)繁瑣,學(xué)生學(xué)習(xí)起來(lái)感到非??菰?。MATLAB是高性能的數(shù)值計(jì)算型數(shù)學(xué)類(lèi)科技應(yīng)用軟件。具有優(yōu)秀的數(shù)值計(jì)算功能和強(qiáng)大的數(shù)據(jù)可視化能力。在“數(shù)學(xué)物理方法”中應(yīng)用MATLAB進(jìn)行習(xí)題求解和計(jì)算機(jī)仿真,一方面可以提高解題的速度,另一方面可將抽象的解和一些特殊函數(shù)以圖形形式顯示出來(lái).直觀明了,物理意義明確。
1.復(fù)數(shù)計(jì)算
例1:求(1 + i )6的實(shí)部、虛部、共軛復(fù)數(shù)、模與輻角。
定義復(fù)數(shù)后,利用簡(jiǎn)單的MATLAB語(yǔ)句:real()、imag()、conj()、abs()、angle()可直接得出復(fù)數(shù)的的實(shí)部、虛部、共軛復(fù)數(shù)、模與輻角。
解:>>a=[(1+i)^6;
>> a=(1+i)^6;
>> real(a)
ans =
0
>> imag(a)
ans =
-8
>> conj(a)
ans =
0 + 8.0000i
>> abs(a)
ans =
8
>> angle(a)
ans =
-1.5708
例2:求方程 027z3=+ 的所有根。
調(diào)用內(nèi)部函數(shù)Solve進(jìn)行求解。
解:>> solve('z^3+27=0')
ans =
-3
3/2 - (3*3^(1/2)*i)/2
3/2 + (3*3^(1/2)*i)/2
2.Taylor級(jí)數(shù)展開(kāi)
Taylor級(jí)數(shù)的展開(kāi)可以用符號(hào)工具箱中的Taylor( )函數(shù)直接導(dǎo)出。
解:>> syms z;
>> taylor((z+1)/(1-z))
ans =
2*z^5 + 2*z^4 + 2*z^3 + 2*z^2 + 2*z + 1
3.留數(shù)計(jì)算
通過(guò)求極限的方法計(jì)算留數(shù)。
解:通過(guò)對(duì)函數(shù)的分析,可知z=0是三階極點(diǎn),z=2i,-2i是單極點(diǎn)。
>> syms z;
>> f=(z+2*i)/(z^5+4*z^3);
>> limit(diff(f*z^3,z,2)/prod(1:2),z,0)
ans =
-i/8
>> limit(f*(z-2i),z,2i)
ans =
i/8
>> limit(f*(z+2i),z,-2i)
ans =
0
計(jì)算留數(shù).還可直接調(diào)用MATLAB函數(shù)庫(kù)中的Residue函數(shù)直接計(jì)算,見(jiàn)下題。
4.積分計(jì)算
積分計(jì)算可以轉(zhuǎn)化為留效計(jì)算,先求被積函數(shù)的留數(shù),利用留數(shù)定理求復(fù)變幽數(shù)的積分。
解::>>[R,P,K]=residue([1],[1,0,5,0,4])
R= %求被積函數(shù)的留數(shù)
0+0.0833i
0-0.0833i
0-0.1667i
0+0.1667i
P= %四個(gè)極點(diǎn)
O+2.0000i
0-2.0000i
0+1.0000i
0-1.0000i K
= %(展開(kāi)式中無(wú)此解析項(xiàng))
利用MATlAB進(jìn)行復(fù)數(shù)運(yùn)算、級(jí)數(shù)展開(kāi)、計(jì)算留數(shù)、計(jì)算積分,操作簡(jiǎn)單,運(yùn)算速度快,比起手T計(jì)算省時(shí)、方便。
5.復(fù)變函數(shù)的作圖
MATLAB可以進(jìn)行復(fù)數(shù)運(yùn)算,也可以進(jìn)行復(fù)變函數(shù)的繪圖。對(duì)于多值函數(shù)MATLAB僅對(duì)主值進(jìn)行運(yùn)算。 MATLAB中表現(xiàn)復(fù)變函數(shù)的方法是用三個(gè)空間坐標(biāo)再加上顏色的方法來(lái)實(shí)現(xiàn)。從圖形中就可以很容易看出復(fù)變函數(shù)的某些性質(zhì)。具體作圖時(shí),以XOY表示自變量所在的復(fù)平面,以Z軸表示復(fù)變函數(shù)的實(shí)部。而用顏色來(lái)表示復(fù)變函數(shù)的虛部。為了能明確的表示顏色與數(shù)值之間的對(duì)應(yīng)關(guān)系,通常使用指令colorbar來(lái)標(biāo)注各個(gè)顏色所代表的數(shù)值。
MATLAB常用的畫(huà)復(fù)變函數(shù)圖形的指令有如下幾種:CPLXGRID、CPLXMAP、CPLXROOT,CPLXROOT(n,m)等。另外,在MATLAB里面,專(zhuān)門(mén)提供了復(fù)變函數(shù)繪圖的演示程序、只需在命令行下面輸入playshow cplxdemo,即可瀏覽相應(yīng)的圖形及編程方法,非常方便。
把復(fù)變函數(shù)理論中經(jīng)常用到的一些函數(shù)做成一個(gè)圖形界面的繪圖程序,通過(guò)在下拉菜單中選定函數(shù)給定各參數(shù)的值,點(diǎn)擊即可在相應(yīng)的坐標(biāo)平面中得到其圖形。由于MATLAB提供了非常方便的圖形觀察工具,同學(xué)們可以通過(guò)鼠標(biāo)的拖曳從空間各個(gè)角度觀察圖形,從而大大加深其對(duì)復(fù)變函數(shù)的理解,掌握它們的一些基本性質(zhì)。利用這些圖形來(lái)展示黎曼面,教學(xué)效果也非常好。如圖求xycossinz=
圖1 復(fù)變函數(shù)示意圖
特殊函數(shù)始終是“數(shù)學(xué)物理方法”中的一個(gè)重點(diǎn)與難點(diǎn),大多數(shù)學(xué)生對(duì)此十分頭疼。因此,對(duì)于特殊函數(shù)的教學(xué),除了正常的課堂內(nèi)容外,我們還采用基于問(wèn)題的學(xué)習(xí)方法(Problem Based Learning,PBL)安排了相應(yīng)的作圖實(shí)驗(yàn),要求同學(xué)們將教材上所有相關(guān)曲線用MATLAB進(jìn)行繪制,同時(shí)作為平時(shí)成績(jī)進(jìn)行考核,并鼓勵(lì)學(xué)生針對(duì)學(xué)習(xí)中的難點(diǎn)自己設(shè)計(jì)課件,通過(guò)作圖加深理解。利用這種方法,極大地調(diào)動(dòng)了同學(xué)們的學(xué)習(xí)積極性與主動(dòng)性,增加了對(duì)特殊函數(shù)性質(zhì)的認(rèn)識(shí)。
其編程語(yǔ)言為:x=0:0.01:50 Plot(x,BESSEIJ(15,x))
圖2 貝塞爾函數(shù)15階 (X)J15 的曲線分布
例2:畫(huà)出連帶勒讓德多項(xiàng)式(2階)的曲線分布。
MATALAB語(yǔ)句為:x=-1:0.01:1;
Plot(x,legendre(2,x))
曲線如圖3:
圖3 連帶勒讓德多項(xiàng)式(2階)的曲線分布
利用MATLAB語(yǔ)句:Fourier(:f.x,w)、laplace(f,x,w),
可將函數(shù)f(x)進(jìn)行傅里葉變換和拉普拉斯變換。而對(duì)于積分反變換,則可以用fourier(F)和laplace(L)來(lái)實(shí)現(xiàn)。編程制作了拉普拉斯變換和傅里葉變換的電子版積分變換對(duì)照表,使用該對(duì)照表可以進(jìn)行原函數(shù)和變換函數(shù)之問(wèn)的互查。同學(xué)們一方面可以對(duì)所做題目進(jìn)行驗(yàn)證,另一方面可以利用該表輔助做題,對(duì)于那些無(wú)法得到變換函數(shù)的題目也可以及早發(fā)現(xiàn),避免無(wú)謂的時(shí)間浪費(fèi)。
解:>>syms x w:
>>syms a petitive
>>f=1/((x^2+a^2);
>>F=Fourier(f,x,w)
F=pi*(signum(0Re(a)0)*cosh(a*w)-2*Heaviside(w
)*sinh(a*w)+sinh(a*w))/a
例2:已知函數(shù)f(x)=x3e?x,試求取該函數(shù)的Laplace變換,
并對(duì)結(jié)果進(jìn)行Laplace反變換。
解:>>syms x w:
>>f=x^3+exp(-x);
>>F=laplace(f,x,w)
F=6/(w+1)^4
對(duì)得出的結(jié)果進(jìn)行Laplace反變換。從而有
>>ilaplace(F)
ans=x^3+exp(-x)
利用手工方法對(duì)函數(shù)進(jìn)行Fourier變換和Laplace變換,計(jì)算起來(lái)繁瑣、復(fù)雜,且容易出錯(cuò),利用MATLAB快速、準(zhǔn)確。
對(duì)于大多數(shù)的數(shù)學(xué)物理問(wèn)題,很難或根本不可能得到其解析形式的解,因此,在教授給學(xué)生如分離變量法、格林函數(shù)法以及保角變換法等內(nèi)容的同時(shí),數(shù)值方法也是必不可少的環(huán)節(jié)。在設(shè)計(jì)的教學(xué)實(shí)驗(yàn)里,利用MATLAB環(huán)境下的PDETOOL工具箱,可以教授同學(xué)們掌握以有限元法為代表的數(shù)值方法。由于是圖形界面,所以同學(xué)們上手很快f但需要根據(jù)問(wèn)題的邊界、方程的類(lèi)型設(shè)置各種參數(shù),所以學(xué)生必須熟練掌握三類(lèi)邊值問(wèn)題、三種數(shù)理方程以及所謂的施圖姆一劉維爾本征值問(wèn)題。當(dāng)實(shí)驗(yàn)內(nèi)容是結(jié)合教材上的例題進(jìn)行時(shí),同學(xué)們會(huì)非常驚訝于解析法的繁瑣以及數(shù)值方法的簡(jiǎn)便、功能的強(qiáng)大,從而會(huì)以更大的熱情投入到學(xué)習(xí)當(dāng)中去。
例:在矩形域-0.5<x<0.5,-0.5<y<0.5上求解2u?=Δ,且u在邊界上的值為零。
利用偏微分方程下具箱求解過(guò)程如下:
1.啟動(dòng)偏微分方程求解界面。
2.在MATLAB命令窗口中輸人pderect([-0.5 0.5 -0.5 0.5]),選擇Boundary Remove All Subdomain Borders菜單項(xiàng),得出偏微分方程的求解區(qū)域。
3.單擊偏微分方程界面工具欄中的PDE圖標(biāo),選擇其中的Parabolic選項(xiàng),將給定的偏微分方程的參數(shù)輸入到該對(duì)話框中。
4.邊界條件由Boundary菜單下的Specify Boundary conditions確定,輸入邊界條件h=l,r=0。
5.單擊工具欄等號(hào)按鈕,得到偏微分的解,單擊圖形設(shè)置按鈕,得出圖形。
1.泰勒級(jí)數(shù)展開(kāi)
復(fù)變函數(shù)的泰勒級(jí)數(shù)展開(kāi)也是“數(shù)學(xué)物理方法”教學(xué)中的一個(gè)重要內(nèi)容。應(yīng)用MATLAB的符號(hào)工具箱也可以進(jìn)行泰勒展開(kāi)。比如,使用taylor(f,m,a)函數(shù)就可得到f(x)在a點(diǎn)的m階泰勒級(jí)數(shù)展開(kāi)式。另外,MATLAB里面還提供了一個(gè)圖形化的泰勒級(jí)數(shù)展開(kāi)工具——TAYLORTOOL,利用這個(gè)工具,同學(xué)們可以非常直觀地看到函數(shù)及其泰勒級(jí)數(shù)展開(kāi)之間的關(guān)系,也可以動(dòng)態(tài)調(diào)整輸入函數(shù)和參數(shù),非常生動(dòng)。這種交互性可以大大加深對(duì)級(jí)數(shù)展開(kāi)的理解。
2.部分分式展開(kāi)
部分分式展開(kāi)在復(fù)變函數(shù)里面也占有非常重要的地位,利用它可以對(duì)某些復(fù)變函數(shù)進(jìn)行洛朗級(jí)數(shù)展開(kāi),可以利用其來(lái)計(jì)算留數(shù),也可以利用它來(lái)進(jìn)行拉普拉斯變換的反演等。在MATLAB里面,專(zhuān)門(mén)提供了部分分式展開(kāi)的命令,如[r,p,k]=residue(b,a)、[r,p,k]=residue(b,a)等。通過(guò)簡(jiǎn)單的指令,同學(xué)們自己就可以驗(yàn)證題目的正確與否,從而有了學(xué)習(xí)的成就感,主動(dòng)性也增加了。
以上簡(jiǎn)單的介紹了一些數(shù)學(xué)物理方法中的問(wèn)題怎樣用MATLAB來(lái)解決。在不斷的學(xué)習(xí)實(shí)踐中,我們發(fā)現(xiàn)我們應(yīng)該處理好“數(shù)學(xué)物理方法”和MATLAB以下方面的一些關(guān)系,才能更好的掌握所學(xué)的知識(shí)。
1.認(rèn)識(shí)主客體
在教學(xué)過(guò)程中,應(yīng)堅(jiān)持以數(shù)學(xué)物理為主,MATLAB為輔,千萬(wàn)不能把數(shù)學(xué)課變成計(jì)算機(jī)語(yǔ)言課,“體腦倒掛”、主次不分。因此,無(wú)論是課堂演示、課外作業(yè)還是數(shù)學(xué)實(shí)驗(yàn),都必須緊密結(jié)合教材內(nèi)容,做到有的放矢。要求教師在課前必須做好充分的準(zhǔn)備,每一個(gè)實(shí)例、每一個(gè)程序都要精心設(shè)計(jì)。另外,學(xué)生不能依靠計(jì)算機(jī)語(yǔ)言來(lái)完全替代理論的計(jì)算過(guò)程。我們需知道MATLAB只是驗(yàn)證理論、計(jì)算的一種工具。
2.充分調(diào)動(dòng)學(xué)習(xí)的熱情
由于課程內(nèi)容困難,絕大多數(shù)同學(xué)都會(huì)對(duì)教學(xué)內(nèi)容有恐懼心理。因此,必須利用MATLAB的強(qiáng)大圖形處理能力及易用性消除大家的恐懼,增加其學(xué)習(xí)的動(dòng)力。每次演示的時(shí)候,向同學(xué)們展示相關(guān)內(nèi)容的最優(yōu)美的部分,如動(dòng)畫(huà)、三維圖像、圖像的拖曳、聲音背景等,從而吸引廣大同學(xué)的眼球,提高學(xué)習(xí)的主觀能動(dòng)性。另外,往屆同學(xué)所編制的一些樣本程序同樣可以打破同學(xué)們的恐懼心理,提高其自信心。
3.抓住學(xué)習(xí)的本質(zhì)
盡管MATLAB語(yǔ)言非常簡(jiǎn)單,但教授學(xué)生掌握還是需要一個(gè)過(guò)程。因此,必須掌握一個(gè)尺度,使用正確的教授方法。我們的經(jīng)驗(yàn)是采用演示的形式,教會(huì)基本操作、基本命令,結(jié)合具體的例子進(jìn)行編程。更重要的是,同學(xué)們必須學(xué)會(huì)使用MATLAB強(qiáng)大的聯(lián)機(jī)幫助功能以及聯(lián)機(jī)演示程序所給出的實(shí)例。事實(shí)上,MATLAB里面包含眾多的工具箱。任何一門(mén)課程都無(wú)法教會(huì)同學(xué)們精通所有的內(nèi)容,只有教授大家熟練掌握了自學(xué)的本領(lǐng),才是學(xué)習(xí)這門(mén)語(yǔ)言的捷徑。
4.結(jié)合各種方法,提高學(xué)習(xí)效率。
除了常規(guī)的教學(xué)方法外,在利用MATLAB輔助教學(xué)的過(guò)程中,作者也試用了基于問(wèn)題的學(xué)習(xí)方法等。比如,在特殊函數(shù)繪圖以及數(shù)值計(jì)算方法的實(shí)驗(yàn)中,要求廣大同學(xué)自己學(xué)習(xí)命令,繪制教材上的曲線,求解書(shū)本上的例題或作業(yè);在這個(gè)過(guò)程中,鼓勵(lì)同學(xué)們發(fā)揚(yáng)團(tuán)隊(duì)精神,利用集體智慧解決問(wèn)題;鼓勵(lì)“頭腦風(fēng)暴法”等的使用。這些方法的應(yīng)用,一方面挑戰(zhàn)了同學(xué)們的智力,一面提升了其合作精神,是學(xué)習(xí)數(shù)學(xué)物理方法、學(xué)習(xí)MATLAB語(yǔ)言的有效途徑。
利用MATLAB軟件輔助進(jìn)行“數(shù)學(xué)物理方法”的教學(xué),形象、直觀,且操作簡(jiǎn)單、易于掌握。在高校辦研究室網(wǎng)上調(diào)查中,對(duì)于本門(mén)課程的教學(xué),各項(xiàng)考核內(nèi)容均為優(yōu)秀,客觀反映了同學(xué)們對(duì)這種方法的認(rèn)可。筆者認(rèn)為今后的工作還將涉及以下方面的內(nèi)容:MATLAB在數(shù)學(xué)物理方程求解方面的應(yīng)用、MATLAB中有限差分法的應(yīng)用等。另外,對(duì)于數(shù)學(xué)實(shí)驗(yàn),也需要進(jìn)一步的擴(kuò)充,并考慮增加同學(xué)們的自行設(shè)計(jì)并驗(yàn)證數(shù)學(xué)物理方法實(shí)驗(yàn)的內(nèi)容。
[1] 伍新春,等.高等教育心理學(xué)[M].北京:高等教育出版社,1999.
[2] 梁昆淼.數(shù)學(xué)物理方法(第三版) [M].北京:高等教育出版社,1998.
[3] 彭芳麟.數(shù)學(xué)物理方程的MATLAB解法與可視化[M].北京:清華大學(xué)出版社,2004.
[4] 葛美寶.利用MATLAB促進(jìn)《復(fù)變函數(shù)與積分變換》的教學(xué)改革[JM].科技信息,2009,(30).
[5] 楊冰.閆循領(lǐng)淺談Matlab在《復(fù)變函數(shù)》教學(xué)中的應(yīng)用[J].科技信息,2010,(8).
O411.1
A
1008-1151(2011)06-0136-03
2011-04-20
譚少軒(1986-),男,陜西寶雞人,西安電子科技大學(xué)理學(xué)院在讀研究生。