作业一、常微分方程向量场相关概念1、常微分方程向量场定义答:设一阶微分方程yxfdx,dy满足解的存在唯一性定理的条件。过D中任一点yx00,,有且仅有一个解,xy满足,y00xxxfx,'。称域D为方程所定义的向量场。2、常微分方程向量场性质答:性质1:解xy就是通过点y00x,的一条曲线(称为积分曲线),且xx,f就是该曲线上的点x,x处的切线斜率,特别在y00x,切线斜率就是yx00,f。性质2:向量场可以用映射22:FRR来表示,其中(,)(,)FXxyiYxyj,为一个平面区域,22RR表示由平面一点映射到一个二维向量。性质3:若函数(,)fxy为上的连续函数,那么向量场也是连续的。性质4:向量场的原函数不唯一,但是任意两个原函数之间只差一个常数。3、利用向量场求常微分方程(组)近似解答:从几何上看,方程yxfdx,dy的一个解xy就是位于它所确定的向量场中的一条曲线,该曲线所经过的每一点都与向量场在这一点的方向相切。形象的说,解x就是始终沿着向量场中的方向行进的曲线,因此,求方程yxfdx,dy满足初始值yx00y的解,就是求通过点y00x,的这样的一条曲线。4、利用向量场研究常微分方程定性理论答:向量场对于求解微分方程的近似解和研究微分方程的几何性质极为重要,因为,可根据向量场的走向来近似求积分曲线,同时也可根据向量场本身的性质来研究解的性质。(1).李雅普诺夫稳定性考虑方程262dyyydx和242dyyydx,现用向量场判断方程的李雅普诺夫稳定性。分别绘制其向量场如下图:从该图中的向量场方向可以看出,其所有解都渐进稳定于直线3y。从该图中的向量场方向可以看出,当初值条件满足02y时,其解都渐进稳定于某竖直的直线lxx;当初值条件满足002y时,其解都渐进稳定于直线0y。(2).奇点考虑方程7437dyxydxxy和7437dyxydxxy,现用向量场判断方程的奇点。分别绘制其向量场如下图:从该图中的向量场方向可以明显观察出,点(0,0)是这两个常微分方程的零点。(3).极限环考虑方程2222()()dyxyyxydxxyxxy现用向量场判断方程的极限环。绘制其向量场如下图:从该图中的向量场方向可以看出,在圆内,有一部分初值点使得其解都渐进稳定于圆221xy,而另一部分趋近于点(0,0);在圆外,有一部分初值点使得其解都渐进稳定于圆221xy,而另一部分趋近于无穷远处。二、基于Matlab绘制常微分方程向量场1、基于Matlab绘制常微分方程向量场的思路。解:向量场计算与与绘制步骤如下:(1).给定常微分方程~以及区域minmaxminmax{(,)|[,],[,]}xyxxxyyy;(2).给定x轴分段数xn(如30),为保证所绘制的向量场中相邻的向量上下左右的距离相等,令maxminmaxmin[]yxyynnxx;(3).令x、y的取值分别为maxminminmaxminmin,0,1,2,...,0,1,2,...ixxjyyxxxxiinnyyyyjjnn;(4).求由微分方程右边~求()yx在每个点(,)ijxy处的斜率k;(5).由斜率k求对应的方向向量(,)xyvv,其中211xvk,21ykvk;(6).用数据(,)ijxy和(,)xyvv调用Matlab函数()quiver,设置颜色等参数绘制向量场。常微分方程边值问题的解曲线,绘制在上述向量场中的步骤如下:(7).给定初值点00(,)xy,用‘o’绘制初值点;(8).调用Matlab函数45()ode数值求解该边值问题;(9).调用Matlab函数()plot绘制解曲线。2、利用Matlab绘制常微分方程向量场的程序设计。解:function[x,y,vx,vy]=vectFieldData(fxy,bx,by,snx)%向量场数据生成通用函数ifnargin4,snx=30;else,snx=snx*30;end%x轴分段数sny=floor(snx*(by(2)-by(1))/(bx(2)-bx(1)));%y轴分段数hx=(bx(2)-bx(1))/snx;%x步长hy=(by(2)-by(1))/sny;%y步长x=bx(1):hx:bx(2);y=by(1):hy:by(2);[x,y]=meshgrid(x,y);%形成二维矩形数据k=fxy(x,y);%求斜率vx=1./(1+k.^2);%向量横坐标cosa=g(tana)vy=vx.*k;%向量纵坐标sina=h(cosa)end3、利用Matlab绘制常微分方程向量场举例。Matlab简介:MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。Matlab和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。发展历程:20世纪70年代,美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、SteveBangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。例如方程1()12dyyxdx,{(,)|[0,6],[0,3]}xyxy其向量场用蓝色表示。当给定初值条件0000.2xy和0001.8xy时的解曲线用红色表示。绘制程序如下。%绘制向量场clc,clear,clf;fxy=@(x,y)y.*(.5-x)+1;%定义函数f(x,y)bx=[06];%x区间by=[03];%y区间[x,y,vx,vy]=vectFieldData(fxy,bx,by);%生成向量场数据quiver(x,y,vx,vy,'color','b')%绘制向量场%绘制解曲线holdon%数值求解过定点的常微分方程y0=[0.2%给定初值条件1.8];plot(zeros(length(y0),1),y0,'o')%绘制初值点[sx,sy]=ode45(fxy,bx,y0);%数值求解常微分方程边值plot(sx,sy,'r','lineWidth',2);%绘制解曲线4.(2)的程序如下:clc,clear,clf;title('dy/dx=-4y+2y^2');fxy=@(x,y)-4.*y+2.*y.*y;%定义函数f(x,y)bx=[03];%x区间by=[03.2];%y区间y0=[2+.00025%给定初值条件2-.0000052-.0041];[x,y,vx,vy]=vectFieldData(fxy,bx,by);%生成向量场数据quiver(x,y,vx,vy,'color','b')%绘制向量场%绘制解曲线holdon%数值求解过定点的常微分方程plot(zeros(length(y0),1),y0,'o')%绘制初值点[sx,sy]=ode45(fxy,[bx(1),2],y0(1));%数值求解常微分方程边值plot(sx,sy,'r','lineWidth',2);%绘制解曲线[sx,sy]=ode45(fxy,bx,y0(2:end));%数值求解常微分方程边值plot(sx,sy,'r','lineWidth',2);%绘制解曲线line([2.032.03],[2.33.2],'LineWidth',2,'Color',[000]);line([0.53.1],[-0.03-0.03],'LineWidth',2,'Color',[000]);(1).例如方程22dyydxxxy,{(,)|[0.5,1],[0,1]}xyxy其向量场用蓝色表示。当给定初值条件000.10.3xy和000.10.0000001xy时的解曲线用红色表示。绘制程序如下。%绘制向量场clc,clear,clf;holdontitle('dy/dx=y/(x+sqrt(x^2+y^2))');fxy=@(x,y)y./(x+sqrt(x.*x+y.*y));%定义函数f(x,y)b=1bx=[-.5*bb];%x区间by=[0b];%y区间y0=[.3%给定初值条件.0000001];[x,y,vx,vy]=vectFieldData(fxy,bx,by,1);%生成向量场数据quiver(x,y,vx,vy,'color','b')%绘制向量场%绘制解曲线holdon%数值求解过定点的常微分方程bx0=[-0.11];plot(bx0(1)*ones(length(y0),1),y0,'o')%绘制初值点[sx,sy]=ode45(fxy,bx0,y0);%数值求解常微分方程边值plot(sx,sy,'r','lineWidth',2);%绘制解曲线(2).例如方程cos2dyyxdx,其向量场用蓝色表示。当给定初值条件001.20.3xy时的解曲线用红色表示。绘制程序如下。%绘制向量场clc,clear,clf;holdontitle('dy/dx=cos(y)+2*x');fxy=@(x,y)(cos(y)+2*x);%定义函数f(x,y)b=2bx=[-bb];%x区间by=[-.2*bb];%y区间y0=[.3];%给定初值条件[x,y,vx,vy]=vectFieldData(fxy,bx,by,1);%生成向量场数据quiver(x,y,vx,vy,'color','b')%绘制向量场%绘制解曲线holdon%数值求解过定点的常微分方程bx0=[-1.21];plot(bx0(1)*ones(length(y0),1),y0,'o')%绘制初值点[sx,sy]=ode45(fxy,bx0,y0);%数值求解常微分方程边值plot(sx,sy,'r','lineWidth',2);%绘制解曲线(3).例如方程cos()*exp()dyyxdx,其向量场用蓝色表示。当给定初值条件001.20.45xy时的解曲线用红色表示。绘制程序如下。%绘制向量场clc,clear,clf;holdontitle('dy/dx=cos(y)*exp(x)');fxy=@(x,y)(cos(y).*exp(x));%定义函数f(x,y)b=2.7bx=[-bb];%x区间by=[-.2*bb];%y区间y0=[-