第五讲Matlab求解微分方程-内江师范学院数值仿真与数学实验教学

合集下载

matlab求解微分方程组用matlab对微分方程求解实验报告

matlab求解微分方程组用matlab对微分方程求解实验报告

matlab求解微分方程组用matlab对微分方程求解实验报告导读:就爱阅读网友为您分享以下“用matlab对微分方程求解实验报告”的资讯,希望对您有所帮助,感谢您对的支持!o 《高等数学》上机作业(三)一、上机目的1、学会用Matlab 求简单微分方程的解析解。

2、学会用Matlab 求微分方程的数值解。

二、上机内容1、求简单微分方程的解析解.2、求微分方程的数值解.3、数学建模实例.4、上机作业. 三、上机作业1. 求微分方程:xy ' ? y ? ex?0在初值条件y (1 ) ? 2 e 下的特解,并画出解函数的图形. 命令>> y=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1) ','x') 运行结果:y = 1/x*exp(x)+1/x*exp(1)函数图象:2. 求微分方程的特解.?d2ydy?4?5y?0?2dx ?dx?y(0)?0,y'(1)?10?命令>> y=dsolve('D2y+4*Dy-5*y=0','y(0)=0,Dy(1)= 10','x') 运行结果:y=10/(exp(1)+5*exp(-5))*exp(x)-10/(exp(1)+5*exp(-5))*exp(-5*x)3. 鱼雷追击问题一敌舰在某海域内沿着正北方向航行时,我方战舰恰好位于敌舰的正西方向1 公里处.我舰向敌舰发射制导鱼雷,敌舰速度为0.42 公里/分,鱼雷速度为敌舰速度的2倍。

试问敌舰航行多远时将被击中?M文件x0=0; xf=0.9999999999999;[x,y]=ode15s('eq1',[x0 xf],[0 0]); plot(x,y(:,1),'b.') hold on; y=0:0.1:1;plot(1,y, '*') 运行结果图像:结论:大概在y=0.67处击中敌方舰艇!(选做)一个慢跑者在平面上沿椭圆以恒定的速率v=1跑步,设椭圆方程为: x=10+20cost, y=20+5sint. 突然有一只狗攻击他. 这只狗从原点出发,以恒定速率w跑向慢跑者,狗的运动方向始终指向慢跑者.分别求出w=20,w=5时狗的运动轨迹.W=20M文件代码function dy=eq3(t,y)dy=zeros(2,1);dy(1)=20*(10+20*cos(t)-y(1))/sqrt((10+20*cos(t)-y(1))+(20 +15*sin(t)-y(2)));dy(2)=20*(20+15*sin(t)-y(2))/sqrt((10+20*cos(t)-y(1))+(20+ 15*sin(t)-y(2)));运行命令t0=0;tf=10;[t,y]=ode45('eq3',[t0 tf],[0 0]);T=0:0.1:2*pi;X=10+20*cos(T);Y=20+15*sin(T);plot(X,Y,'-')hold onplot(y(:,1),y(:,2),'r*')运行结果:利用二分法更改tf tf=5时tf=2.5时tf=3.15时:所以在t=3.15时刻恰好追上!W=5M文件代码function dy=eq4(t,y)dy=zeros(2,1);dy(1)=5*(10+20*cos(t)-y(1))/sqrt((10+20*cos(t)-y(1))+(20+15*sin(t)-y(2)));dy(2)=5*(20+15*sin(t)-y(2))/sqrt((10+20*cos(t)-y(1))+(20+1 5*sin(t)-y(2)));命令:t0=0;tf=10;[t,y]=ode45('eq4',[t0 tf],[0 0]);T=0:0.1:2*pi;X=10+20*cos(T);Y=20+15*sin(T);plot(X,Y,'-')hold onplot(y(:,1),y(:,2),'*')运行结果更改tf=20运行结果Tf=40所以永远追不上!四、上机心得体会高等数学是工科学生的主干科目,它应用于生产生活的方方面面,通过建模,计算可以求出实际问题的最优化问题!因此我们需要掌握建模和利用专业软件处理实际问题的能力!百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网,您的在线图书馆。

如何使用MATLAB求解微分方程(组)ppt课件

如何使用MATLAB求解微分方程(组)ppt课件

差,输出参数,事件等,可缺省。 9
使用ODE?时如何编 写微分方程 ?
方式一:带额外参数,使用时需对参数进行赋值
function odefun(t,x,flag,R,L,C) %用flag说明R、L、C为变 量
xdot=zeros(2,1);
%表明其为列向量
xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);
2
Where ?
工程控制
ODE
医学生理
航空航天
金融分析
3
Where ?
算法开发 数据分析
数值计算 MAT LAB
数据可视化
4
When ?
当对问题进行建模后,有常微分方程 需要求解时。
在生物建模中,经常需要求解常微分 方程。如药物动力学的房室模型的建模 仿真。
5
方法 ode23
ode45
数 ode113
当无法藉由微积分技巧求 得解析解时,这时便只能利 用数值分析的方式来求得其 数值解了。实际情况下,常 微分方程往往只能求解出其
数值解。
在数学中,刚性方程是指一 个微分方程,其数值分析的解 只有在时间间隔很小时才会稳 定,只要时间间隔略大,其解 就会不稳定。
目前很难去精确地去定义哪 些微分方程是刚性方程,但是 大体的想法是:这个方程的解
y(1)=x(2);
y1
y2
y(2)= -t*x(1)+exp(t)*x(2)+3*sin(2*t);
end
1000
求解程序ห้องสมุดไป่ตู้键步骤
[t,y]=ode45('odefun',[3.9 4.0],[2 8])
y

