用MATLAB求解微分方程

您所在的位置:网站首页 小米小爱智能音箱pro8 用MATLAB求解微分方程

用MATLAB求解微分方程

#用MATLAB求解微分方程| 来源: 网络整理| 查看: 265

微分方程的解析解

求微分方程(组)的解析解命令:

dsolve('方程1','方程2',...'方程n','初始条件','自变量')

注:字母D表示求微分,D2、D3等表示求高阶微分,D后所跟的字母为因变量,自变量可以指定或由系统规则选定为缺省,默认是以t为自变量。 如,微分方程d2y/dx2 =0 应表达为:D2y=0

例1:求 du/dt=1+u2的通解。 输入命令:dsolve(‘Du=1+u^2’,‘t’) 运行结果:u=tan(t-c) 在这里插入图片描述 输入命令y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x') 运行结果为y =3sin(5x)exp(-2x) 在这里插入图片描述 输入命令:[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 = C3exp(2t) + C4exp(-t) y = C3exp(2t) + C4exp(-t) + C5exp(-2t) z = C3exp(2t) + C5exp(-2t)

以上都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解。

用MATLAB求微分方程的数值解

在求解常微分方程数值解方面,MATLAB具有丰富的函数,我们统称为solver,其一般格式为: 在这里插入图片描述 参数说明: t是时间点组成的列向量; x是微分方程(组)的解矩阵,每一行对应相应t的该行上时间点的微分方程(组)的解; ts有两种形式 [t0,tf] 和[t0,t1,…tf],两种都以 t0 为初始点,根据 tf 自动选择积分步长。前者返回实际求解过程中所有求解的时间点上的解,而后者只返回设定时间点上的解。后者对计算效率没有太大影响,但是求解大型问题时,可以减少内存存储。 solver为命令 ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一,其中前3个适用于求解非刚性(Nonstiff)问题,后4个适用于刚性问题。这些命令各有特点,列表说明:

求解器ODE类型特点说明ode45非刚性一步算法,4,5阶Runge-Kutta方法累积截断误差(△x)3大部分场合的首选算法ode23非刚性一步算法,2,3阶Runge-Kutta方法累积截断误差(△x)3使用于精度较低的情形ode113非刚性多步算法,Adam算法,高低精度均可达到 10-3~10-6计算时间比ode45短ode23t适度刚性采用梯形算法适度刚性情形ode15s刚性多步法,Gear’s 反向数值积分,精度中等若ode45失效时,可尝试使用ode23s刚性一步法,2阶Rosebrock算法,低精度当精度较低时,计算时间比ode15s短ode23tb刚性梯形算法,低精度当精度较低时,计算时间比ode15s短

例4:求解常微分方程 y’=-2y+2x2+2x,0



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3