资源描述:
《matlab常微分方程和常微分方程组求解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、常微分方程和常微分方程组的求解 一、实验目的:熟悉Matlab软件中关于求解常微分方程和常微分方程组的各种命令,掌握利用Matlab软件进行常微分方程和常微分方程组的求解。 二、相关知识在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下:X=dsolve(‘eqn1’,’eqn2’,…)函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。例1:求解常微分方程的MATLAB程序为:dsolve('Dy=1/(x+y)','x'),注意,系统缺省的自变量
2、为t,因此这里要把自变量写明。结果为:-lambertw(-C1*exp(-x-1))-x-1其中:Y=lambertw(X)表示函数关系Y*exp(Y)=X。例2:求解常微分方程的MATLAB程序为:Y2=dsolve('y*D2y-Dy^2=0’,’x’)结果为:Y2=[exp((x+C2)/C1)][C2]我们看到有两个解,其中一个是常数。例3:求常微分方程组通解的MATLAB程序为:[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t')例4:求常微分方程组通解的MATLAB程序
3、为:[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0')以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般格式为:[T,Y]=solver(odefun,tspan,y0)该函数表示在区间tspan=[t0,tf]上,用初始
4、条件y0求解显式常微分方程。solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一,这些命令各有特点。我们列表说明如下:求解器ODE类型特点说明ode45非刚性一步算法,4,5阶Runge-Kutta方法累积截断误差大部分场合的首选算法ode23非刚性一步算法,2,3阶Runge-Kutta方法累积截断误差使用于精度较低的情形ode113非刚性多步法,Adams算法,高低精度均可达到计算时间比ode45短ode23t适度刚性采用梯形算法适度刚性情形ode15s刚性多步法,Ge
5、ar’s反向数值积分,精度中等若ode45失效时,可尝试使用ode23s刚性一步法,2阶Rosebrock算法,低精度。当精度较低时,计算时间比ode15s短odefun为显式常微分方程中的tspan为求解区间,要获得问题在其他指定点上的解,则令(要求单调),y0初始条件。例5:求解常微分方程,,的MATLAB程序如下:fun=inline('-2*y+2*x*x+2*x');[x,y]=ode23(fun,[0,0.5],1)结果为:x=0,0.0400,0.0900,0.1400,0.1900,0.2400,0.2900,0.340
6、0,0.3900,0.4400,0.4900,0.5000y=1.0000,0.9247,0.8434,0.7754,0.7199,0.6764,0.6440,0.6222,0.6105,0.6084,0.6154,0.6179例6:求解常微分方程的解,并画出解的图形。分析:这是一个二阶非线性方程,用现成的方法均不能求解,但我们可以通过下面的变换,将二阶方程化为一阶方程组,即可求解。令:,,,则得到:接着,编写vdp.m如下:functionfy=vdp(t,x)fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)];再编写m
7、文件sy12_6.m如下:y0=[1;0][t,x]=ode45(@vdp,[0,40],y0);y=x(:,1);dy=x(:,2);plot(t,y,t,dy) 三、实验内容1.利用MATLAB求常微分方程的初值问题,的解。2.利用MATLAB求常微分方程的初值问题,,的解。3.利用MATLAB求常微分方程的解。4.利用MATLAB求常微分方程组的特解。5.求解常微分方程,,,的特解,并做出解函数的曲线图。6.完成实验报告。