Matlab软件求解微分方程_170419

Matlab软件求解微分方程_170419

matlab函数定义格式总结matlab中函数定义的一些内容:1, 函数定义格式在matlab中应该做成M文件,文件名要和你文件里的function后面的函数名一致在File新建一个M-file在M-file里编辑函数格式为:function [输出实参表]=函数名(输入实参数)注释部分函数体语句return语句(可以有可以没有)如果是文件中的子函数,则可以任意取名,也可以在同一个文件中定义多个子函数例:function [max,min]=mymainfun(x) %主函数n=length(x);max=mysubfun1(x,n);min=mysubfun2(x);function r=mysubfun1(x,n) %子函数1x1=sort(x);function r=mysubfun2(x) %子函数2x1=sort(x);r=x1(1);Matlab自定义函数的五种方法1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件;2、函数文件+子函数:定义一个具有多个自定义函数的M文件;3、Inline:无需M文件,直接定义;4、Syms+subs:无需M文件,直接定义;5、字符串+subs:无需M文件,直接定义.1、函数文件+调用函数文件:定义多个M文件:%调用函数文件:myfile.mclearclcfor t=1:10y=mylfg(t);fprintf(‘M^(1/3)=%6.4f\n’,t,y);end%自定义函数文件: mylfg.mfunction y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfg.m)一致Y=x^(1/3);注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。

2、函数文件+子函数:定义一个具有多个子函数的M文件%命令文件:funtry2.mfunction []=funtry2()y=lfg2(t)fprintf(‘M^(1/3)=%6.4f\n’);Endfunction y=lfg2(x)Y= x^(1/3);%注:自定义函数文件funtry2.m中可以定义多个子函数function。

MATLAB求解微分方程(实验6)微分方程求解-文档资料

MATLAB求解微分方程(实验6)微分方程求解-文档资料
实验
Experiments in Mathematics 微分方程求解
1
实验目的 实验内容
1、学会用Matlab求简单微分方程的解析解. 2、学会用Matlab求微分方程的数值解.
1、求简单微分方程的解析解. 2、求微分方程的数值解.
实验软件 MATLAB
2
微分方程的解析解
求微分方程(组)的解析解命令: dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)
(ltest.m)
23
1、 lorenz.m function xdot=lorenz(t,x) xdot=[-8/3,0,x(2);0,-10,10;-x(2),28,-1]*x; 2、ltest.m x0=[0 0 0.1]'; [t,x]=ode45('lorenz',[0,10],x0); plot(t,x(:,1),'-',t,x(:,2),'*',t,x(:,3),'+') pause plot3(x(:,1),x(:,2),x(:,3)),grid on
选择一组状态变量
x1 y, x2 y, , xn y(n1)
x1 x2 , x2 x3,
xn f (t, x1, x2 , , xn )
15
注意
x1 x2 , x2 x3,
xn f (t, x1, x2 , , xn )
1、建立M文件函数
function xdot = fun(t,x,y) xdot = [x2(t);x3(t);…;f(t, x1(t), x2(t),…xn(t))];
x=simple(x) % 将x简化 y=simple(y) z=simple(z)

matlab求解微分方程

matlab求解微分方程

matlab求解微分方程Matlab作为一款多功能的计算机科学软件,具有强大的功能,能够有效地解决复杂数学问题。

其中,Matlab特别擅长求解微分方程。

微分方程是一类重要的数学方程,能够解释物体随时间变化的现象,广泛应用于科学领域,如力学、热力学等领域。

下面,将介绍如何使用Matlab来求解微分方程。

对于微分方程,Matlab提供了一系列的函数来支持求解。

常用的函数包括ODE45、ODE23、ODE113,用于解决传递微分方程,以及dsolve用于解决非传递微分方程。

首先,对于传递微分方程,我们可以使用ODE45、ODE23或ODE113函数求解。

其中,ODE45函数是Matlab中一种常用的函数,它可以求解线性和非线性微分方程,而ODE23和ODE113则只能求解线性方程。

要使用这些函数,首先需要准备解决微分方程的参数,包括:要求解的函数、初始条件和积分区间等,可以使用如下Matlab代码实现:%求解的函数f = @(t,y) y+t^2-1;%始条件t0 = 0;y0 = 1;%分区间tspan = [t0,2];%用函数求解[t,y] = ode45(f,tspan,y0);接着,我们就可以调用ODE45、ODE23或ODE113函数求解传递微分方程,代码如下:%用函数求解[t,y] = ode45(f,tspan,y0);%于求解非线性方程[t,y] = ode23(f,tspan,y0);%于求解精确的线性方程[t,y] = ode113(f,tspan,y0);另外,Matlab也提供了一个dsolve函数,用于求解非传递微分方程。

它可以解决一元微分方程、偏微分方程以及系统微分方程等问题。

要使用dsolve函数,可以这样写:%求解的函数f =D2y+4*Dy+3*y = 0’;%解方程y = dsolve(f);以上,就是Matlab中求解微分方程的基本步骤。

可以看到,Matlab提供了一系列函数来支持求解微分方程,让我们不再受到繁琐的数学推导的束缚,使用起来方便快捷。

微分方程的matlab求解数学建模PPT学习教案

微分方程的matlab求解数学建模PPT学习教案

第12页/共44页
返回
使用改进欧拉公式的例
步长 h= 0.1 的数值解比较
x
精表确解 向前欧拉 向后欧拉 改进欧拉
0
1
1
1
1
0.1
1.0048
1
1.0091
1.005
0.2
1.0187
1.01
1.0264
1.019
0.3
1.0408 1.029 1.0513 1.0412
0.4
1.0703 1.0561 1.0830 1.0708
y = 3/4*exp(-x)+1/4*exp(3*x)
第23页/共44页
例③ 非常系数的二阶微分方程
x ''( t ) ( 1 x 2 ( t ) x '( ) t ) x ( t ) 0 , x ( 0 ) 3 , x '( 0 ) 0
x=dsolve('D2x-(1-x^2)*Dx+x=0', ' x(0)=3,Dx(0)=0')
第22页/共44页
例② 常系数的二阶微分方程
输入
y '' 2 y ' 3 y 0 , y ( 0 ) 1 ,y '( 0 ) 0
:y=dsolve('D2y-2*Dy-3*y=0','x')
y=dsolve('D2y-2*Dy3*y=0','y(0)=1,Dy(0)=0','x')
结果:
y = C1*exp(-x)+C2*exp(3*x)
第4页/共44页
1、欧拉方法
2) 向后欧拉公式

用MATLAB函数编写并求解微分方程

用MATLAB函数编写并求解微分方程

0.4 0.3 0.2 0.1
0 -0.1 -0.2 -0.3
-2
1
iL(t)
0
2
4
6
time sec
8
10
0.5 0
uC(t)
-0.5
-2
0
2
4
6
8
time sec
3.全响应 保持 funcforex123.m 不变(in= (t..0)*1),将系统状态改为[0,1]
0.4 0.3 0.2 0.1
实验八:用 MATLAB 函数编写并求解微分方程
一、实验原理
为了对连续系统进行方针,首先需要建立其数学模型,然后利用计算机求这些数学模型,
从而得出数学模型的数值解。由于连续系统是通过微分方程老建模的,因此对此的计算
机方针本质上解释微分方程的数值求解问题。
二、实验步骤
1. 建立数学模型,利用电路的拓扑元件的属性,列出网孔方程或节点方程,并简化为
iL(t)
0
2
4
6
time sec
1.求解程序:零状态响应 %filename ex123.m L=1;c=0.1;for R=[1.5 3 5] [t,x]=ode 45(‘funcforex123’,[-1,10],[0;0],[],R,L,C); Figure(1);plot(t,x(:,1));hold onl xlibel(‘time sec’); Text(0.9,0.17,’\leftarrow i_L(t)’);grid; Figure(2);plot(t,x(:,2));hold on; xlabel(‘time sec’); Text(0.5,0.3,’\leftarrow u_C(t)’);grid;

matlab求解微分方程组的定长数值解

matlab求解微分方程组的定长数值解

matlab求解微分方程组的定长数值解使用Matlab求解微分方程组的定长数值解概述:微分方程是描述自然界中各种变化规律的重要数学工具。

在实际问题中,经常会遇到多个变量之间相互依赖的情况,这时就需要求解微分方程组。

Matlab是一种功能强大的数值计算软件,它提供了丰富的工具箱和函数,可以方便地求解微分方程组的定长数值解。

本文将介绍使用Matlab求解微分方程组的基本步骤和注意事项。

步骤:1. 定义微分方程组:首先需要定义微分方程组的方程形式。

例如,假设有一个二阶微分方程组:dx1/dt = f1(x1, x2, t)dx2/dt = f2(x1, x2, t)其中x1、x2为未知函数,t为自变量,f1、f2为已知函数。

在Matlab中,可以使用函数句柄的形式表示f1、f2,例如:f1 = @(x1, x2, t) x1 + x2 - t;f2 = @(x1, x2, t) x1 - x2 + 2*t;2. 设置初值条件:求解微分方程组需要给定初始条件。

例如,假设初始条件为x1(0) = 1,x2(0) = 2,可以使用以下代码设置:x0 = [1; 2];3. 定义求解区间:需要给定求解微分方程组的时间区间。

例如,假设求解区间为t = [0, 10],可以使用以下代码定义:tspan = [0, 10];4. 求解微分方程组:使用Matlab提供的ode45函数求解微分方程组的定长数值解。

ode45函数是一种常用的求解常微分方程初值问题的数值方法,可以自动选择合适的步长进行求解。

