第14章常微分方程的MATLAB求解

合集下载

matlab-常微分方程

matlab-常微分方程

Events
含义 为‘on’时,控制解向量 有效值: 范数的相对误差,使每 on、off 步计算中,满足: 缺省值: norm(e)<=max(RelTol*n off orm(y),AbsTol) 有效值: 为‘on’时,返回相应的 on、off 事件记录
取值
参数设置
属性名 含义 若无输出参量,则solver 将执行下面操作之一: 有效值: 画出解向量中各元素随 odeplot、 时间的变化; odephas2、画出解向量中前两个分 odephas3、量构成的相平面图; odeprint 画出解向量中前三个分 缺省值: 量构成的三维相空间图 odeplot ; 随计算过程,显示解向 量 取值
使用于精度较低 的情形
OD 求解器 E类 Solver 型 非 ode113 刚 性 适 度 ode23t 刚 性 刚 ode15s 性
特点
说明
多步法;Adams算 计算时间比ode45 法;高低精度均可 短 -3~10-6 到10 采用梯形算法 适度刚性情形
多步法;Gear’s反 若ode45失效时, 向数值微分;精度 可尝试使用 中等
• (6)若没有给定输出参量,则在命令窗口显 示解列表。若该命令找不到解析解,则返 回一警告信息,同时返回一空的sym对象。 这时,用户可以用命令ode23或ode45求解 方程组的数值解。
y ′′ = −a y ′ y ( 0) = 1 y ′(π / a ) = 0
2
例1
例2
• >> [u,v] = dsolve('Du=v,Dv=u') u= C1*exp(-t)+C2*exp(t) V= -C1*exp(-t)+C2*exp(t)

常微分方程(ODEs)的MATLAB数值解法

常微分方程(ODEs)的MATLAB数值解法
Matlab 中常微分方程数值解法讲解©
1.ODE 解算器简介 ..............................................................................................................................................................3 2.微分方程转换 ...................................................................................................................................................................5 3.刚性/非刚性问题 ..............................................................................................................................................................8 4.隐式微分方程(IDE) ........................................................................................................................................................10 5.微分代数方程(DAE)....................................................................................................................................................... 15 6.延迟微分方程(DDE)....................................................................................................................................................... 18 7.边值问题(BVP) ...............................................................................................................................................................20

第14章常微分方程的MATLAB求解

第14章常微分方程的MATLAB求解

因此,方程 ,设其通解为
就成为 ,又
,这是一个关于变量 的一阶微分方程 因此又得到一个一阶微分方程
对它进行积分,便得到方程 的通解为 型的微分方程:方程中不显含自变量x ,为了求出它的解,我们令 ,并利用复合函数求导法则把 化为对 的导数,即 这样,方程 ,设它的通解为 就成为 这是一个关于变量 分离变量并积分,便得方程 的一阶微分方程 的通解为
14.6 边值问题的数值解
1.打靶法
打靶法也称为试射法,其基本思想是把边值问题作初值问题来求解,从满足 左端边界条件的解曲线中寻找也满足右端边界条件的解。
线性方程边值问题的打靶法:
考虑如下给出的二阶线性边值问题 该边值问题的打靶法求解过程可以由如下步骤完成:(1)计算下面齐次微分方程在区间 上的数值解 , ,初值条件: ;(2)计算下面齐 次微分方程在区间 上的数值解 , ,初值条件: ;(3)计算下面初值问题在区间 ,初值条件 : 计算 题的数值解 上的数值解 , ;(4)若
微分方程:一般的,凡表示未知函数、未知函数的导数与自变量之间的关系的方程,叫做微 分方程,有时也简称方程。 微分方程的阶:微分方程中所出现的未知函数的最高阶导数的阶数,叫做微分方程的阶 微分方程的解:找出这样的函数,把这函数代入微分方程能使该方程成为恒等式。这个函数 就叫做微分方程的解。 微分方程的通解:如果微分方程的解中含有任意常数,且任意常数的个数与微分方程的阶数 相同,这样的解叫做微分方程的通解。 初始条件:设微分方程中的未知函数为 ,如果微分方程是一阶的,通常用来确定任 意常数的条件是 时, 或写成 其中 都是给定的值;如果微分方程是二阶的,通常用来确定任意常数的条件是
其中 和 都是给定的值,上述这种条件叫做初始条件。 确定了通解中的任意常数以后,就得到微分方程的特解。求微分方程 件 的特解是这样一个问题,叫做一阶微分方程的初值问题,记作

常微分方程matlab程序

常微分方程matlab程序

