師向云,周學(xué)勇
(信陽(yáng)師范學(xué)院 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,河南 信陽(yáng) 464000)
常微分方程是高等院校數(shù)學(xué)類(lèi)本科專(zhuān)業(yè)開(kāi)設(shè)的一門(mén)必修專(zhuān)業(yè)課程,目前各個(gè)院校常微分方程的課程教學(xué)通常以求解各種微分方程(組)解析解為主,但在應(yīng)用微分方程解決實(shí)際問(wèn)題時(shí),往往要求方程(組)的解必須能說(shuō)明實(shí)際現(xiàn)象,以及根據(jù)解的情況來(lái)進(jìn)行問(wèn)題分析和制定出相應(yīng)的對(duì)策.這就要求得到的常微分方程解是利于分析和實(shí)際應(yīng)用的.但是實(shí)際上大多數(shù)的方程(組)都沒(méi)有解析解,如大部分的非線性方程只能求數(shù)值解.目前絕大部分常微分方程教材都很少涉及數(shù)值解法,如果不借助于教學(xué)軟件,教師給學(xué)生講解數(shù)值解法也比較困難.在現(xiàn)代微分方程研究及應(yīng)用中,尋求具體微分方程的解析解的特殊技巧已經(jīng)不再是主流課題,而應(yīng)用中提出的各種具有實(shí)際背景模型的微分方程又往往是非線性方程,尋找這些方程的解析解,絕大部分由于幾何理論這一思想方法具有高度的抽象性和概括性,尤其是介紹利用定性分析方法考慮微分方程時(shí),抽象的概念和定理使得初學(xué)者難以直觀地理解定性分析方法的實(shí)質(zhì),這時(shí)如果用數(shù)學(xué)軟件繪制出幾何圖形就能將抽象的概念與結(jié)論直觀地呈現(xiàn)出來(lái).
Matlab 是常用的數(shù)學(xué)軟件之一,它在在數(shù)值計(jì)算方面相對(duì)于其它數(shù)學(xué)軟件首屈一指.文獻(xiàn)[1-3]指出:利用Matlab 軟件可方便地求解微分方程(組),得到微分方程(組)的解析解,并繪出解曲線和軌線圖.文獻(xiàn)[4-5]也表明可以利用Matlab 求解常微分方程線素場(chǎng)、求解微分方程的初值解、繪出二階與三階微分方程(組)解曲線、相位圖.因此為了適應(yīng)新形勢(shì)下的數(shù)學(xué)教學(xué)科研工作任務(wù),可以將Matlab 作為輔助應(yīng)用于目前的常微分方程教學(xué)中.為了能夠更好地提高課堂教學(xué)效率,本文將進(jìn)一步討論Matlab 對(duì)微分方程教學(xué)的作用,我們以各個(gè)高校廣泛使用的王高雄主編的常微分方程教材①為例,具體討論Matlab 在常微分方程各章節(jié)教學(xué)中的應(yīng)用.
我們將從利用Matlab 求非線性微分方程的解析解,求微分方程(組)初值問(wèn)題的數(shù)值解,利用Matlab 繪制解曲線解釋奇解的幾何意義、利用Matlab 繪制線素場(chǎng)理解方向場(chǎng),利用Matlab 繪制非線性方程組相空間的軌線等幾個(gè)方面,具體給出Matlab 在微分方程教學(xué)中的應(yīng)用.
求解微分方程的解析解通常是初等解法,在常微分方程課程教學(xué)中,一階微分方程最重要的教學(xué)任務(wù)就是利用初等解法求方程的解,如用變量分離法求解一階可分離變量方程,用常數(shù)變易法求解一階常系數(shù)線性微分方程,用積分因子法將微分方程化為恰當(dāng)方程,再用全微分法來(lái)求解.可以看出這些求解方法都是針對(duì)某一類(lèi)特定微分方程來(lái)說(shuō)的,而且各種方法在數(shù)學(xué)技巧上均具有一定難度.有時(shí)遇到一些非線性問(wèn)題還無(wú)法用初等解法解出方程的解,而借助數(shù)學(xué)軟件Matlab 則可以求一些非線性的一階微分方程的解析解.應(yīng)用Matlab 中求微分方程(組)解析解的命令:dsolve,它能求出通解和特解.并且可用Matlab 的ezplot 繪圖命令繪出特解積分曲線.例如可用Matlab 求一階方程= 2 +y2滿(mǎn)足初值y(0)= 2 的解析解.Matlab 代碼如下:
syms y
dsolve('Dy=2 + (1/2)*y^2', 'y(0) =2','x')
從而容易得到所求方程的特解:y=2tan(x+
對(duì)某些微分方程存在一條特殊的積分曲線,它不屬于這個(gè)方程的積分曲線族,但是在它上的每一點(diǎn),都有積分曲線族中的一條積分曲線和它相切于這一點(diǎn),我們稱(chēng)該積分曲線所對(duì)應(yīng)的解為方程的奇解[1].僅從定義方面我們很難理解奇解是怎樣的一個(gè)解,也不是很清楚奇解的幾何意義.但我們可用Matlab 畫(huà)出這類(lèi)方程的一些積分曲線,這樣能快速和直觀地去判斷奇解的存在性,從而理解奇解的幾何意義. 例如方程y =xy′+的通解為y=cx+,奇解為y=
我們可取一些特殊的c,利用Matlab 來(lái)繪制積分曲線族和奇解的曲線.Matlab 文件代碼如下:
clear
x=linspace(-1,1,200)
for c=-1:0.1:1
y1=c.*x+sqrt(1+c.^2);
plot(x,y1,'-k')
end
y=sqrt(1-x.^2)
plot(x,y,'b')
hold on
由圖1 容易看出方程的其它解曲線與特解y=所對(duì)應(yīng)的曲線相切,因此很容易理解y=是奇解.
圖1 方程y = xy′ + 1 + y′2 通解和奇解曲線
圖2 方程組(1)的向量場(chǎng)
向量場(chǎng)是一個(gè)非常抽象的概念, 同學(xué)們往往很難去理解,若用Matlab 繪制出向量場(chǎng)的圖形,就可以看到一些布滿(mǎn)整個(gè)坐標(biāo)的短直線所形成的圖像,從而容易看出積分曲線的走向,這樣對(duì)學(xué)生進(jìn)行講解,則能使學(xué)生從直觀上去認(rèn)識(shí)向量場(chǎng),從而理解斜率場(chǎng)、相空間、向量場(chǎng)及軌線等重要概念.繪制向量場(chǎng)所用的函數(shù):quiver,格式:quiver(x,y,u,v),其中x和y表示向量起點(diǎn),u和v確定向量的方向.從向量場(chǎng)圖中可以看出該方程各個(gè)積分曲線的走向.
例1 用Matlab 繪制下面微分方程組的向量場(chǎng).
解:Matlab 代碼如下:
x=-2:0.2:2;
y=-2:0.2:2;
[x,y]=meshgrid(x,y);
d=sqrt((1-x.^2-y.^2).^2+(x.*y).^2);
u =(1-x.^2-y.^2)./d;
v =(x.*y)./d;
hold on
quiver(x,y,u,v,0.5,'b');
由于絕大部分的一階微分方程是不能用初等積分法解出來(lái),但在實(shí)際應(yīng)用中往往又必須知道它的解,這時(shí)就可用Matlab 求出它的數(shù)值解,所以再常微分方程教學(xué)時(shí),還要注意教授學(xué)生學(xué)會(huì)應(yīng)用MAtlab 求方程的數(shù)值解.在Matlab 中求解的函數(shù)有很多,包括ode45, ode113, ode15s,ode23s, ode23t, ode23tb 等,其中常用的兩個(gè)分別為ode23( )和ode45( ).下面我們給出例子來(lái)說(shuō)明.
例2 用Matlab 求下面初值問(wèn)題的解.
解:首先創(chuàng)建一個(gè)函數(shù)文件,文件名為odefun.m,代碼如下:
function dy=odefun(t,y)
dy=zeros(3,1);
dy(1)=-y(2) * y(3);
dy(2)=y(1) * y(3);
dy(3) =0.5 * y(1) * y(2);
然后創(chuàng)建命令文件,文件名為testode45.m,代碼如下:
clc
tspan=[0,50];
y0=[1,1,1]; %
[T,Y]=ode45( @odefun, tspan, y0 ); %
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.') %
圖3 微分方程組(2)的解曲線圖
legend('y_1','y_2','y_3')
圖4 微分方程組(2)的解的軌線圖
常微分方程[1]第六章內(nèi)容有關(guān)非線性方程組的定性理論的知識(shí),它是本科階段和研究生階段之間的銜接內(nèi)容,但在本科階段,學(xué)生普遍反應(yīng)較為抽象,難以理解.如若能夠得到相空間的軌線圖,則教師講解起來(lái)就比較形象,學(xué)生很容易接受理解.如圖4 為微分方程組(2)在相空間的軌線圖,容易看出方程組(2)存在一組周期解.
常微分方程[1]第六章介紹了常微分方程穩(wěn)定性的概念與判定方法,這是學(xué)生學(xué)習(xí)的一個(gè)難點(diǎn),但它又與后續(xù)研究生課程內(nèi)容銜接,也是各個(gè)高校研究生復(fù)試時(shí)常出的考題.事實(shí)上,如果能夠運(yùn)用Matlab 繪出方程在零點(diǎn)的軌線圖,可非常容易判斷微分方程零解的穩(wěn)定性.
例3 判斷如下系統(tǒng)零解的穩(wěn)定性
解:運(yùn)用Matlab 繪制系統(tǒng)(3)的軌線圖, 程序如下:
clear; clc;
[x,y]=meshgrid(linspace(-0.1,0.1));
streamslice(x,y,-x-y+(x-y)*(x.^2+y.^2),x-y+(x+y)*(x.^2+y.^2));
xlabel('x');ylabel('y');
由圖5 及零解穩(wěn)定性定義可知,方程組(3)的零解是一致漸近穩(wěn)定的.
圖5 系統(tǒng)(3)在(0,0)點(diǎn)附近的軌線圖
用Matlab 輔助微分方程課程教學(xué),其上課形式為教師上課用多媒體授課,教師在授課過(guò)程中隨時(shí)穿插使用Matlab 軟件操作演示.比如教給學(xué)生一些基本的求解命令,在課堂上能夠畫(huà)出簡(jiǎn)單微分方程的解曲線給學(xué)生以展示,常微分方程課程教材①共有七個(gè)章節(jié)的內(nèi)容,章節(jié)結(jié)束安排一次實(shí)驗(yàn)課程,讓學(xué)生運(yùn)用Matlab 進(jìn)行方程求解和繪圖訓(xùn)練.
將Matlab 融入課堂教學(xué),可使得常微分方程課程的授課形式較傳統(tǒng)的板書(shū)式教學(xué)有較大的改變,可以使教師和學(xué)生擺脫繁瑣的數(shù)學(xué)演算和數(shù)值計(jì)算的過(guò)程,把學(xué)生的注意力集中到解題方法上來(lái),從而優(yōu)化教學(xué)內(nèi)容,化繁為簡(jiǎn),化抽象為具體.用Matlab 軟件將難以理解的概念和難以想象的圖形形象地表示出來(lái),使所有學(xué)生更加深入地理解微分方程解的幾何意義,從而能使學(xué)生加深對(duì)本課程的掌握,并且引導(dǎo)學(xué)生將理論應(yīng)用于實(shí)際,改變學(xué)生對(duì)該課程的傳統(tǒng)認(rèn)識(shí),實(shí)現(xiàn)教與學(xué)的良性互動(dòng),提高教學(xué)效果,并進(jìn)一步為后繼課程打下基礎(chǔ).
注釋?zhuān)?/p>
①王高雄等編著《常微分方程》(第三版),高等教育出版社,2006.
四川職業(yè)技術(shù)學(xué)院學(xué)報(bào)2020年5期