例如,可以使用以下代码求解微分方程组:[t, x] = ode45(@(t, x) [f1(x(1), x(2), t); f2(x(1), x(2), t)], tspan, x0);其中,@(t, x) [f1(x(1), x(2), t); f2(x(1), x(2), t)]表示微分方程组的右端项,t为自变量,x为未知函数的向量。

利用Matlab求解微分方程

利用Matlab求解微分方程

利⽤Matlab求解微分⽅程实验三利⽤Matlab 进⾏计算机模拟及求解微分⽅程班级:姓名:学号:实验⽬的:1、掌握利⽤Matlab 求解微分⽅程的解析解; 2、掌握利⽤Matlab 求解微分⽅程的数值解;3、利⽤Matlab 进⾏计算机模拟法的实现。

实验内容及要求:1、求如下微分⽅程的解:212(0)2y y y ?-'==?;>> y=dsolve('Dy=(y*y-1)/2','y(0)=2','x') y =-tanh(x/2 - atanh(2))2、求⽅程230y y y'''+-=的通解;>> y=dsolve('D2y+2*Dy-3*y=0','x') y =C10*exp(x) + C11*exp(-3*x)3、⽤ode15s 求下列⽅程组在[0,1.2]的解,并绘出精确解和数值解的图形。

22sin 998999999(cos sin )(0)2(0)3dy y z x dxdz y z x x dxy z ?=-++??=-+-=?=精确解:[y,z]=dsolve('Dy=-2*y+z+2*sin(x),Dz=998*y-999*z+999*(cos(x)-sin(x))','y(0)=2,z(0)=3','x') y=2*exp(-x)+sin(x) z=2*exp(-x)+cos(x)x=linspace(0,1.2,30); y=2*exp(-x)+sin(x); z=2*exp(-x)+cos(x); figure(1)plot(x,y,'r',x,z,'k')数值解:function dy=vdp1000(x,y) dy=zeros(2,1);dy(1)=(-2)*y(1)+y(2)+2*sin(x);dy(2)=998*y(1)-999*y(2)+999*(cos(x)-sin(x));option=odeset('reltol',0.1,'abstol',0.001);[X,Y]=ode15s('vdp1000',[0,1.2],[2,3],option) plot(X,Y(:,1),'-',X,Y(:,2),'k')精确解图:数值解图:>> y=dsolve('DH=(-k)*H+k*20','H(0)=37','t')>> k=solve('y=17*exp(-k*t) + 20','k')>> y=35;t=2;k=eval(k)>> t=solve('y=17*exp(-k*t) + 20','t')>> y=30;t=eval(t)>> T=16-t5教材第94页库存问题中的数据取成尽量与实际情况相符的数据,相关参变量的赋值每个同学都按⾃⼰的想法来取,尽量不要出现完全相同的情况。

偏微分方程的matlab解法PPT课件

偏微分方程的matlab解法PPT课件

求解抛物型方程的例子
考虑一个带有矩形孔的金属板上的热传导问题。板的左边
保持在100 °C,板的右边热量从板向环境空气定常流动,
t t 其他边及内孔边界保持绝缘。初始
°C ,于是概括为如下定解问题;
是板的温度为0 0
d u u0 , t
u 1 0 0 ,在 左 边 界 上
u 1, 在 右 边 界 上 n u = 0, 其 他 边 界 上 n
ppt课件完整
3
先确定方程大类
ppt课件完整
4
Draw Mode
画图模式,先将处理的区域画出来,二 维,方形,圆形,支持多边形,可以手 动更改坐标,旋转rotate
例如,对于细杆导热,虽然是一维问题, 可以将宽度y虚拟出来,对应于y的边界 条件和初始条件按照题意制定
ppt课件完整
5
Boundary Mode
ppt课件完整
20
ppt课件完整
21
第七步:单击Plot菜单中Parameter选项,打开Plot Selection对话框,选中Color,Height(3D plot)和 Show mesh三项.再单击Polt按钮,显示三维图形解, 如图22.5所示.
ppt课件完整
22
第八步:若要画等值线图和矢量场图,单击plot菜单 中parameter 选项,在plot selection对话框中选中 contour 和arrow两选项。然后单击plot按钮,可显示 解的等值线图和矢量场图,如图2.6所示。
2u (2u t 2 x2
u t to 0
区域的边界顶点坐标为(-0.5,-0.8), (0.5,-0.8), (-0.5,0.8), (-0.05,0.4) ,(0.05,-0.4),

微分方程的Matlab求解ppt课件

微分方程的Matlab求解ppt课件

y1' y2 y3
y2 ' y1 y3 y3' 0.51y1 y2
y1(0) 0, y2 (0) 1, y3(0) 1
解 1、建立m-文件如下:
function dy=rigid(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);
s.z x=simple(s.x) %简化结果
y=simple(s.y)
z=simple(s.z)
结 果 为:
x =-(-C1-C2*exp(-3*t)+C2-C3+C3*exp(-3*t))*exp(2*t)
y =(-C1*exp(-4*t)+C1+C2*exp(-4*t)+C2*exp(-3*t)-C2+C3-C3*exp(-3*t))*exp(2*t)
x(0) 0, y(0) 0
返回
2. 模型求解
(1) w=20时,建立m-文件如下: function dy=eq3(t,y) dy=zeros(2,1); dy(1)=20*(10+20*cos(t)-y(1))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2); dy(2)=20*(20+15*sin(t)-y(2))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2);
注意: 1、在解n个未知函数的方程组时,x0和x均为n维向量,
m-文件中的待解方程组应以x的分量形式写成.
2、使用Matlab软件求数值解时,高阶微分方程必须 变换成等价的一阶微分方程组.