常微分方程MATLAB程序以下是一个简单的MATLAB 程序,用于求解一阶常微分方程:matlab复制代码% 定义微分方程 dy/dx = f(x, y)f = @(x, y) -x*y;% 初始条件 y(0) = 1y0 = 1;% 定义 x 的范围xspan = [0, 10];% 使用 MATLAB 内置函数 ode45 进行求解[t, y] = ode45(f, xspan, y0);% 绘制解的图形plot(t, y(:,1));xlabel('x');ylabel('y');title('Solution of the differential equation dy/dx = -xy');在这个程序中,我们定义了一个一阶常微分方程dy/dx = -xy,并使用MATLAB 内置函数ode45进行求解。

初始条件为y(0) = 1,求解范围为xspan = [0, 10]。

最后,我们使用plot函数绘制了解的图形。

这个程序是用来求解一阶常微分方程的,而这个方程是dy/dx = -xy。

这是一个简单的线性方程,但它的解在物理和工程中有许多实际应用。

接下来,我们逐行解释一下代码:1.% 定义微分方程 dy/dx = f(x, y):这是一个注释,说明下面的代码是定义微分方程。

2. f = @(x, y) -x*y;:这行定义了一个匿名函数f,它接受两个参数x和y,并返回-x*y。

这个函数就是我们的微分方程dy/dx的右边部分。

3.% 初始条件 y(0) = 1:这是一个注释,说明下面的代码是定义初始条件。

4.y0 = 1;:这行定义了初始条件y(0) = 1,也就是说当x=0时,y=1。

5.% 定义 x 的范围:这是一个注释,说明下面的代码是定义自变量x的范围。

6.xspan = [0, 10];:这行定义了自变量x的范围从0到10。

7.% 使用 MATLAB 内置函数 ode45 进行求解:这是一个注释,说明下面的代码将使用MATLAB 的内置函数ode45来求解微分方程。

matlab_常微分方程数值解法

matlab_常微分方程数值解法
d2x 2x2 0
dt 2
简朴问题可以求得解析解,多数实际问题靠数值求解 。
第4页
一阶常微分方程(ODE )初值问题 : ODE :Ordinary Differential Equation
dy
f
(x,
y)
dx
x0 x xn
y(x0 ) y0
数值解法就是求y(x)在某些分立旳节点 xn 上旳近似值 yn,用以近似y(xn)
x0
y0
x1 f y(x), x dx
x0
x2 f y(x), x dx
x1
y(x1) f y(x1), x1 h
第17页
同样,在[x0,xn+1] ,积分采用矩形近似,得:
y(xn1) y0
f xn1
x0
y(x), x dx
y(xn ) f y(xn ), xn h
yn y(xn )
第5页
2、欧拉近似办法
2.1 简朴欧拉(L.Euler, 1707-1783)办法。
dy
dx
f
(y, x)
y(x0 ) y0
欧拉数值算法就是由初值通过递推求解,递推求解
就是从初值开始,后一种函数值由前一种函数值得到。核 心是构造递推公式。
y0 y1 y2 yn
第6页
i 1,2,...
第36页
没有一种算法可以有效地解决所有旳 ODE 问题,因此 MATLAB 提供了多种ODE函数。
函数 ODE类
特点
阐明

ode45
非刚性 单步法;4,5 阶 R-K 措施;合计 大部分场合旳首选措施
截断误差为 (△x)3
ode23
非刚性 单步法;2,3 阶 R-K 措施;合计 使用于精度较低旳情形

matlab数值求解常微分方程快速方法

matlab数值求解常微分方程快速方法

MATLAB是一种用于科学计算和工程应用的高级编程语言和交互式环境。

它在数学建模、模拟和分析等方面有着广泛的应用。

在MATLAB 中,常微分方程的数值求解是一个常见的应用场景。

在实际工程问题中,通常需要对常微分方程进行数值求解来模拟系统的动态行为。

本文将介绍MATLAB中对常微分方程进行数值求解的快速方法。

1. 基本概念在MATLAB中,可以使用ode45函数来对常微分方程进行数值求解。

ode45是一种常用的Runge-Kutta法,它可以自适应地选取步长,并且具有较高的数值精度。

使用ode45函数可以方便地对各种类型的常微分方程进行求解,包括一阶、高阶、常系数和变系数的微分方程。

2. 函数调用要使用ode45函数进行常微分方程的数值求解,需要按照以下格式进行函数调用:[t, y] = ode45(odefun, tspan, y0)其中,odefun表示用于描述微分方程的函数,tspan表示求解的时间跨度,y0表示初值条件,t和y分别表示求解得到的时间序列和对应的解向量。

3. 示例演示为了更好地理解如何使用ode45函数进行常微分方程的数值求解,下面我们以一个具体的例子来进行演示。

考虑如下的一阶常微分方程:dy/dt = -2*y其中,y(0) = 1。

