matlab常微分方程和常微分方程组求解方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dx1 x2 , x1 (0) 1 dt dx2 7(1 x 2 ) x x , x (0) 0 1 2 1 2 dt
接着,编写 vdp.m 如下: function fy=vdp(t,x) fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)]; 再编写 m 文件 sy12_6.m 如下: y0=[1;0] [t,x]=ode45(@vdp,[0,40],y0); y=x(:,1);dy=x(:,2); plot(t,y,t,dy)
dy 1 例 1: 求解常微分方程 dx x y 的 MATLAB 程序为: dsolve('Dy=1/(x+y)','x'),
注意,系统缺省的自变量为 t,因此这里要把自变量写明。 结果为:-lambertw(-C1*exp(-x-1))-x-1 其中:Y=lambertw(X)表示函数关系 Y*exp(Y)=X。
[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy- x-3*y=exp(2*t)','t')
dy dx 2x 10 cos t , x t 0 2 dt dt dx dy 2 y 4e2t , y 0 t 0 dt dt 例 4: 求常微分方程组 通解的 MATLAB 程序
结果为: x= 0,0.0400,0.0900,0.1400,0.1900,0.2400,0.2900,0.3400,0.3900,0.4400,0.4900,0.5000 y= 1.0000,0.9247,0.8434,0.7754,0.7199,0.6764,0.6440,0.6222,0.6105,0.6084,0.6154,0.6 179
常微分方程和常微分方程组的求解
一、实验目的: 熟悉 Matlab 软件中关于求解常微分方程和常微分方程组的各种命令,掌握 利用 Matlab 软件进行常微分方程和常微分方程组的求解。 二、相关知识 在 MATLAB 中,由函数 dsolve()解决常微分方程(组)的求解问题,其具体 格式如下: X=dsolve(‘eqn1’,’eqn2’,…) 函数 dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通 解,如果有初始条件,则求出特解。
3
说明 大部分场合的首选算 法 使用于精度较低的情 形 计算时间比 ode45 短 适度刚性情形 若 ode45 失效时, 可尝试使用 当精度较低时, 计算时间比 ode15s 短
一步算法, 2,3 阶 Runge-Kutta ode23 非刚性 方法累积截断误差 (x)
3
多步法, Adams 算法, 高低精 ode113 ode23t ode15s ode23s 非刚性 适度刚性 刚性 刚性
d2y dy (1 y 2 ) y 0, y(0) 1, y '(0) 0 2 dt 例 6:求解常微分方程 dt 的解,并画
出解的图形。 分析:这是一个二阶非线性方程,用现成的方法均不能求解,但我们可以通 过下面的变换,将二阶方程化为一阶方程组,即可求解。
dy x2 x y dt , 7 ,则得到: 令: 1 ,
y ' f (t , y) 。
solver 为命令 ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb 之 一,这些命令各有特点。我们列表说明如下: 求解 器 ode45 ODE 类型 特点 一步算法, 4,5 阶 Runge-Kutta 非刚性 方法累积截断误差 (x)
为:
[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0' ) 以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是, 我们知道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法 求出其解析解, 此时, 我们需要寻求方程的数值解, 在求常微分方程数值解方面, MATLAB 具有丰富的函数,我们将其统称为 solver,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 该函数表示在区间 tspan=[t0,tf]上,用初始条件 y0 求解显式常微分方程
3 6 度均可达到 10 ~ 10
采用梯形算法 多步法,Gear’s 反向 数值积分,精度中等 一步法, 2 阶 Rosebrock 算法, 低精度。
odefun 为显式常微分方程 y ' f (t , y) 中的 f (t , y) tspan 为求解区间,要获得问题在其他指定点 t0 , t1 , t2 ,
并做出解函数的曲线图。 6.完成实验报告。
三、实验内容
dy 3y 8 y 1.利用 MATLAB 求常微分方程的初值问题 dx , x 0 2 的解。
2 2. 利用 MATLAB 求常微分方程的初值问题 (1 x ) y '' 2 xy ' ,y x 0 1 ,y ' x 0 3
的解。
(4) 3.利用 MATLAB 求常微分方程 y 2 y ''' y '' 0 的解。
dy dx 2 4 x y et , dt dt dx 3x y 0, dt 4.利用 MATLAB 求常微分方程组
x t 0
3 2
y t 0 0
的特解。
Leabharlann Baidu
2 5. 求解常微分方程 y '' 2(1 y ) y ' y 0 ,0 x 30 , y(0) 1 ,y '(0) 0 的特解,
tspan [t0 , t1 , t2 , , t f ] (要求 ti 单调),
上的解,则令
y0 初始条件。
2 例 5:求解常微分方程 y ' 2 y 2 x 2 x ,0 x 0.5 , y(0) 1 的 MATLAB
程序如下:fun=inline('-2*y+2*x*x+2*x');[x,y]=ode23(fun,[0,0.5],1)
2 例 2:求解常微分方程 yy '' y ' 0 的 MATLAB 程序为:
Y2=dsolve('y*D2y- Dy^2=0’,’x’) 结果为: Y2 =[ exp((x+C2)/C1)] [ C2] 我们看到有两个解,其中一个是常数。
dx 5 x y et dt dy x 3 y e 2t dt 例 3:求常微分方程组 通解的 MATLAB 程序为: