matlab中的 微分方程
MATLAB教程【6】微分方程

Runge Kutta法 法
h 龙格-库塔法 库塔法: 龙格 库塔法:实际上取 yn+1 = yn + (k1 + k2 ) 2 两点斜率的平均斜率来计算 K1 = f ( xn , yn ) 的,其精度高于欧拉算法 。 K2 = f ( xn+1 , yn + hK1 )
下面是一个经典 的四阶龙格-库塔公式: 的四阶龙格-库塔公式:
OutputFcn: [ function ] 输出方式,其选项有: 输出方式,其选项有: odeplot 按时间顺序画出全部变量的解; 按时间顺序画出全部变量的解; odephas2 二维相空间中前两个变量的图形; 二维相空间中前两个变量的图形; odephas3 三维相空间中三个变量的图形; 三维相空间中三个变量的图形; Odeprint 打印输出
空气阻力的三种情况分别对应方程中参数值为 b=[0,0.1,0.1],p=[0,0,1] 令y(1)=x, y(2)=dx/dt, y(3)=y , y(4)=dy/dt,将方程写成一阶微分 将方程写成一阶微分 方程组
dy(1) = y(2) dt dy(3) = y(4) dt
p dy(2) by(2) 2 2 ( y (2) + y (4)) 2 =− dt m p dy(4) by(4) 2 2 ( y (2) + y (4)) 2 = −g − dt m
1.4.8 解常微分方程 (ordinary differential equation, ODE)
一、引言 微分方程求解的数值算法有多种,常用的有Euler 微分方程求解的数值算法有多种,常用的有 欧拉法)、 )、Runge Kutta(龙格 库塔法)。 龙格-库塔法 (欧拉法)、 龙格 库塔法)。 Euler法称一步法,用于一阶微分方程。 法称一步法, 法称一步法on dy=g3(x,y) dy=2*x*cos(y)^2; >> [x,num_y]=ode23('g3',[0,2],pi/4);
随机微分方程matlab程序

在MATLAB 中,我们可以使用内置的函数和工具箱来模拟和解决随机微分方程(SDEs)。
以下是使用MATLAB 模拟Ornstein-Uhlenbeck 过程(一种类型的随机微分方程)的示例代码:
matlab复制代码
% 参数设置
T = 1; % 时间终点
dt = 0.01; % 时间步长
N = round(T/dt); % 时间步数
% 初始化 Ornstein-Uhlenbeck 过程
x = zeros(1, N);
w = randn(1, N); % 白噪声
% 模拟 Ornstein-Uhlenbeck 过程
for i = 1:N-1
x(i+1) = x(i) + dt*(-x(i) + w(i));
end
% 使用内置函数 plot 绘制结果
figure;
plot(0:dt:T, x);
title('Ornstein-Uhlenbeck Process');
xlabel('Time');
ylabel('X(t)'););
这个代码段使用Euler-Maruyama 方法来数值模拟Ornstein-Uhlenbeck 过程。
请注意,这只是解决随机微分方程的一种方法,而且在实际应用中,可能需要选择不同的方法以适应特定的问题。
另外,上述代码只是一种基本的实现,你可能需要调整和扩展它以满足你的具体需求。
matlab ode45 求解带积分的常微分方程