第五讲Matlab求解微分方程-内江师范学院数值仿真与数学实验教学

第五讲Matlab求解微分方程-内江师范学院数值仿真与数学实验教学

第五讲Matlab求解微分⽅程-内江师范学院数值仿真与数学实验教学第五讲 Matlab求解微分⽅程教学⽬的:学会⽤MATLAB求简单微分⽅程的解析解、数值解,加深对微分⽅程概念和应⽤的理解;针对⼀些具体的问题,如追击问题,掌握利⽤软件求解微分⽅程的过程;了解微分⽅程模型解决问题思维⽅法及技巧;体会微分⽅程建摸的艺术性.教学重点:利⽤机理分析建模微分⽅程模型,掌握追击问题的建模⽅法,掌握利⽤MATLAB求解数值解.教学难点:利⽤机理分析建模微分⽅程模型,通过举例,结合图形以及与恰当的假设突破教学难点.1微分⽅程相关函数(命令)及简介因为没有⼀种算法可以有效地解决所有的ODE 问题,为此,Matlab 提供了多种求解器Solver,对于不同的ODE 问题,采⽤不同的Solver.阶常微分⽅程(组)的初值问题的解的 Matlab 的常⽤程序,其中:ode23 采⽤龙格-库塔2 阶算法,⽤3 阶公式作误差估计来调节步长,具有低等的精度.ode45 则采⽤龙格-库塔4 阶算法,⽤5 阶公式作误差估计来调节步长,具有中等的精度.2 求解微分⽅程的⼀些例⼦2.1 ⼏个可以直接⽤ Matlab 求微分⽅程精确解的例⼦:例1:求解微分⽅程22x xe xy dxdy-=+,并加以验证.求解本问题的Matlab 程序为:syms x y %line1 y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') %line2 diff(y,x)+2 *x*y-x*exp(-x^2) %line3 simplify(diff(y,x)+2*x*y-x*exp(-x^2)) %line4说明:(1) ⾏line1是⽤命令定义x,y 为符号变量.这⾥可以不写,但为确保正确性,建议写上;(2) ⾏line2是⽤命令求出的微分⽅程的解:1/2*exp(-x^2)*x^2+exp(-x^2)*C1(3) ⾏line3使⽤所求得的解.这⾥是将解代⼊原微分⽅程,结果应该为0,但这⾥给出:-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)(4) ⾏line4 ⽤ simplify() 函数对上式进⾏化简,结果为 0,表明)(x y y =的确是微分⽅程的解.例2:求微分⽅程0'=-+x e y xy 在初始条件e y 2)1(=下的特解,并画出解函数的图形.求解本问题的 Matlab 程序为: syms x yy=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x') ezplot(y)微分⽅程的特解为:y=1/x*exp(x)+1/x* exp (1) (Matlab 格式),即xe e y x+=,此函数的图形如图 1:图1 y 关于x 的函数图象2.2 ⽤ode23、ode45等求解⾮刚性的标准形式的⼀阶常微分⽅程(组)的初值问题的数值解(近似解).例3:求解微分⽅程初值问题=++-=1)0(2222y xx y dx dy 的数值解,求解范围为区间[0, 0.5].fun=inline('-2*y+2*x^2+2*x','x','y'); [x,y]=ode23(fun,[0,0.5],1); x'; y'; plot(x,y,'o-') >> x' ans =0.0000 0.0400 0.0900 0.1400 0.1900 0.2400 0.2900 0.3400 0.3900 0.4400 0.4900 0.5000>> y' ans =1.0000 0.9247 0.8434 0.7754 0.7199 0.6764 0.6440 0.6222 0.6105 0.6084 0.6154 0.6179 图形结果为图 2.图2 y 关于x 的函数图像3 常微分在实际中的应⽤ 3.1 导弹追踪问题1、符号说明,w ,⼄舰的速率恒为v 0;设时刻t ⼄舰的坐标为((),())X t Y t ,导弹的坐标为((),())x t y t ;当零时刻,((0),(0)) (1,0)X Y =,((0),(0))(0,0)x y =.建⽴微分⽅程模型.202,01(0)0,'(0)0v d yk x dx w y y = =<由微分⽅程模型解得11(1)(1)11(),12(1)2(1)2(1)2(1)k k x x y x k k k k k +-+--=-+-≠+-+-++代⼊题设的数据1/5k =,得到导弹的运⾏轨迹为4655555(1)(1)81224y x x =--+-+当1=x 时245=y ,即当⼄舰航⾏到点)245,1(处时被导弹击中. 被击中时间为:00245v v y t ==. 若v 0=1, 则在t =0.21处被击中. 利⽤MALAB 作图如图3.clear, x=0:0.01:1; y=-5*(1-x).^(4/5)/8+5*(1-x).^(6/5)/12+5/24; plot(x,y,'*')图3导弹运⾏轨迹(解析法)图4两种⽅法对⽐的导弹运⾏轨迹2、数值⽅法求解.设导弹速率恒为w ,则得到参数⽅程为--+-=--+-=)()()()()()(2222y Y y Y x X wdt dy x X y Y x X w dt dx因⼄舰以速度0v 沿直线1x =运动,设01v =,5,1,w X Y t ===,因此导弹运动轨迹的参数⽅程为:==--+-=--+-=0)0(,0)0()()()1(5)1()()1(52222y x y t y t x dtdyx y t x dt dxMATLAB 求解数值解程序如下,结果见图4 t0=0,tf=0.21;[t,y]=ode45('eq2',[t0 tf],[0 0]); X=1;Y=0:0.001:0.21;plot(X,Y,'-') plot(y(:,1),y(:,2),'*'),hold onx=0:0.01:1; y=-5*(1-x).^(4/5)/8+5*(1-x).^(6/5)/12+5/24; plot(x,y,'r')很明显数值计算的⽅法⽐较简单⽽且适⽤. 3.2 蚂蚁追击问题(1)建⽴平⾯直⾓坐标系.以正多边形的中⼼为原点, 设正多边形的⼀个顶点为起始点, 连接此点和原点作x 轴. 根据x 轴作出相应的y 轴; 选取⾜够⼩的t ?进⾏采样.(2)在每⼀时刻t ,计算每只蚂蚁在下⼀时刻t t +?时的坐标.不妨设甲追逐对象是⼄,在时间t 时,甲的坐标为A 11(,)x y ,⼄的坐标为B 22(,)x y .甲在t t +?时在'A 点(如图1), 其坐标为11(cos ,sin )x v t y v t θθ+?+?,其中2121cos ,sin ,x x y yd d dθθ--===. 同理,依次计算下⼀只蚂蚁在t t +?时的坐标.通过间隔t ?进⾏采样,得到新⼀轮各个蚂蚁在⼀个新的正多边形位置坐标.(4)重复2)步,直到d 充分⼩为⽌.(5)连接每只蚂蚁在各时刻的位置,就得到所求的轨迹.⽤MALAB 求解并作图,函数zhuJi(x,y)在附录⼀定义,如图6 t=[1:8]; s=7*exp(t.*2*pi/length(t)*i); x=real(s);y=imag(s);zhuJi(x,y)图6当蚂蚁为7只时的图形习题1. 求微分⽅程0sin 2')1(2=-+-x xy y x 的通解.2. 求微分⽅程x e y y y x sin 5'2''=+-的通解.3. 求微分⽅程组11,(,)A x y 22,(,)B x y 图1 在采样时间内,相连蚂蚁追击=-+=++00y x dtdy y x dtdx在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形.4. 分别⽤ ode23、ode45 求上述第 3 题中的微分⽅程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利⽤画图来⽐较两种求解器之间的差异.4 参考⽂献:[1] Mastering Matlab 6, D. Hanselman, B. Littlefield, 清华⼤学出版,2002[2] 赵静等编.数学建模与数学实验(第3版).北京:⾼等教育出版社.2008. [3] 姜启源编. 数学模型(第⼆版).北京:⾼等教育出版社.1993.[4] ⽯勇国. 蚂蚁追击问题与等⾓螺线. 宜宾学院学报. 2008,(6): 23-25. [5] 张伟年,杜正东,徐冰.常微分⽅程.北京:⾼等教育出版社.2006.5 附录附录⼀:zhuji(x,y)的M ⽂件 function zhuji(x,y) clf v=1; dt=0.05;x(length(x)+1)=x(1);y(length(y)+1)=y(1); plot(x,y,'*') holdfor it=1:1000for i=1:length(x)-1d=sqrt((x(i)-x(i+1))^2+(y(i)-y(i+1))^2); x(i)=x(i)+v*dt*(x(i+1)-x(i))/d; y(i)=y(i)+v*dt*(y(i+1)-y(i))/d; endplot(x,y,'.') hold onx(length(x))=x(1); y(length(y))=y(1); end。

用matlab求解常微分方程

用matlab求解常微分方程

实验六 用matlab 求解常微分方程1.微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。

如果未知函数是一元函数,称为常微分方程。

常微分方程的一般形式为0),,",',,()(=n y y y y t F如果未知函数是多元函数,成为偏微分方程。