我们可以编写一个描述微分方程的函数odefun:function dydt = odefun(t, y)dydt = -2*y;按照上述的函数调用格式,使用ode45函数进行求解:tspan = [0 10];y0 = 1;[t, y] = ode45(odefun, tspan, y0);绘制出解曲线:plot(t, y);4. 高级用法除了基本的函数调用方式外,MATLAB中还提供了更多高级的方法来对常微分方程进行数值求解。

可以通过设定选项参数来控制数值求解的精度和稳定性,并且还可以对刚性微分方程进行求解。

5. 性能优化在实际工程应用中,常常需要对大规模的常微分方程进行数值求解。

matlab用欧拉法求解常微分方程

matlab用欧拉法求解常微分方程

matlab用欧拉法求解常微分方程在数学和科学领域中,常微分方程是一种非常有用的工具,用于描述许多自然和物理现象。

MATLAB是一种强大的数学软件,可以用来解决许多数学问题。

本文将介绍如何使用欧拉法在MATLAB中求解常微分方程。

欧拉法是一种基本的数值方法,用于近似解决微积分方程问题。

该方法使用离散时间步长,将微积分方程转换成差分方程,并不断迭代求解。

欧拉法的实现非常简单,因此它很适合初学者。

下面是使用欧拉法在MATLAB中求解常微分方程的步骤:1. 定义常微分方程以 y' = -0.5y + 3sin(t) 为例,我们先定义常微分方程。

在MATLAB中,可以使用 anonymous functions 实现:dydt = @(t,y) -0.5*y + 3*sin(t);2. 定义时间范围和时间步长我们需要定义时间范围和时间步长,以便在一定时间范围内求解差分方程。

在这个例子中,我们定义时间范围为 0 到 10,并定义时间步长为 0.1:tspan = [0 10];h = 0.1;3. 定义初始条件我们需要定义初始条件,即 y(0) 的值。

在这个例子中,我们假设 y(0) = 1:y0 = 1;4. 求解差分方程现在我们可以使用欧拉法求解差分方程了。

在MATLAB中,可以使用 odeEuler 函数(需要自己编写):[t,y] = odeEuler(dydt,tspan,y0,h);5. 可视化结果最后,我们可以将结果可视化,以便更好地理解求解过程。

在这个例子中,我们可以用 plot 函数将求解结果绘制出来:plot(t,y)xlabel('Time')ylabel('y(t)')title('Solution of y'' = -0.5y + 3sin(t) using Euler''s method')以上就是使用欧拉法在MATLAB中求解常微分方程的基本步骤。

matlab求解常微分方程

matlab求解常微分方程

matlab求解常微分⽅程本⽂主要介绍matlab中求解常微分⽅程(组)的dsolve和ode系列函数,并通过例⼦加深读者的理解。

⼀、符号介绍D: 微分符号;D2表⽰⼆阶微分,D3表⽰三阶微分,以此类推。

⼆、函数功能介绍及例程1、dsolve 函数dsolve函数⽤于求常微分⽅程组的精确解,也称为常微分⽅程的符号解。

如果没有初始条件或边界条件,则求出通解;如果有,则求出特解。

1)函数格式Y = dsolve(‘eq1,eq2,…’ , ’cond1,cond2,…’ , ’Name’)其中,‘eq1,eq2,…’:表⽰微分⽅程或微分⽅程组;’cond1,cond2,…’:表⽰初始条件或边界条件;‘Name’:表⽰变量。

没有指定变量时,matlab默认的变量为t;2)例程例1.1(dsolve 求解微分⽅程)求解微分⽅程:dsolve('Dy=3*x^2','x')例1.2(加上初始条件)求解微分⽅程:例2(dsolve 求解微分⽅程组)求解微分⽅程组:由于x,y均为t的导数,所以不需要在末尾添加’t’。

2、ode函数在上⽂中我们介绍了dsolve函数。

但有⼤量的常微分⽅程,虽然从理论上讲,其解是存在的,但我们却⽆法求出其解析解,此时,我们需要寻求⽅程的数值解。

ode是Matlab专门⽤于解微分⽅程的功能函数。

该求解器有变步长(variable-step)和定步长(fixed-step)两种类型。

不同类型有着不同的求解器,具体说明如下图。

其中,ode45求解器属于变步长的⼀种,采⽤Runge-Kutta算法;其他采⽤相同算法的变步长求解器还有ode23。

ode45表⽰采⽤四阶-五阶Runge-Kutta算法,它⽤4阶⽅法提供候选解,5阶⽅法控制误差,是⼀种⾃适应步长(变步长)的常微分⽅程数值解法,其整体截断误差为(Δx)^5。

解决的是Nonstiff(⾮刚性)常微分⽅程。

用MATLAB求解微分方程

