分数阶微分方程的数值解法及其MATLAB实现

合集下载

用Matlab解微分方程

用Matlab解微分方程

用Matlab 软件求解微分方程1.解析解(1)一阶微分方程 求21y dxdy +=的通解:dsolve('Dy=1+y^2','x') 求y x dxdy -+=21的通解:dsolve('Dy=1+x^2-y','x') 求⎪⎩⎪⎨⎧=+=1)0(12y y dx dy 的特解:dsolve('Dy=1+y^2',’y(0)=1’,'x')(2)高阶微分方程 求解⎩⎨⎧-='==-+'+''.2)2(,2)2(,0)(222πππy y y n x y x y x 其中,21=n ,命令为: dsolve('x^2*D2y+x*Dy+(x^2-0.5^2)*y=0','y(pi/2)=2,Dy(pi/2)=-2/pi','x') 求042=-+'-'''x y y y 的通解,命令为:dsolve('D3y-2*Dy+y-4*x=0','x')输出为:ans=8+4*x+C1*exp(x)+C2*exp(-1/2*(5^(1/2)+1)*x)+C3*exp(1/2*(5^(1/2)-1)*x)(3)一阶微分方程组求⎩⎨⎧+-='+=').(3)(4)(),(4)(3)(x g x f x g x g x f x f 的通解:[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','x') 输出为: f =exp(3*x)*(cos(4*x)*C1+sin(4*x)*C2)g =-exp(3*x)*(sin(4*x)*C1-cos(4*x)*C2)若再加上初始条件1)0(,0)0(==g f ,则求特解:[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','f(0)=0,g(0)=1','x')输出为: f =exp(3*x)*sin(4*x)g =exp(3*x)*cos(4*x)2.数值解(1)一阶微分方程⎪⎩⎪⎨⎧=≤≤-=.1)0(,10,2y x y x y dxdy 现以步长h=0.1用“4阶龙格—库塔公式”求数值解: 先建立“函数M —文件”:function f=eqs1(x,y)f=y-2*x/y;再命令: 格式为:[自变量,因变量]=ode45(‘函数文件名’,节点数组,初始值) 命令为: [x,y]=ode45('eqs1',0:0.1:1,1)若还要画图,就继续命令: plot(x,y)(2)一阶微分方程组⎪⎩⎪⎨⎧==+-='≤≤-+='.3.0)0(,2.0)0(,2sin ,10,2cos 21212211y y y y x y x y y x y 只须向量化,即可用前面方法: function f=eqs2(x,y)f=[cos(x)+2*y(1)-y(2);sin(x)-y(1)+2*y(2)];将此函数文件,以文件名eqs2保存后,再下命令:[x,y]=ode45('eqs2',0:0.1:1,[0.2;0.3])(注:输出的y 是矩阵,第i 列为函数i y 的数值解)要画图,继续命令:hold on,plot(x,y(:,1)),plot(x,y(:,2)),hold off(3)高阶微分方程先化成一阶微分方程组,再用前面方法。

微分方程的Matlab求解ppt课件

微分方程的Matlab求解ppt课件
取t0=0,tf=10,建立程序如下: 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 on plot(y(:,1),y(:,2),'*')
注意: 1、在解n个未知函数的方程组时,x0和x均为n维向量,
m-文件中的待解方程组应以x的分量形式写成.
2、使用Matlab软件求数值解时,高阶微分方程必须 变换成等价的一阶微分方程组.
例4
d2x dt 2
1000(1
x2
)
dx dt
x
0
x(0) 2; x'(0) 0
解: 令 y1=x,y2=y1’
由待解 方程写 成的m-
ts=[t0,tf], t0、tf为自
函数的 初值
变量的初
文件名 值和终值
ode23:组合的2/3阶龙格-库塔-芬尔格算法 ode45:运用组合的4/5阶龙格-库塔-芬尔格算法
用于设定误差限(缺省时设定相对误差10-3, 绝对误差10-6), 命令为:options=odeset(’reltol’,rt,’abstol’,at), rt,at:分别为设定的相对误差和绝对误差.
z = (-C1+exp(4*t)*C1-2*exp(4*t)+C2+exp(4*t)*C3)*exp(-2*t)
用Matlab软件求常微分方程的数值解
[t,x]=solver(’f’,ts,x0,options)
自变 函数 量值 值
ode45 ode23 ode113 ode15s ode23s

微分方程的数值解法matlab(四阶龙格—库塔法)

微分方程的数值解法matlab(四阶龙格—库塔法)

解析解: x x x1 3 2(((ttt))) 0 .0 8 1 1 2 P k 8 0siw n t) (2 .6 3 0 3 3 P k 0siw n t) (0 .2 12 2 2 P k 0siw n t)(
第一个质量的位移响应时程
Y (t)A(Y t)P(t)
(2)
Y (t)A(Y t)P(t)
3. Matlab 程序(主程序:ZCX)
t0;Y0;h;N;P0,w; %输入初始值、步长、迭代次数、初始激励力;
for i = 1 : N
t1 = t0 + h
P=[P0*sin(w*t0);0.0;0.0]
%输入t0时刻的外部激励力
Van der Pol方程
% 子程序 (程序名: dYdt.m ) function Ydot = dYdt (t, Y) Ydot=[Y(2);-Y(2)*(Y(1)^2-1)-Y(1)];
或写为
function Ydot = dYdt (t, Y) Ydot=zeros(size(Y)); Ydot(1)=Y(2); Ydot(2)=-Y(2)*(Y(1).^2-1)-Y(1)];
Solver解算指令的使用格式
说明:
t0:初始时刻;tN:终点时刻 Y0:初值; tol:计算精度
[t, Y]=solver (‘ODE函数文件名’, t0, tN, Y0, tol);
ode45
输出宗量形式
y1 (t0 )
Y
y1
(t1
)
y
1
(t
2
)
y2 (t0 )
y
2
(
t1
)
y
2
(
t

用MATLAB求解微分方程及微分方程组

用MATLAB求解微分方程及微分方程组
2. 由于弹头始终对准乙舰,故导弹的速度平行于乙舰与导弹头位置的差向量,
dx dt X x , 0 即: Y y dy dt w dx ( X x) dt 2 2 ( X x ) (Y y ) 消去λ 得: dy w (Y y ) 2 2 dt ( X x ) (Y y )
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 2 4 6 8 10 12
解
1、建立m-文件rigid.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);
用MATLAB求解微分方程
1. 微分方程的解析解
求微分方程(组)的解析解命令: dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)
记号: 在表达微分方程时,用字母 D 表示求微分,D2、D3 等 表示求高阶微分.任何 D 后所跟的字母为因变量,自变量可以指 定或由系统规则选定为确省. 例如,微分方程
任取k1、k2的一组初始值:k0=[2,1];
输入命令: k=lsqcurvefit('curvefun1',k0,t,c) 运行结果为: k =[ 1.3240 作图表示求解结果: t1=0:0.1:18; f=curvefun1(k,t1); plot(t,c,'ko',t1,f,'r-')
90 80 70 60 50 40 30 20 10 0
(2)
(3)
3.因乙舰以速度v0沿直线x=1运动,设v0=1,则w=5,X=1,Y=t

matlab微分方程数值解代码

matlab微分方程数值解代码

在科学和工程领域中,微分方程数值解是一个重要而复杂的问题。

其中,MATLAB提供了强大的工具来解决微分方程的数值问题,准确而高效地解决各种类型的微分方程。

本文将通过对MATLAB微分方程数值解的探讨,帮助读者深入理解这一主题。

1. MATLAB微分方程数值解的基本概念MATLAB是一种功能强大的数学软件,它提供了各种数值计算工具,包括用于解决微分方程的函数和算法。

对于给定的微分方程,MATLAB可以通过数值方法求解其近似解。

这些数值方法包括欧拉法、梯形法、龙格-库塔法等,它们可以有效地解决常微分方程和偏微分方程的数值问题。

2. MATLAB微分方程数值解的具体应用在工程和科学领域中,微分方程数值解广泛应用于模拟和预测各种现象和系统的行为。

电路中的电压和电流的变化、机械系统的运动轨迹、化学反应的速率等都可以通过微分方程数值解来求解。

而MATLAB提供的数值解算法可以帮助工程师和科学家们有效地进行模拟和分析。

3. MATLAB微分方程数值解的代码实现在MATLAB中,可以通过编写代码来实现微分方程的数值解。

使用MATLAB的ode45函数可以很方便地对常微分方程进行求解,而pdepe函数则可以用于求解偏微分方程。

这些函数可以根据用户输入的微分方程和边界条件,自动选择合适的数值方法进行求解,从而得到精确的数值解。

4. 个人观点和理解MATLAB微分方程数值解的强大功能为工程师和科学家们提供了便利而高效的工具,帮助他们解决实际问题和开展研究工作。

通过对微分方程数值解的学习和实践,我深切体会到MATLAB在解决微分方程数值问题方面的优势和便利性,这对于我的工作和研究具有非常重要的意义。

总结回顾通过本文的探讨,我们深入了解了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 %line1y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') %line2diff(y ,x)+2 *x*y-x*exp(-x^2) %line3simplify(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 格式),即x e e y x+=,此函数的图形如图 1:图1 y 关于x 的函数图象2.2 用ode23、ode45等求解非刚性的标准形式的一阶常微分方程(组)的初值问题的数值解(近似解).例3:求解微分方程初值问题⎪⎩⎪⎨⎧=++-=1)0(2222y x x 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; yplot(x,y ,'o-')>> x'ans =0.0000 0.0400 0.0900 0.1400 0.1900 0.24000.2900 0.3400 0.3900 0.4400 0.4900 0.5000>> y'ans =1.0000 0.9247 0.8434 0.7754 0.7199 0.67640.6440 0.6222 0.6105 0.6084 0.6154 0.6179图形结果为图2.图2 y关于x的函数图像3 常微分在实际中的应用3.1 导弹追踪问题设位于坐标原点的甲舰向位于x轴上点A(1,0)处的乙舰发射导弹,导弹v沿平行于y轴的直线行驶,导弹的速度始终对准乙舰。

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解微分方程

matlab解微分方程
MATLAB(Matrix Laboratory,矩阵实验室)是一款用于科学、工程和统计计算的高级编程语言,它还可以用于解决微分方程问题。

下面介绍MATLAB用于求解微分方程的基本步骤:
一、数据准备
1、将微分方程转化为数学函数形式;
2、针对函数的参数定义初始值;
3、定义步长,步长是时间和空间的划分。

二、建立模型
1、使用矩阵建立微分方程;
2、建立梯度,使用微分方程中状态式未知变量定义梯度函数;
3、建立随机变量和误差函数;
三、使用MATLAB求解
1、用sympy模块将方程转换成一维偏微分方程;
2、用ode45函数实现数值求解,并储存相应迭代结果;
3、用error command函数检测方程式的迭代收敛情况,还可以使用plot函数画出方程的解析解;
4、通过迭代的结果求解微分方程的数值解或者特征值;
四、总结
1、通过使用MATLAB进行微分方程的数值求解比手工求解更加的快捷和高效;
2、MATLAB中所提供的求解方法针对不同的微分方程既可以使用数值方法,也可
以使用解析方法;
3、用MATLAB解微分方程需要具备一定的数学基础,并熟悉MATLAB相关函数,能够准确解读迭代结果。

MATLAB 数值微积分与微分方程式求解


Matlab求解常微分方程式
Ex:

dy1 dt
=
y1
+
y2e−t
dy2 dt
=
− y1 y2
+ cos(t)
1. edit fun.m
function dydt=fun(t,y)
dydt(1) = y(1)+y(2)*exp(-t);
dydt(2) = -y(1)*y(2)+cos(t);
Stiff ODE 指的是其內部某些狀態響應快速,而某些則 相對具較緩慢動態
勁度
勁度系統 (stiff system)表示其具有快速變化以及緩慢變化 的部分。 勁度系統例子: dy = −1000y + 3000 − 2000e−t
dt
假使y(0)=0,其解 y = 3 − 0.998e−1000t − 2.002e−t
用前述方法求解用前述方法求解用前述方法求解用前述方法求解0010ysin??yettt21221sincosttyyyyyteeyty?????12122210100sincosttyy?yyyteeyty???????11matlabode指令matlab用于求解起始值常微分方程式問題的指令stiffode指的是其內部某些狀態響應快速而某些則相對具較緩慢動態ode23tbode23tode23sode15sstiffodeode113ode23ode45nonstiffode指令問題形式勁度勁度系統勁度系統勁度系統勁度系統stiffsystem表示其具有快速變化以及緩慢變化的部分
k4 = f (ti + h, yi + k3h)
方程式系統
許多實際的工程及科學問題需要求解的是聯立常微分方 程式系統,而不只是單一方程式。

用 Matlab 求解微分方程


方式二 输入:[x,y,z]=dsolve('Dx=2*x-3*y+3*z','Dy=4*x -5*y+3*z','Dz=4*x-4*y+2*z', 't'); x=simple(x) % 将x化简 y=simple(y) z=simple(z) 输出:x = C2/exp(t)+C3*exp(t)^2 y = C2*exp(-t)+C3*exp(2*t)+exp(-2*t)*C1 z = C3*exp(2*t)+exp(-2*t)*C1
2
例 8.5.3 求解下列微分方程组
dx dt 2 x 3 y 3 z dy 4 x 5 y 3z dt dz 4 x 4 y 2 z dt
求通解
方式一 输入: [x,y,z]=dsolve('Dx=2*x-3*y+3*z','Dy=4*x -5*y+3*z','Dz=4*x-4*y+2*z', 't'); 输出:x = C2*exp(-t)+C3*exp(2*t) y = C2*exp(-t)+C3*exp(2*t)+exp(-2*t)*C1 z = C3*exp(2*t)+exp(-2*t)*C1
运行程序,得到如图的结果。图中,y1 的图 形为实线, y2 的图形为“ * ”线, y3 的图形为 1 “+”线。
0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 2 4 6 8 10 12
例 8.5.6 导弹追踪问题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档