1实验三微分方程地点:4号楼4104房;实验台号:66实验日期与时间:2017年04月15日评分:预习检查纪录:实验教师:刘小兰电子文档存放位置:电子文档文件名:卓越班-66-陈艺荣实验三批改意见:1实验目的了解求微分方程解析解的方法了解求微分方程数值解的方法学习单自由度阻尼系统,观察阻尼系数对系统的影响模拟弹簧振动,学习实时动画编程的原理了解dsolve,ode45指令的使用方法了解Simulink仿真的设计思想2问题12.1问题描述用dsolve函数求解下列微分方程(2)()()2()(0)1,(0)0yxyxyxyy2.2实验原理1、微分方程的解析解2解析解指在一定条件下能够以数学表达式直接表达出来的的解。2、dsolve命令用法:dsolve(‘equation’,’condition’,’v’)说明:(1)equation是方程式,condition是条件,v是自变量(缺省为t)(2)若不带条件,则解中带积分常数(3)如果没有显式解,则系统尝试给出隐式解(4)如果无隐式解,则返回空符号。格式:(1)y’表示为Dy,y’’表示为D2y,依次类推(2)有多个方程或多个条件时,写多个相应的参数即可。2.3算法与编程2.3.1编程描述在dsolve(‘equation’,’condition’,’v’)函数中,分别编辑输入微分方程、约束条件、自变量,然后运行M文件。2.3.2实现代码%shiyan3_1.m用dsolve函数求解微分方程%题目说明用dsolve函数求解微分方程%y输出的函数因变量%x输出的函数自变量%ChenYirong修改于2017-04-15%代码编辑matlab版本:MATLABR2014aclear,clc;%刷新工作区%--------函数主体--------%3y=dsolve('D2y=Dy+2*y','y(0)=1,Dy(0)=0','x')%D2y=Dy+2*y为方程式,y(0)=1,Dy(0)=0为约束条件%--------函数主体--------%2.4实验结果在matlab中运行shiyan3_1,得到图1所示的结果图1问题1的求解结果因此,微分方程()()2()(0)1,(0)0yxyxyxyy的特解为:223xxeey43问题23.1问题描述我缉私雷达发现,距离d处有一走私船正以匀速a沿直线行驶,缉私舰立即以最大速度(匀速v)追赶。若用雷达进行跟踪,保持船的瞬时速度方向始终指向走私船,则缉私舰的运动轨迹是怎么的?是否能够追上走私船?如果能追上,需要多长时间?图2缉私船与走私船的运动模型3.2实验原理在生产和科研中所处理的微分方程往往很复杂且大多得不出一般解。而在实际上对初值问题,一般是要求得到解在若干个点上满足规定精确度的近似值,或者得到一个满足精确度要求的便于计算的表达式。一阶微分方程的数值解ode45命令用法:[t,Y]=ode45(odefun,tspan,y0)说明:(1)odefun是待求解一阶微分方程或方程组的句柄,对应一个M文件(2)tspan求解区间,y0为初值(3)返回值t为自变量的数据列(4)返回值Y一般是矩阵,每列对应一个待解变量的数据列(5)对方程组,待解变量,导数,初始值等,全部用数组表示M0M(x,y)S0Sxyd53.3算法与编程3.3.1编程描述对缉私船追上走私船的问题,为了便于分析,我们用数值法模拟,然后用MATLAB求解。1、基本假设假设1走私船正以匀速1v沿x轴正方向直线行驶假设2缉私船的速度方向始终指向走私船并立即以最大速度(匀速0v)追赶假设3不考虑风浪的影响,走私船和缉私船在这个过程中没有发生故障2、符号说明表1问题2符号说明符号符号说明单位M(x,y)缉私船的位置函数km0S走私船的初始位置,与坐标原点的距离kmS(x,y)走私船的位置函数kmd初始时,缉私船与走私船的距离km缉私船运动方向与走私船运动方向的夹角radt缉私船追上走私船用到的时间h0v缉私船的最大运动速度值/kmh1v走私船的运动速度值/kmh3、模型建立设缉私船航行的曲线方程为)(xfy,在时刻t时缉私船位于M(,)xy,走私船位于S,S点坐标为10,0vtS,直线PQ与缉私船的路线相切,缉私船的方向始终指向走私船。因此,可以建立以下微分方程关系:6010dyydxSvtx(1)对于(1)式,两边同时对y求导,得到(2)式:22dxdtyadydy(2)因为任意时刻,缉私船的速度满足图3所示关系:图3速度分解示意图因此,有下列关系:2220()()dxdyvdtdt(3)结合方程(2)、(3),可以得到以下模型:221201()vdxdxydyvdy(4)进一步地,该追赶微分模型的初始条件为:0000()0xySdxyydyy(5)其中,2200ydS为缉私船的初始纵坐标。最终,可以获得完整的追赶微分方程模型如下:'12'2221xxkxxy(6)上式中,k是一个参数,定义如下:710vkv(7)在本模型中,通过预先计算参数k可以估测追捕的路线以及确定能否追捕的问题。在求解时,设定050ykm。3.3.2实现代码对于问题2,建立23个M文件求解,其中shiyan2_2.m为脚本命令文件,fun1为求数值解函数,fun2为求解多组数据并绘图的函数。1、shiyan2_2.m代码如下:%shiyan2_2.m数学实验三第2题MATLAB求解%题目说明题目要求利用matlab求解微分方程的数值解的方法求解追捕问题%本M文件调用了fun2求解数值解并输出结果%ChenYirong修改于2017-04-15%代码编辑matlab版本:MATLABR2014aclear,clc;%刷新工作区%--------函数主体--------%vc=[0.2,0.4,0.7,0.9];%不同的k值输入fun2(vc);%不同的k值输出%--------函数主体--------%2、fun2.m代码如下:functionfun2(vc)%fun2.m求解数值解并绘图%vc走私船与缉私船的速度比值8%本函数调用了fun1函数求数值解%ChenYirong修改于2017-04-15%代码编辑matlab版本:MATLABR2014aglobalk;%定义一个全局变量,k为走私船与缉私船的速度比值holdon%锁住图形窗口tspan=50:-0.1:0.1;%求解范围color='rgyb';%曲线颜色设定fori=1:length(vc);%求解不同k值对应的数值解k=vc(i);[y,x]=ode45('fun1',tspan,[0,0]);%求数值解plot(x(:,1),y,color(i));%画图并配色end%axis([-0.1,5,0,1.1]);%画坐标系y1=0:0;x1=0:100;plot(x1,y1,'b*');legend('k=0.2缉私船运动轨迹','k=0.4缉私船运动轨迹','k=0.7缉私船运动轨迹','k=0.9缉私船运动轨迹','走私船运动轨迹')%为不同的曲线标记说明xlabel('x');ylabel('y');holdoffend3、fun1.m代码如下:functiondx=fun1(y,x)%fun1.m%x坐标系的横坐标%y坐标系的纵坐标9%ChenYirong修改于2017-04-15%代码编辑matlab版本:MATLABR2014aglobalk;%定义一个全局变量,k为走私船与缉私船的速度比值dx=zeros(2,1);%存储导数的2x1矩阵dx(1)=x(2);%第一个方程dx(2)=k*sqrt(1+x(2)*x(2))/y;%第二个方程end3.4实验结果在matlab命令窗口中运行shiyan3_2,得到图4所示结果图4不同速度比值下的缉私船与走私船的追赶情况分析如下:1、当1akv时,方程(6)的解为10111100011()21(1)21(1)kkkkCyyCyyxyxkCkkCk(8)2、当=1akv时,方程的解为220001()()ln42CyxyxyyCy(9)其中,2200010kxxyCy分析可知,1、当1k时,即缉私船的速度小于走私船的速度时,0limyx,因此缉私船不能追上走私船。2、当k1时,即即缉私船的速度大于走私船的速度时,令y=0,解得走私船行驶距离为22200002222=xaavxyxavdxaavav(10)追上所需时间为022xavdTav(11)4实验总结和实验感悟4.1实验总结1、通过本次实验,我掌握了dsolve命令的使用。2、通过本次实验,我掌握了ode54命令的使用。4.2实验感悟这次实验难度比以往的要大,主要是出现了解决应用问题的难点,需要自己理解题意后,找到该图具有的内部条件关系,再列出微分方程,最后利用函数解决。理论上和数学建模十分相似,因此整个求解过程,我采用了自己参加数学建模国赛和美赛时候的经验进行求解的,在这个过程中,建模能力进一步得到加强。