用MATLAB求解微分方程
用MATLAB求解微分方程
1. 微分方程的解析解
求微分方程(组)的解析解命令:
dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)
结 果:u = tan(t-c)
解 输入命令:dsolve('Du=1+u^2','t')
STEP2
STEP1
解 输入命令: y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')
导弹追踪问题
设位于坐标原点的甲舰向位于x轴上点A(1, 0)处的乙舰发射导弹,导弹头始终对准乙舰.如果乙舰以最大的速度v0(是常数)沿平行于y轴的直线行驶,导弹的速度是5v0,求导弹运行的曲线方程.又乙舰行驶多远时,导弹将它击中? 解法一(解析法)
由(1),(2)消去t整理得模型:
解法二(数值解)
结 果 为:x = (c1-c2+c3+c2e -3t-c3e-3t)e2t y = -c1e-4t+c2e-4t+c2e-3t-c3e-3t+c1-c2+c3)e2t z = (-c1e-4t+c2e-4t+c1-c2+c3)e2t
2、取t0=0,tf=12,输入命令: [T,Y]=ode45('rigid',[0 12],[0 1 1]); plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
3、结果如图
图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线.

常微分方程matlab求解命令方法.ppt

常微分方程matlab求解命令方法.ppt

N(t)表示人口数量,取人口变化率r =0.015,微分方程
dN 0.015N dt
N(1994) 12
18 16 14 12 1990 1995 2000 2005 2010 2015 2020
编辑窗口 function z=fun1(t,N) z=0.015*N;
命令窗口 ode23('fun1',[1994,2020],12)
y0 —— 初始条件 注: 函数F(t,y) 必须返回列向量. 数值解 y 的每一行对应于列向量T中的每一行数据
4/16
捕食者与被捕食者问题
海岛上有狐狸和野兔,当野兔数量增多时,狐狸捕食 野兔导致狐群数量增长;大量兔子被捕食使狐群进入 饥饿状态其数量下降;狐群数量下降导致兔子被捕食 机会减少,兔群数量回升。微分方程模型如下

1 2
k
t 2v sin
8/16
2008电影《集结号》展现出视听震撼的战争场面, 92式山炮,炮弹初速: 198米/秒,最大射程:2788米 利用实验程序确定阻力系数 k
function Xmax=mlab72(k) alfa=pi/4; v=198;g=9.8; t=0;dt=.1; x=0;y=0; while y>=0;
微分方程与计算机模拟
常微分方程数值解方法 捕食者与被捕食者问题 有阻力抛射曲线问题 卫星轨道模拟问题
1/16
数值方法求常微分方程初值问题
求解步骤:
y f (x, y)

y(
x
0
)

y0
(1)用函数文件定义一阶微分方程(或方程组)右端函数; (2)用MATLAB命令ode23()求数值解或绘积分曲线。

matlab求解常微分方程

matlab求解常微分方程

用matlab 求解常微分方程在MATLAB 中,由函数dsolve ()解决常微分方程(组)的求解问题,其具体格式如下:r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v')'eq1,eq2,...'为微分方程或微分方程组,'cond1,cond2,...',是初始条件或边界条件,'v'是独立变量,默认的独立变量是't'。

函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。

例1:求解常微分方程1dy dx x y =+的MATLAB 程序为:dsolve('Dy=1/(x+y)','x'),注意,系统缺省的自变量为t ,因此这里要把自变量写明。

其中:Y=lambertw(X)表示函数关系Y*exp(Y)=X 。

