资源描述:
《用Matlab软件求解微分方程的解析解和数值解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用Matlab软件求解微分方程的解析解和数值解数学与信息科学学院孔祥庆数学建模实验项目2(1)一、实验名称:用Matlab软件求解微分方程的解析解和数值解二、实验目的:掌握用Matlab软件求解微分方程模型的解析解和数值解的方法三、实验内容1、熟悉Matlab软件求解微分方程解析解的命令dsolve()2、熟悉微分方程数值解的方法:(1)欧拉公式(2)龙格-库塔法四、实验步骤1、Matlab软件求解微分方程解析解的命令dsolve()(1)求通解的命令格式:dsolve(‘微分方程’,‘自变量’)注:微分方程在输入时,一阶导数y’应输入Dy,y”应输
2、入D2y等,D应大写)数学建模实验项目2(2)例1求解一阶微分方程的通解dy-x2+2xy=xedx输入命令:dsolve('Dy+2*x*y=x*exp(-x^2)',’x’)例2求解二阶微分方程的通解xy¢¢+3y¢+e=0输入命令:dsolve('D2y+3*Dy+exp(x)=0','x')数学建模实验项目2(3)(2)求特解的命令格式:dsolve(‘微分方程’,‘初始条件’,‘自变量’)例3求解微分方程的特解2dy(x-1)+2xy-cosx=0dx在初始条件下的特解.y
3、=1x=0输入命令:dsolve('(x^2-1)*Dy+2*x*
4、y-cos(x)=0','y(0)=1','x')(3)微分方程组令格式:dsolve(‘微分方程1,微分方程组2’)ìx¢=3x+4y例4求方程组的通解íîy¢=5x-7y数学建模实验项目2(4)输入格式:[x,y]=dsolve('Dx=3*x+4*y,Dy=5*x-7*y')ìx¢=3x+4yï例5求微分方程组的特解íy¢=5x-7yïîx(0)=0,y(0=1输入格式:[x,y]=dsolve('Dx=3*x+4*y,Dy=5*x-7*y','x(0)=0,y(0)=1')2、Matlab软件求解微分方程的数值解(1)欧拉方法2x例6欧拉方法
5、求解方程的数值解y¢=y-,y(0)=1y2xn解:由欧拉公式得具体迭代公式y=y+h(y-)n=0,1,...n+1nnyn数学建模实验项目2(5)计算各yn可用如下程序进行计算a=0;b=1;h=0.1;x=0:0.1:1;n=(b-a)/hy(1)=1;fork=1:ny(k+1)=y(k)+0.1*(y(k)-2*x(k)/y(k));endplot(x,y)得到函数图象:数学建模实验项目2(6)(2)龙格-库塔法例7、求解下列方程的数值解ìi&(t)=si-0.3i,i(0)=0.02íîs&(t)=-si,s(0)=0.98解:先定义一个
6、说明方程组的函数M-文件:functiony=ill(t,x)a=1;b=0.3;y=[a*x(1)*x(2)-b*x(1),-a*x(1)*x(2)]’;程序命令:ts=0:50;x0=[0.02,0.98];[t,x]=ode45(‘ill’,ts,x0);[t,x]plot(t,x(:,1),t,x(:,2));grid,pauseplot(x(:,2),x(:,1));grid数学建模实验项目2(7)2ìdx2dxï-1000(1-x)-x=0例8ídt2dtïîx(0)=2;x'(0)=0则微分方程变为一阶微分方程组:解:令y=x,y=y1
7、’12ìy1'=y2ï2íy2'=1000(1-y1)y2-y1ïy(0)=2,y(0)=0î12(1)建立m-文件vdp1000.m如下:functiondy=vdp1000(t,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=1000*(1-y(1)^2)*y(2)-y(1);数学建模实验项目2(8)(2)取t0=0,tf=3000,输入命令:[T,Y]=ode15s('vdp1000',[03000],[20]);plot(T,Y(:,1),'-')注:ode15s()是求微分方程数值解的一个命令。21.5(3)结果如图10.
8、50-0.5-1-1.5-2-2.5050010001500200025003000数学建模实验项目2(9)五、实验题目实验要求:针对下列问题,先建立数学模型,再确定模型中的参数,并有结论。1、求下列微分方程的解析解2(1)y¢-2y=x(2)y¢-xy=x,y(0)=1(3)y¢¢+y¢=x,y(0)=1,y¢(0)=1数学建模实验项目2(10)2、当病人采取服用口服药或肌肉注射来治疗疾病时,药物虽然瞬间进入了体内,但它一般都集中与身体的某一部位,靠其表面与肌体接触而逐步被吸收。假定身体系统是一个单房室系统,设t时刻体内药物的总量为x(t),则x(
9、t)满足:dx-kt+kx=kDe1,x(0)=01dt其中k1是药物量被吸收到血液中的速率系数,k是血液中