概述在工程和科学领域中,常微分方程是一种常见的数学建模工具。
其中,带积分的常微分方程更是一种需要特殊解法的方程形式。
MATLAB是一种功能强大的数学工具软件,而ode45是MATLAB中用于求解常微分方程的函数之一。
本文将详细介绍如何使用MATLAB中的ode45函数来求解带积分的常微分方程。
一、带积分的常微分方程简介带积分的常微分方程是指在微分方程中出现积分形式的项,通常表现为对某个函数进行积分。
这种形式的微分方程在工程和科学领域中有着广泛的应用,例如在电路分析、控制系统、生物学模型等领域中都能见到。
典型的带积分的常微分方程形式如下所示:y' = f(t,y) + ∫g(t,y)dt其中,y'表示y对自变量t的导数,f(t,y)为已知的函数,g(t,y)为未知的函数需要求解。
这种形式的微分方程要比普通的常微分方程更复杂,需要使用特定的求解方法来得到解析解或数值解。
二、MATLAB中的ode45函数介绍MATLAB是一种被广泛应用于科学计算和工程领域的数学软件工具,其中有丰富的数值计算函数库。
其中,用于求解常微分方程的ode45函数是应用较为广泛的函数之一。
ode45函数可以通过数值计算的方法来求解常微分方程的数值解,其基本调用格式如下:[t,y] = ode45(odefun,tspan,y0)其中,odefun是定义了微分方程的函数句柄,tspan是求解的时间范围,y0是初始条件。
ode45函数会返回微分方程在tspan范围内的数值解t和对应的y值。
三、使用MATLAB求解带积分的常微分方程对于带积分的常微分方程,我们需要将其转化为标准形式,然后利用MATLAB的ode45函数进行求解。
假设我们有如下形式的带积分的常微分方程:y' = f(t,y) + ∫g(t,y)dt我们将其转化为等价的无積分項的方程形式,例如∂F/∂t = f(t,y) + ∫g(t,y)dt我们可以利用MATLAB中的ode45函数来求解上述形式的微分方程。
matlab中的 微分方程