例2:求解常微分方程的MATLAB 程序为:2'''0yy y −=Y2=dsolve('y*D2y-Dy^2=0','x')Y2=dsolve('D2y*y-Dy^2=0','x')我们看到有两个解,其中一个是常数0。

例3:求常微分方程组253ttdxx y edtdyx y edt⎧++=⎪⎪⎨⎪−−=⎪⎩通解的MATLAB程序为:[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t')例4:求常微分方程组2210cos,24,tttdx dyx t xdt dtdx dyy e ydt dt=−=⎧+−==⎪⎪⎨⎪++==⎪⎩2通解的MATLAB程序为:[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2,y(0)=0','t')以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。

常微分方程初值问题的MATLAB解法

常微分方程初值问题的MATLAB解法

1用Matlab 求常微分方程(ODE)的初值问题(IVP)本节考虑一阶常微分方程000(,) ()u f t u t t Tu t u '=<≤⎧⎨=⎩ (1.1)的数值求解问题,包括算法公式及编程问题。

对一阶常微分方程组的初值问题010111120221220200120()(,,,,)(,,,,)() (,,,,)()m mm m m m m u t u u f t u u u u f t u u u u t u t t T u f t u u u u t u ⎧='=⎧⎪⎪'==⎪⎪<≤⎨⎨⎪⎪⎪⎪'==⎩⎩ (1.2)可以通过引入列向量0,,u u f化成类似(1.1)的形式000(,) ()u f t u t t Tu t u ⎧'=<≤⎪⎨=⎪⎩(1.3)其中1101122202120012()()(,,,,)()()(,,,,)(),,(,)()()(,,,,)m m m m mm u t u t f t u u u u t u t f t u u u u t u f t u u t u t f t u u u ⎛⎫⎛⎫⎛⎫⎪ ⎪ ⎪ ⎪ ⎪ ⎪=== ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭ (1.4)另外一个高阶常微分方程的初值问题()(1)0(1)(1)000000(,,,,,) (),(),,()m m m m u f t u u u u t t Tu t u u t u u t u ---'''⎫=<≤⎪⎬''===⎪⎭(1.5)也可以通过变换(1)123,,,,m m u u u u u u u u -'''==== 化成维微分方程组:1223112(,,,,)m mmm u u u u u uu f t u u u -'=⎧⎪'=⎪⎪⎨⎪'=⎪'=⎪⎩(1.6)我们在设计算法时通常先对一维一阶常微分方程(1.1)进行,然后再将这个算法写成适合求解(1.3)的向量形式,并以向量形式来进行编程。

matlab求解常微分方程的准确解

matlab求解常微分方程的准确解

matlab求解常微分方程的准确解使用Matlab求解常微分方程的准确解一、引言常微分方程是研究自然界现象和工程实际问题中常见的数学工具之一。

求解常微分方程的准确解对于理解问题的本质和性质具有重要意义。

本文将介绍如何使用Matlab来求解常微分方程的准确解,并通过具体的例子进行演示。

二、常微分方程的基本概念常微分方程是指包含未知函数及其导数的方程。

一般形式为:dy/dx = f(x,y)其中,y是未知函数,x是自变量,f(x,y)是已知函数。

常微分方程的解是指能够满足方程的函数y(x)。

三、Matlab的符号计算工具箱Matlab提供了符号计算工具箱,可以对方程进行符号计算。

通过符号计算工具箱,我们可以求解常微分方程的准确解。

四、使用Matlab求解常微分方程的步骤1. 定义未知函数和自变量。

在Matlab中,可以使用符号变量来定义未知函数和自变量。

2. 定义常微分方程。

使用符号变量来定义常微分方程。

3. 求解常微分方程。

使用dsolve函数来求解常微分方程的准确解。

4. 绘制准确解的图像。

使用ezplot函数来绘制准确解的图像。

五、具体例子假设我们要求解一阶线性常微分方程:dy/dx + y = x其中,y是未知函数,x是自变量。

1. 定义未知函数和自变量。

在Matlab中,可以使用符号变量来定义未知函数和自变量。

syms y(x)2. 定义常微分方程。

使用符号变量来定义常微分方程。

eqn = diff(y,x) + y == x3. 求解常微分方程。

使用dsolve函数来求解常微分方程的准确解。

sol = dsolve(eqn)4. 绘制准确解的图像。

使用ezplot函数来绘制准确解的图像。

ezplot(sol)六、总结本文介绍了如何使用Matlab求解常微分方程的准确解。

通过符号计算工具箱,我们可以方便地求解常微分方程,并得到准确解的图像。

使用Matlab求解常微分方程的准确解可以帮助我们更好地理解问题的本质和性质,并为进一步的分析和应用提供基础。

常微分方程matlab

常微分方程matlab

常微分方程matlab常微分方程是数学中的一个重要分支,它研究的是描述物理、化学、生物等领域中变化规律的方程。

而MATLAB是一种强大的数学软件,可以用来求解常微分方程。

本文将介绍如何使用MATLAB求解常微分方程,并通过一个实例来说明其应用。

首先,我们需要了解常微分方程的基本概念。

常微分方程是指未知函数的导数与自变量之间的关系式。

一般形式为dy/dx = f(x, y),其中y 是未知函数,x是自变量,f(x, y)是已知函数。

常微分方程的解是满足该方程的函数。

在MATLAB中,我们可以使用ode45函数来求解常微分方程。

ode45是一种常用的数值求解器,它基于龙格-库塔方法,可以高效地求解一阶和二阶常微分方程。

下面以一个简单的例子来说明如何使用MATLAB求解常微分方程。

假设我们要求解的方程是dy/dx = x^2 + y,初始条件为y(0) = 1。

首先,我们需要定义一个匿名函数,表示方程的右侧函数f(x, y)。

在MATLAB中,可以使用@符号来定义匿名函数,代码如下:f = @(x, y) x^2 + y接下来,我们可以使用ode45函数来求解方程。

代码如下:[x, y] = ode45(f, [0, 1], 1)其中,[0, 1]表示求解的区间是从0到1,1表示初始条件y(0) = 1。

运行以上代码后,MATLAB会返回一个包含x和y的向量,分别表示求解得到的自变量和因变量的取值。

最后,我们可以使用plot函数将求解得到的结果可视化。

代码如下:plot(x, y)运行以上代码后,MATLAB会绘制出方程的解的图像。

通过以上步骤,我们就成功地使用MATLAB求解了常微分方程。

当然,MATLAB还提供了其他的求解器和函数,可以用来求解更复杂的常微分方程。

在实际应用中,我们可以根据具体的问题选择合适的求解器和函数。

总之,MATLAB是一个强大的数学软件,可以用来求解常微分方程。

通过使用MATLAB,我们可以高效地求解常微分方程,并得到方程的解。

matlab 求解常微分方程组

matlab 求解常微分方程组

一、概述随着科技的发展,数学在各个领域中都扮演着非常重要的角色。

微分方程作为数学中的一个重要分支,在物理、工程、生物等领域都有着广泛的应用。

而 MATLAB 作为一个强大的数学软件工具,可以帮助我们快速高效地求解各种类型的微分方程组,从而为各领域的研究和应用提供有力的支持。

本文将详细介绍如何使用 MATLAB 求解常微分方程组的方法及步骤。

二、常微分方程组的定义常微分方程组是指这样一类微分方程组:一个或多个未知函数及其导数的方程组。

一般形式为:dx1/dt=f1(t,x1,x2,...,xn),dx2/dt=f2(t,x1,x2,...,xn),..., dxn/dt=fn(t,x1,x2,...,xn)。

其中x1,x2,...,xn 是未知函数,t是自变量,f1,f2,...,fn 是关于 t 和x1,x2,...,xn 的已知函数。

三、求解常微分方程组的方法MATLAB 提供了多种方法来求解常微分方程组,常用的方法有:欧拉法、四阶龙格库塔法、常微分方程组函数 ode45、ode23、ode113 等。

下面将分别介绍各种方法的具体步骤。

四、使用欧拉法求解常微分方程组欧拉法是一种简单粗糙的数值解法,通过分割等间距的步长满足微分方程初值问题。

其具体步骤如下:1. 定义微分方程组的初始条件和步长:x0=[x1(0),x2(0),...,xn(0)],h=步长。

2. 使用欧拉法逐步逼近微分方程组的解:for i=1:Nt(i)=t(i-1)+h;x(:,i+1)=x(:,i)+h*f(t(i),x(:,i));end其中 x(:,i)=[x1(i),x2(i),...,xn(i)] 为微分方程组在第 i 个时间节点的解。

五、使用四阶龙格库塔法求解常微分方程组四阶龙格库塔法是一种常用的数值解法,通过多次近似来计算微分方程组的数值解。

其具体步骤如下:1. 定义微分方程组的初始条件和步长:x0=[x1(0),x2(0),...,xn(0)],h=步长。

常微分方程数值求解 MATLAB 求解

常微分方程数值求解 MATLAB 求解
8
dsolve 举例
例:[x,y]=dsolve('Dx+5*x=0', 'Dy-3*y=0', ...
'x(0)=1', 'y(0)=1', 't') sol = dsolve('Dx+5*x=0', 'Dy-3*y=0', ...
'x(0)=1', 'y(0)=1', 't') 这里返回的 sol 是一个 结构类型 的数据 sol.x % 查看解函数 x(t) sol.y % 查看解函数 y(t)
常微分方程数值求解
—— MATLAB 求解
Matlab 解初值问题函数
用 Maltab自带函数 解初值问题
求解析解:dsolve
求数值解:
ode45、ode23、 ode113、ode23t、ode15s、 ode23s、ode23tb
2
符号求解
符号求解
dsolve
3
dsolve 求解析解
如果省略自变量,则默认自变量为 t
dsolve('Dy=2*x','x'); % dy/dx = 2x
dsolve('Dy=2*x');
% dy/dt = 2x
若找不到解析解,则提出警告,并返回空解。
5
dsolve 的使用
使用符号方程
导数:diff,如 diff(y),diff(y,2) 等号:== 必须声明应变量与自变量!
求解析解:dsolve
y=dsolve('eq1','eq2', ... ,'cond1','cond2', ... ,'v')

用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命令实现方法常微分方程的数值解在 MATLAB 中可以通过 ode 函数或 dsolve 函数进行求解。

其中,ode 函数可以求解一阶常微分方程,而 dsolve 函数可以求解二阶及以上的常微分方程。

下面是具体的实现方法:1. 一阶常微分方程的求解对于一阶常微分方程,可以使用 ode 函数求解。

假设我们要求解的常微分方程为:dx/dt = f(x, t)可以使用以下命令进行求解:y0 = [a, 0]; % 初值条件tspan = [0, 20]; % 时间区间[t, y] = ode45(@(t, y) odefun(t, y, a), tspan, y0); % 求解其中,odefun 函数用于定义常微分方程的解,它是一个自定义函数,其形式可以为:dy/dt = f(t, y)其中,dy 是 y 的求导,f(t, y) 是常微分方程的系数矩阵。

在 MATLAB 中,可以使用 dy[] 函数来计算 y 的求导,例如:dy = dy[](t, y);最后,使用 ode45 函数求解常微分方程的解,其中 tspan 是时间区间,y0 是初值条件。

2. 二阶常微分方程的求解对于二阶常微分方程,可以使用 dsolve 函数求解。

假设我们要求解的二阶常微分方程为:d2y/dt2 + p(t)dyy/dt + q(t)dy/dt + r(t)y = 0可以使用以下命令进行求解:syms t pqr;y0 = [a1, a2, a3]; % 初值条件[t, y] = dsolve(@(t, y) dy0(t, y), t, y0); % 求解其中,dy0 函数用于定义二阶常微分方程的解,其形式可以为:d2y/dt2 + p(t)dyy/dt + q(t)dy/dt + r(t)y = 0其中,d2y/dt2 是 y 的二阶求导,其它项是 y 的求导。

在 MATLAB 中,可以使用 dy0[] 函数来计算 y 的二阶求导。

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

(3)根据(2)中选用的状态变量,写出所有状态变量的一阶微分的表达式 最后,对初值进行相应的变换,就可以得到所期盼的一阶微分方程组了。
3.微分方程组的MATLAB求解函数
MATLAB提供了一系列的函数来求解微分方程组,包括ode系列函数,另外还提供了 几类特殊的微分方程的求解函数,例如ode15s,ode15i等。
的一个特解,
2.常系数线性微分方程的MATLAB符号求解
MATLAB中提供了dsolve函数求解微分方程(组)。该函数允许用字符串的形式描述微分方 程及初值、边值条件,最终将给出微分方程的解析解。
14.4 一阶微分方程初值问题的数值解
1.欧拉法及其MATLAB实现
对于一阶微分方程的初值问题 ,若要求其数值解,我们可以采用 离散化方法。在求解区间 上取一组节点: 称 为步长。为简单起见,仅考虑等距步长 ,即 将方程 的两端在区间 上积分,得到 即 应用左矩形公式 : ,则有
,则
;(5)计算下面初值问题的数值解,则 ,初值条件:
即为原边值问
非线性方程边值问题的打靶法: 考虑二阶常微分方程 的边值问题,边界条件为 。假定 该问题可以转换为下面的初值问题 则问题转化为求解 ,这是一个复杂的超越方程,可以考虑引入牛顿迭代法求 解参数 m。具体的迭代公式为:
式中 通过这些关系可以建立方程
具体计算中可以指定一个m 值,然后求解上面的初值问题,将结果代入上面的迭代公式中 迭代一步,并将结果代入上式中重新计算,直至两次计算出来的 m值的误差在允许的范围 内为止,最后将 m值代入初值问题 即可求解原始问题。
2.边值问题的MATLAB函数求解
MATLAB能求解的边值问题的一般形式如下 为方程中其他未知参数向量。该方程已知的边界值为 其中y 为状态变量向量
略去上式中的 ,得 , 的1个近似值 ,则由上式可得 可依次求出
考虑到
,设已求得

。称上式即为求解初值问题的Euler公式。
2. Runge-Kutta法及其MATLAB实现
考虑微分方程 ,由Lagrange微分中值定理,存在 ,使得
于是,由 得 记 ,则称 为区间 上的平均斜率。这样,只要给 出了 的一种算法,就可以得到求解微分方程初值问题的一种计算公式。显然,显式 Euler公式就是以 作为平均斜率 的近似。
因此,方程 ,设其通解为
就成为 ,又
,这是一个关于变量 的一阶微分方程 因此又得到一个一阶微分方程
对它进行积分,便得到方程 的通解为 型的微分方程:方程中不显含自变量x ,为了求出它的解,我们令 ,并利用复合函数求导法则把 化为对 的导数,即 这样,方程 ,设它的通解为 就成为 这是一个关于变量 分离变量并积分,便得方程 的一阶微分方程 的通解为
2.齐次方程
程。
如果一阶微分方程可化成
的形式,那么就称这方程为齐次方
3.一阶线性微分方程
线性方程:方程 叫做一阶线性微分方程因为 它对于未知函数y 及其导数是一次方程。如果 , 则上述方程称为齐次的;如果 , 则上述方程称为非齐次的。为了求出非齐次线性方程的解,我们先把 换成 零而写出方程 该方程叫做对应于非齐次线性方程的齐次线性方程。齐次线性方 程的通解为 伯努利方程:方程 时,该方程是线性微分方程,当 可把它化为线性的 非齐次线性方程的通解为 叫做伯努利(Bernoulli)方程。当 时,该方程不是线性的,但是通过变量的替换,便
其中 和 都是给定的值,上述这种条件叫做初始条件。 确定了通解中的任意常数以后,就得到微分方程的特解。求微分方程 件 的特解是这样一个问题,叫做一阶微分方程的初值问题,记作
满足初始条
微分方程的解的图形是一条曲线,叫做微分方程的积分曲线。
14.2 几种常用微分方程类型
1.可分离变量的微分方程
一般的,如果一个一阶微分方程能写成 的形式,就是说,能把微分方程写成一端只含 的函数和 ,另一端只含 ,那么原方程就称为可分离变量的微分方程。 的函数和Leabharlann 14.6 边值问题的数值解
1.打靶法
打靶法也称为试射法,其基本思想是把边值问题作初值问题来求解,从满足 左端边界条件的解曲线中寻找也满足右端边界条件的解。
线性方程边值问题的打靶法:
考虑如下给出的二阶线性边值问题 该边值问题的打靶法求解过程可以由如下步骤完成:(1)计算下面齐次微分方程在区间 上的数值解 , ,初值条件: ;(2)计算下面齐 次微分方程在区间 上的数值解 , ,初值条件: ;(3)计算下面初值问题在区间 ,初值条件 : 计算 题的数值解 上的数值解 , ;(4)若
14.3 高阶线性微分方程
1.线性微分方程解的结构
是 在 n 阶微分方程 中, 若 的一次有理整式,则称此方程为 n 阶线性微分方程。一般形式可写成: 线性微分方程解的结构定理: 如果 是方程 的n个线性无关的解,则该方程的通解为 其中 是任意常数。 设 是方程 是对应的齐次线性方程的通解,则 是上述方程的通解。 若 和 分别是方程 与 的特解,则 是方程 的特解
第14章 常微分方程的MATLAB求 解
编者
Outline



14.1 14.2 14.3 14.4 14.5 14.6
微分方程的基本概念 几种常用微分方程类型 高阶线性微分方程 一阶微分方程初值问题的数值解 一阶微分方程组和高阶微分方程的数值解 边值问题的数值解
14.1 微分方程的基本概念
MATLAB提供了专门求解边值问题的bvp解算器bvpslover。要想求解一个常微分方程 的边值问题,一般应该遵循以下几个步骤: (1)参数初始化 (2)微分方程和边值问题的MATLAB函数描述 (3)边值问题的求解
谢谢大家!
经典四阶Runge-Kutta方法的迭代公式:
14.5 一阶微分方程组和高阶微分方程的数值解
1. 一阶微分方程组
前面研究的是求解单微分方程 的数值解法,对于微分方程组,只需将y 理解成向量, 理解成向量函数,那么对前面研究过的各种计算公式即可用到一阶 微分方程组上来。
2. 高阶微分方程
对于高阶微分方程组的数值求解,首先应将其变换成一阶显式常微分方程组。其具体 转换方法如下:(1)将微分方程的最高阶变量移到等式的左边,其他移到右边,并按阶次 从低到高排列,(这里以两个高阶微分方程的转换为例)假设两个高阶微分方程最后能够 显式的表达成下述形式: (2)为每一阶微分式选择状态变量,最高阶除外
4.可降阶的高阶微分方程 型的微分方程:微分方程 的右端仅含有自变量 x ,容易看出,只 要把 作为新的未知函数,那么微分方程 即化为新未知函数 的一 阶微分方程,两边积分,就得到一个 阶的微分方程 同理可得 依此法继续进行,接连积分 n次,便得到方程 的含有 n 个任意常数的通解。 型的微分方程:方程的右端不显含未知函数 y。如果我们设 ,那么
微分方程:一般的,凡表示未知函数、未知函数的导数与自变量之间的关系的方程,叫做微 分方程,有时也简称方程。 微分方程的阶:微分方程中所出现的未知函数的最高阶导数的阶数,叫做微分方程的阶 微分方程的解:找出这样的函数,把这函数代入微分方程能使该方程成为恒等式。这个函数 就叫做微分方程的解。 微分方程的通解:如果微分方程的解中含有任意常数,且任意常数的个数与微分方程的阶数 相同,这样的解叫做微分方程的通解。 初始条件:设微分方程中的未知函数为 ,如果微分方程是一阶的,通常用来确定任 意常数的条件是 时, 或写成 其中 都是给定的值;如果微分方程是二阶的,通常用来确定任意常数的条件是
相关文档
最新文档