联系一些未知函数的一组微分方程组称为微分方程组。

微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。

若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为)()(')()(1)1(1)(t b y t a y t a y t a y n n n n =++++--若上式中的系数ni t a i ,,2,1),( =均与t 无关,称之为常系数。

2.常微分方程的解析解有些微分方程可直接通过积分求解.例如,一解常系数常微分方程1+=y dt dy可化为dt y dy=+1,两边积分可得通解为1-=tce y .其中c 为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解.线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解.一阶变系数线性微分方程总可用这一思路求得显式解。

高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变异法求特解。

一阶常微分方程与高阶微分方程可以互化,已给一个n 阶方程),,",',()1()(-=n n y y y t f y设)1(21,,',-===n n y y y y y y ,可将上式化为一阶方程组⎪⎪⎪⎩⎪⎪⎪⎨⎧====-),,,,(''''2113221n n nn y y y t f y yy y y y y反过来,在许多情况下,一阶微分方程组也可化为高阶方程。

matlab 求解微分方程

matlab 求解微分方程

matlab 求解微分方程摘要:1.Matlab 简介2.微分方程基本概念3.Matlab 求解微分方程的方法4.常见微分方程求解实例5.总结正文:一、Matlab 简介Matlab 是一种广泛应用于科学计算、数据分析和可视化的编程语言。

它具有丰富的函数库和强大的矩阵计算能力,使得用户可以方便地完成各种复杂的数学运算和分析任务。

在微分方程求解领域,Matlab 同样具有很高的应用价值。

二、微分方程基本概念微分方程是数学中的一个重要分支,它描述了自然界和社会现象中许多变化规律。

微分方程可以分为偏微分方程和常微分方程两大类。

求解微分方程是数学和工程领域中的一个重要课题,关乎许多实际问题的解决。

三、Matlab 求解微分方程的方法Matlab 求解微分方程主要依赖于其内置的符号计算函数和数值计算函数。

用户可以根据微分方程的性质选择适当的求解方法,如符号解法、数值解法等。

Matlab 提供了丰富的函数和工具箱来支持微分方程的求解,如ode45、ode23 等。

四、常见微分方程求解实例1.常微分方程:例如一阶常微分方程y" + p(x)y = q(x),Matlab 可以通过ode45 函数求解。

2.偏微分方程:例如二维热传导方程,Matlab 可以通过pdepeye 函数求解。

3.线性微分方程组:例如常系数线性微分方程组,Matlab 可以通过ode45 等函数求解。

4.非线性微分方程:例如Riccati 方程,Matlab 可以通过ode45 等函数求解。

五、总结Matlab 作为一种强大的科学计算工具,可以帮助用户方便地求解各种微分方程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五讲 Matlab求解微分方程教学目的:学会用MATLAB求简单微分方程的解析解、数值解,加深对微分方程概念和应用的理解;针对一些具体的问题,如追击问题,掌握利用软件求解微分方程的过程;了解微分方程模型解决问题思维方法及技巧;体会微分方程建摸的艺术性.教学重点:利用机理分析建模微分方程模型,掌握追击问题的建模方法,掌握利用MATLAB求解数值解.教学难点:利用机理分析建模微分方程模型,通过举例,结合图形以及与恰当的假设突破教学难点.1微分方程相关函数(命令)及简介因为没有一种算法可以有效地解决所有的ODE 问题,为此,Matlab 提供了多种求解器Solver,对于不同的ODE 问题,采用不同的Solver.阶常微分方程(组)的初值问题的解的 Matlab 的常用程序,其中:ode23 采用龙格-库塔2 阶算法,用3 阶公式作误差估计来调节步长,具有低等的精度.ode45 则采用龙格-库塔4 阶算法,用5 阶公式作误差估计来调节步长,具有中等的精度.2 求解微分方程的一些例子2.1 几个可以直接用 Matlab 求微分方程精确解的例子:例1:求解微分方程22x xe xy dxdy-=+,并加以验证. 求解本问题的Matlab 程序为:syms x y %line1 y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') %line2 diff(y,x)+2 *x*y-x*exp(-x^2) %line3 simplify(diff(y,x)+2*x*y-x*exp(-x^2)) %line4说明:(1) 行line1是用命令定义x,y 为符号变量.这里可以不写,但为确保正确性,建议写上;(2) 行line2是用命令求出的微分方程的解:1/2*exp(-x^2)*x^2+exp(-x^2)*C1(3) 行line3使用所求得的解.这里是将解代入原微分方程,结果应该为0,但这里给出:-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)(4) 行line4 用 simplify() 函数对上式进行化简,结果为 0, 表明)(x y y =的确是微分方程的解.例2:求微分方程0'=-+x e y xy 在初始条件e y 2)1(=下的特解,并画出解函数的图形.求解本问题的 Matlab 程序为: syms x yy=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x') ezplot(y)微分方程的特解为:y=1/x*exp(x)+1/x* exp (1) (Matlab 格式),即xe e y x+=,此函数的图形如图 1:图1 y 关于x 的函数图象2.2 用ode23、ode45等求解非刚性的标准形式的一阶常微分方程(组)的初值问题的数值解(近似解).例3:求解微分方程初值问题⎪⎩⎪⎨⎧=++-=1)0(2222y xx y dx dy 的数值解,求解范围为区间[0, 0.5].fun=inline('-2*y+2*x^2+2*x','x','y'); [x,y]=ode23(fun,[0,0.5],1); x'; y'; plot(x,y,'o-') >> x' ans =0.0000 0.0400 0.0900 0.1400 0.1900 0.2400 0.2900 0.3400 0.3900 0.4400 0.4900 0.5000>> y' ans =1.0000 0.9247 0.8434 0.7754 0.7199 0.6764 0.6440 0.6222 0.6105 0.6084 0.6154 0.6179 图形结果为图 2.图2 y 关于x 的函数图像3 常微分在实际中的应用 3.1 导弹追踪问题1、符号说明,w ,乙舰的速率恒为v 0;设时刻t 乙舰的坐标为((),())X t Y t ,导弹的坐标为((),())x t y t ;当零时刻,((0),(0))(1,0)X Y =,((0),(0))(0,0)x y =.建立微分方程模型.202,01(0)0,'(0)0v d yk x dx w y y ⎧⎪⎪= =<<⎨⎪⎪==⎩由微分方程模型解得11(1)(1)11(),12(1)2(1)2(1)2(1)k k x x y x k k k k k +-+--=-+-≠+-+-++代入题设的数据1/5k =,得到导弹的运行轨迹为4655555(1)(1)81224y x x =--+-+当1=x 时245=y ,即当乙舰航行到点)245,1(处时被导弹击中. 被击中时间为:00245v v y t ==. 若v 0=1, 则在t =0.21处被击中. 利用MALAB 作图如图3.clear, x=0:0.01:1; y=-5*(1-x).^(4/5)/8+5*(1-x).^(6/5)/12+5/24; plot(x,y,'*')图3导弹运行轨迹(解析法) 图4两种方法对比的导弹运行轨迹2、数值方法求解.设导弹速率恒为w ,则得到参数方程为⎪⎪⎩⎪⎪⎨⎧--+-=--+-=)()()()()()(2222y Y y Y x X wdt dy x X y Y x X w dt dx因乙舰以速度0v 沿直线1x =运动,设01v =,5,1,w X Y t ===,因此导弹运动轨迹的参数方程为:⎪⎪⎪⎩⎪⎪⎪⎨⎧==--+-=--+-=0)0(,0)0()()()1(5)1()()1(52222y x y t y t x dtdyx y t x dt dxMATLAB 求解数值解程序如下,结果见图4 t0=0,tf=0.21;[t,y]=ode45('eq2',[t0 tf],[0 0]); X=1;Y=0:0.001:0.21;plot(X,Y,'-') plot(y(:,1),y(:,2),'*'),hold onx=0:0.01:1; y=-5*(1-x).^(4/5)/8+5*(1-x).^(6/5)/12+5/24; plot(x,y,'r')很明显数值计算的方法比较简单而且适用. 3.2 蚂蚁追击问题(1)建立平面直角坐标系.以正多边形的中心为原点, 设正多边形的一个顶点为起始点, 连接此点和原点作x 轴. 根据x 轴作出相应的y 轴; 选取足够小的t ∆进行采样.(2)在每一时刻t ,计算每只蚂蚁在下一时刻t t +∆时的坐标.不妨设甲追逐对象是乙,在时间t 时,甲的坐标为A 11(,)x y ,乙的坐标为B 22(,)x y .甲在t t +∆时在'A 点(如图1), 其坐标为11(cos ,sin )x v t y v t θθ+∆+∆,其中2121cos ,sin ,x x y yd d dθθ--===. 同理,依次计算下一只蚂蚁在t t +∆时的坐标.通过间隔t ∆进行采样,得到新一轮各个蚂蚁在一个新的正多边形位置坐标.(4)重复2)步,直到d 充分小为止.(5)连接每只蚂蚁在各时刻的位置,就得到所求的轨迹.用MALAB 求解并作图,函数zhuJi(x,y)在附录一定义,如图6 t=[1:8]; s=7*exp(t.*2*pi/length(t)*i); x=real(s); y=imag(s);zhuJi(x,y)图6当蚂蚁为7只时的图形习题1. 求微分方程0sin 2')1(2=-+-x xy y x 的通解.2. 求微分方程x e y y y x sin 5'2''=+-的通解.3. 求微分方程组11,(,)A x y 22,(,)B x y 图1 在采样时间内,相连蚂蚁追击⎪⎪⎩⎪⎪⎨⎧=-+=++00y x dtdy y x dtdx在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形.4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利用画图来比较两种求解器之间的差异.4 参考文献:[1] Mastering Matlab 6, D. Hanselman, B. Littlefield, 清华大学出版,2002[2] 赵静等编.数学建模与数学实验(第3版).北京:高等教育出版社.2008. [3] 姜启源编. 数学模型(第二版).北京:高等教育出版社.1993.[4] 石勇国. 蚂蚁追击问题与等角螺线. 宜宾学院学报. 2008,(6): 23-25. [5] 张伟年,杜正东,徐冰.常微分方程.北京:高等教育出版社.2006.5 附录附录一:zhuji(x,y)的M 文件 function zhuji(x,y) clf v=1; dt=0.05;x(length(x)+1)=x(1);y(length(y)+1)=y(1); plot(x,y,'*') holdfor it=1:1000for i=1:length(x)-1d=sqrt((x(i)-x(i+1))^2+(y(i)-y(i+1))^2); x(i)=x(i)+v*dt*(x(i+1)-x(i))/d; y(i)=y(i)+v*dt*(y(i+1)-y(i))/d; endplot(x,y,'.') hold onx(length(x))=x(1); y(length(y))=y(1); end。

相关文档
最新文档