4)r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v'):输入量eq1,eq2,...为利 用符号方程表示的常微分方程组,而 cond1,cond2,...表示初始条件.
注意:在调用此函数之前,必须首先将
给定的常微分方程或方程组中的一阶导数用 D表示,
2
2)本题是同济大学数学教研室编写的《高等数学》中的例题,
书中没有给出明确的通解表达式, [X,Y]=dsolve('D2y+Dy-x=exp(t)','D2y+Dx+y=0')
2.5.2 常微分方程的数值解
1、在求常微分方程数值解方面,MATLAB具有丰 富的函数,我们将其统称为solver,其一般格式为: [T,Y]= solver (odefun,tspan,y0) 该函数表示在区间tspan=[ t0 , t f ]上,用初始条件 ' y f ( t , y ) ,其中odefun为显 y0求解显式常微分方程 式常微分方程 y f ( t , y ) 中的;tspan为求解区间,要 获得问题在其他指定点 t t , t 上的解,则令 tspan [ t t , t ] (要求ti单调)、y0初始条件. Solver可取命令ode45,ode23,ode113,ode15s, ode23s,ode23t,ode23tb等.
y 1 y 2 y 3 , y 2 y 1 y 3 , y 3 0 . 51 y 1 y 2 , 1 ( 0 ) 0 , ,y
y 2 , y 1 ( 0 ) 0 , y 2 ( 0 ) 1, y 3 ( 0 ) 1
常微分方程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是一款功能强大的数学软件,它可以对微分方程组进行求解并得到精确的数值解。
微分方程组是描述自然现象的数学模型,经常出现在物理、化学、生物等领域的科学研究中。
掌握如何使用Matlab 对微分方程组进行求解是非常重要的。
二、微分方程组求解基本原理微分方程组是由多个未知函数及其导数的方程组成。
通常情况下,微分方程组很难直接求解,需要借助数值方法进行近似求解。
Matlab 提供了丰富的工具和函数来解决微分方程组求解的问题,其中最常用的是ode45函数。
三、Matlab微分方程组求解代码示例以下是一个简单的二阶微分方程组的求解代码示例:```function dydt = myODE(t, y)dydt = zeros(2,1);dydt(1) = y(2);dydt(2) = -y(1) - 0.1*y(2);end[t, y] = ode45(myODE, [0 20], [1 0]);plot(t, y(:,1))```在这个示例中,我们首先定义了一个函数myODE来描述微分方程组的右端。
然后使用ode45函数对微分方程组进行求解,得到了微分方程组的数值解,并利用plot函数进行了可视化展示。
四、常见问题及解决方法在使用Matlab进行微分方程组求解时,可能会遇到一些常见问题,以下是一些常见问题及解决方法:1. 参数设置错误:在使用ode45函数时,需要正确设置求解的时间范围和初始条件,否则可能得到错误的结果。
可以通过仔细阅读ode45函数的文档来解决这个问题。
2. 数值稳定性:对于一些复杂的微分方程组,数值求解可能会遇到数值稳定性问题,导致结果不准确。
可以尝试调整ode45函数的参数或者使用其他数值解法来提高数值稳定性。
五、总结通过本文的介绍,我们了解了在Matlab中如何对微分方程组进行求解。
Matlab提供了丰富的工具和函数来解决微分方程组求解的问题,有效提高了微分方程组求解的效率和精度。
用 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 导弹追踪问题
用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微分方程谱方法
matlab微分方程谱方法MATLAB是一个功能强大的数学软件,拥有多种求解微分方程的方法,其中谱方法是非常重要的一种。
谱方法是一种基于傅里叶级数的解微分方程的方法,它通过将函数表示为傅里叶级数的形式,利用傅里叶级数的性质,能够高效地求解微分方程。
谱方法的主要思想是利用傅里叶级数展开函数,然后根据微分方程求解出每个傅里叶系数的关系式,最后再利用傅里叶反变换得到函数的解。
谱方法的优点是数值精度高,收敛速度快,适用于各种类型的微分方程,但是在实际应用中,由于计算量较大,需谨慎选择计算参数。
在MATLAB中,使用谱方法求解微分方程的步骤如下:1. 将函数表示为傅里叶级数的形式,即将函数按照正交基函数的形式展开;2. 根据微分方程求解出每个傅里叶系数的关系式,这要涉及到微分方程的离散化;3. 利用傅里叶反变换得到函数的解;4. 对解进行检验,确定计算参数的正确性。
MATLAB中提供了许多谱方法的函数,如chebfun、dct、fft等,这些函数可大大减少编写代码的难度。
下面以使用chebfun求解微分方程为例,演示MATLAB中使用谱方法求解微分方程的步骤。
步骤1:构造函数我们考虑求解下列微分方程:u'' - u = x, 0 < x < pi该微分方程的边界条件为:u(0) = 0, u(pi) = 0首先,我们将函数表示为傅里叶级数的形式,即:u(x) = sum(a_n * cos(n * x) + b_n * sin(n * x))其中,a_n和b_n是待求解的系数。
引入微分算子Df = chebfun(@(x)diff(f(x)),[a b]),可以将微分方程转化为常微分方程组的形式:D2u - u = x, u(0) = 0, u(pi) = 0步骤2:求解系数我们利用微分方程的离散化求解出a_n和b_n的关系式。
假设N表示求和中的上限,则:a_n = (2/N)*sum(f(x)*cos(n*x))b_n = (2/N)*sum(f(x)*sin(n*x))利用MATLAB中的chebfun方法,我们可以轻易地实现以上公式。
matlab中的微分方程的数值积分
MATLAB是一种流行的数学软件,用于解决各种数学问题,包括微分方程的数值积分。
微分方程是许多科学和工程问题的数学描述方式,通过数值积分可以得到微分方程的数值解。
本文将介绍在MATLAB中如何进行微分方程的数值积分,以及一些相关的技巧和注意事项。
一、MATLAB中微分方程的数值积分的基本方法1. 常微分方程的数值积分在MATLAB中,常微分方程的数值积分可以使用ode45函数来实现。
ode45是一种常用的数值积分函数,它使用4阶和5阶Runge-Kutta 方法来求解常微分方程。
用户只需要将微分方程表示为函数的形式,并且提供初值条件,ode45就可以自动进行数值积分,并得到微分方程的数值解。
2. 偏微分方程的数值积分对于偏微分方程的数值积分,在MATLAB中可以使用pdepe函数来实现。
pdepe可以求解具有定解条件的一维和二维偏微分方程,用户只需要提供偏微分方程的形式和边界条件,pdepe就可以进行数值积分,并得到偏微分方程的数值解。
二、在MATLAB中进行微分方程数值积分的注意事项1. 数值积分的精度和稳定性在进行微分方程的数值积分时,需要注意数值积分的精度和稳定性。
如果数值积分的精度不够,可能会导致数值解的误差过大;如果数值积分的稳定性差,可能会导致数值解发散。
在选择数值积分方法时,需要根据具体的微分方程来选择合适的数值积分方法,以保证数值解的精度和稳定性。
2. 初值条件的选择初值条件对微分方程的数值解有很大的影响,因此在进行微分方程的数值积分时,需要选择合适的初值条件。
通常可以通过对微分方程进行分析,或者通过试验求解来确定合适的初值条件。
3. 数值积分的时间步长在进行微分方程的数值积分时,需要选择合适的时间步长,以保证数值积分的稳定性和效率。
选择时间步长时,可以通过试验求解来确定合适的时间步长,以得到最优的数值解。
三、MATLAB中微分方程数值积分的实例以下通过一个简单的例子来演示在MATLAB中如何进行微分方程的数值积分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
③MaxStep:为求解方程最大允许的步长; ④Mass:微分代数方程中的质量矩阵, 可用于描述微分代数方程; 2)options = odeset(oldopts,'name1',value1,...) 改写现有 oldopts 的options结构体; 3)options= odeset(oldopts,newopts) 通过 与新newopts的options结构体合并,改写现 有oldopts 的options结构体.
例 1 单位圆上的 poisson 方程边值问题:
u 1, u 0
x , y x
2
y
2
1
这一问题的精确解是
u ( x, y ) 1 x
2
y
2
4
解决这个问题可以通过使用图形用户界面(Graphical User Interface,简记为GUI),则可通过在命令窗口键入pdetool,
y 1 y 2 y 3 , y 2 y 1 y 3 , y 3 0 . 51 y 1 y 2 , 1 ( 0 ) 0 , ,y
y 2 , y 1 ( 0 ) 0 , y 2 ( 0 ) 1, y 3 ( 0 ) 1
1
解:首先建立名为rigid. M的函数 function dy = rigid(t,y) dy = zeros(3,1); % a column vector dy(1) = y(2) * y(3); dy(2) = -y(1) * y(3); dy(3) = -0.51 * y(1) * y(2); 由已知得初始条件向量[0 1 1],设置允许误差分别 为[10-4 10-5 10-6],相对容许上限10-4,然后在窗口 中输入: options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e5]); [T,Y] = ode45(@rigid,[0 12],[0 1 1],options) plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.');
例 3、求解著名的 V der Pol 方程 al
d y dt
2 2
(1 y )
2
dy dt
y 0 , y ( 0 ) 1, y '( 0 ) 0
的解,并画出解的图形。
解:这是一个二阶非线性方程,用现成的方法均不能求解, 但我们可以通过下面的变换,将二阶方程化为一阶方程组, 即可求解。令 1 , x 1 y , x 2
'
0, 1
f
0, 1
f
1) [T,Y]= ode45 (odefun,tspan,y0):大部分场合的 首选算法,一步算法,4,5阶Runge-Kutta方法累积截断 误差; 2) [T,Y]= ode23 (odefun,tspan,y0):适用于精度较 低的情形,一步算法,2,3阶Runge-Kutta方法累积截断 误差; 3)[T,Y]= ode113 (odefun,tspan,y0):计算速度较快, 多步算法,Adams算法,高低精度均可达到; 4)[T,Y]= ode23t (odefun,tspan,y0):采用梯形算法, 适度刚性方程情形; 5)[T,Y]= ode15s (odefun,tspan,y0):若ode45失效 时,可尝试使用其解决问题,Gear’s反向数值积分,精 度中等;
2
2)本题是同济大学数学教研室编写的《高等数学》中的例题,
书中没有给出明确的通解表达式, [X,Y]=dsolve('D2y+Dy-x=exp(t)','D2y+Dx+y=0')
2.5.2 常微分方程的数值解
1、在求常微分方程数值解方面,MATLAB具有丰 富的函数,我们将其统称为solver,其一般格式为: [T,Y]= solver (odefun,tspan,y0) 该函数表示在区间tspan=[ t0 , t f ]上,用初始条件 ' y f ( t , y ) ,其中odefun为显 y0求解显式常微分方程 式常微分方程 y f ( t , y ) 中的;tspan为求解区间,要 获得问题在其他指定点 t t , t 上的解,则令 tspan [ t t , t ] (要求ti单调)、y0初始条件. Solver可取命令ode45,ode23,ode113,ode15s, ode23s,ode23t,ode23tb等.
如
dy dx
d y 写成Dy, 写成Dny. dx
n
n
例 1、求解下列微分方程组的通解
dy 3y 2z dx 1) ; dz 2y z dx
解: 1)>> [Y,Z]=dsolve('Dy=3*y-2*z','Dz=2*y-z','x')
d x dy t x e dt 2 dt 2) 2 。 d y dx y 0 2 dt dt
例 1、求解常微分方程 y 2 y 2 x 2 2 x , 初值条件 y ( 0 ) 1 ,在区间 0 x 0 . 5 上的数值解。
fun=inline('-2*y+2*x*x+2*x'); [x,y]=ode23(fun,[0,0.5],1)
例 2、求解下面常微分方程组的数值解,并设置 不同误差,绘出在区间 [ 0 , 12 ] 上解的图形。
2.5 微分方程
2.5.1 常微分方程的符号解
Maltlab提供了求解线性常微分方程函数r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v'),可以有以下 几种调用格式: 1)r = dsolve('eqn', 'v'):输入利用符号方程表示 的微分方程eqn,v为自变量,系统缺省的自变量为t, 返回方程通解; 2)r = dsolve('eq1,eq2,...', 'v'):输入量eq1,eq2,...为 利用符号方程表示的常微分方程组,其它同1); 3)r = dsolve('eq1', 'cond1,cond2,...', 'v'):输入利 用符号方程表示的微分方程eqn,而cond1,cond2,...表 示初始条件;
4)r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v'):输入量eq1,eq2,...为利 用符号方程表示的常微分方程组,而 cond1,cond2,...表示初始条件.
注意:在调用此函数之前,必须首先将
给定的常微分方程或方程组中的一阶导数用 D表示,
2.5.4 传染病传播问题
1、求导函数diff; 2、绘图函数plot;
3、微分方程求解函数dsolve 、ode45等.
2.5.5 人口增长的预测
1、拟合函数polyfit polyfit(x,y,n):x, y为要拟合的数据,n为希望最佳拟合数 据的多项式的次数.如果我们选择n=1,得到最简单的线性近似, 通常称为线性回归.如果我们选择n=2作为阶次,得到一个2阶多 项式.返回值为多项式的系数,高次在前,低次在后. 2、多项式函数的预测值polyval Y=polyval (p,x):求polyfit所得的多项式在x处的预测值 Y.p是polyfit函数的返回值,x和polyfit函数的x值相同. 3、函数插值interp1、interp2、interp3 1)一维插值:interp1(x,y,cx,’method’), 此函数对于数据分 析和曲线拟合都是很重要的.它应用多项式技术用多项式函数拟 合提供的已知数据,通过已知的点求出一个适当的函数,并提 供理想的插值点.其中y为包含函
6)[T,Y]= ode23s (odefun,tspan,y0):一步法,2阶 Rosebrock算法,低精度. 2、在求解过程中有时需要对求解算法和控制条件 进行进一步设置,这是可以通过求解过程中的options 变量进行修改,初始options 变量可以通过odeset ( )获 取,该函数为创建或改写ODE选项构架参数值. 1)options = odeset('name1',value1,'name2',value2,...) 创建ODE选 项构架参数值,控制参数'name1','name2',...的属性值 通过value1,value2,...来设定.常用控制参数主要有: ①RelTol:为相对容许上限,默认0.001; ②AbsTol:为一个向量,其分量表示每个状态变 量允许的绝对误差,其默认值为10-6;
dx 1 x2 , dt dx 2 2 (1 x 1 ) x 2 x 1 , dt x1 (0 ) 1 x 2 (0 ) 0
dy dt
,得到
首先建立vdp1.M文件: function dydt = vdp1(t,y) dydt=[y(2);(1-y(1)^2)*y(2)-y(1)]; 然后建立M文件,并运行: [t,y] = ode45(@vdp1,[0 20],[2; 0]);plot(t,y(:,1),'',t,y(:,2),'--') title('Solution of van der Pol Equation, \mu = 1'); xlabel('time t'); ylabel('solution y'); legend('y_1','y_2')