Simulink及振动微分方程的数值解法

合集下载

基于Simulink的振动模态分析

基于Simulink的振动模态分析

基于Simulink的振动模态分析引言振动模态分析是一种常用的工程分析方法,用于研究结构体在不同频率下的振动特性和模态。

本文将介绍如何使用Simulink软件进行振动模态分析。

Simulink简介Simulink是一种基于模型的设计和仿真工具,常用于解决动态系统建模和仿真问题。

该软件提供了丰富的工具箱,便于用户搭建模型和进行模拟实验。

振动模态分析步骤1. 结构体建模:首先,需要将待分析的结构体进行建模。

在Simulink中,可以使用各种元件来描述结构体的物理特性,例如质量、弹性等参数。

2. 模态分析设置:在建模完成后,可以设置模态分析的参数,包括分析频率范围、模态数量等。

这些参数会影响模态分析的精度和计算效率。

3. 模型求解:通过在Simulink中运行模型求解器,可以得到结构体在不同频率下的振动模态。

求解过程可以得到每一个模态对应的频率、振型和阻尼比等信息。

4. 结果分析:最后,可以对求解得到的振动模态进行进一步分析和可视化。

比如,可以绘制模态频率与振型的关系图,用于评估结构体的振动特性。

模态分析应用领域振动模态分析在工程领域有着广泛的应用。

它可以帮助工程师了解结构体的固有振动特性,从而优化设计和改进结构体的性能。

在航空航天、汽车工程、建筑设计等领域,振动模态分析被广泛应用于结构体的优化和故障诊断。

结论通过Simulink软件进行振动模态分析是一种简单而高效的方法。

它可以帮助工程师更好地理解结构体的振动特性,并在实际工程项目中起到重要作用。

在使用Simulink进行振动模态分析时,合理设置参数和精确分析结果对于获得准确的振动特性信息尤为重要。

微分方程数值求解方法

微分方程数值求解方法
在t1时刻,曲线上点 y t1 可以切线上的点代替,则
y t1 y t0 f t0 , y t0 t1 t0
写成迭代格式
yn1 yn hf tn , yn
t0 t1
3. 龙格库塔法
龙格-库塔法(Runge-Kutta)是用于常微分方程求解的一类重要迭代方 法,由数学家卡尔·龙格和马丁·威尔海姆·库塔于1900年左右发明。对于 如下方程
3. 龙格库塔法
k1 f t n , yn h h k 2 f t n , yn k1 2 2 h h k3 f t n , y n k 2 2 2 k 4 f t n h, yn hk3 k k1 2k 2 2k3 k 4 6 yn 1 yn hk
u 1 u2
2 u u1 2 F cos t 2 nu2 n
每一种方法的区别 在于,如何从前一 个点得到下一点。
2. 欧拉法
以如下微分方程为例
yt f t , y t
y t0 y0
已知A0点坐标 t0 , y t0 ,过A0点的切线方程为
y y t0 yt0 t t0 f t0 , y t0 t t0
yt f t , yt
yt0 y0
龙格-库塔法的基本格式如下 1 yn1 yn h k1 2k2 2k3 k 4 6 k1 f t n , yn
yn1 yn hf tn , yn
h h k 2 f tn , yn k1 2 2 h h k3 f t n , y n k 2 2 2 k 4 f t n h, yn hk3

【转@总结】simulink常微分方程的数值求解~ode45

【转@总结】simulink常微分方程的数值求解~ode45

【转@总结】simulink常微分⽅程的数值求解~ode45ode45,常微分⽅程的数值求解。

MATLAB提供了求常微分⽅程数值解的函数。

当难以求得微分⽅程的解析解时,可以求其数值解,Matlab 中求微分⽅程数值解的函数有七个:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb在⽤odesolver(ode45, ode15s, …)来解微分⽅程的时候,最基本的⽤法是:[t, y] = odesolver(odefun, tspan, y0);这⾥的odefun是待求的微分⽅程。

那么odefun中⼀般会含有多个系统参数,通常要通过改变参数来观察系统动态的变化。

那么如何在调⽤odesolver的时候传递参数呢?以前,我都是⽤全局变量的写法,将参数在主函数和⼦函数中分别都定义为global,这样做有⼀个弱点:针对系统不同,参数的表达与数量有变化的时候,程序通常要做变化,通⽤性不强。

那么最好是在调⽤的时候进⾏传递,⽅法如下:实际上很简单,就是将⼀切其他的参数都写在括号中就可以了!但是要注意的是:odesolver的第四个参数⼀定是options,也就是对微分⽅程添加补充功能的参数(类型为structure,要⽤odeset来定义),那么其他系统参数就只能从第五个参数写起。

也就是说,第四个参数不可以为空,⼀定要定义某种option加进去,或者⽤使⽤空⽩矩阵(placeholder)。

这样调⽤的时候格式就是:[t, y] = odesolver(odefun, tspan, y0, options, parameter1, parameter2);或者[t, y] = odesolver(odefun, tspan, y0, [], parameter1, parameter2);然后定义微分⽅程的时候也要有参数的地⽅:function dydt = odefun(t, y, parameter1, parameter2)dydt = [ eqn-1; eqn-2; …];就OK了。

利用MATLAB求解微分方程数值解的相关命令

利用MATLAB求解微分方程数值解的相关命令

利用MATLAB求解微分方程数值解的相关命令利用MATLAB求解微分方程数值解的相关命令1 指令函数及调用格式1.1 指令函数:dsolve注:此指令函数用于求解微分方程(组)的符号(解析)解。

1.2 单变量常微分方程的调用格式:f=dsolve(‘eq’, ‘cond’, ‘v’)注:此调用格式用于求符号微分方程的通解或特解,其中eq代表微分方程,cond代表微分方程的初始条件(若缺少,则求微分方程的通解),v为指定自变量(如未指定,系统默认t为自变量)。

1.3 常微分方程组的调用格式:f=dsolve(‘eq1’, ‘eq2’,…, ‘eqn’, ‘cond1’, ‘cond2’,…, ‘condn’, ‘v1’, ‘v2’, …, ‘vn’)注:此调用格式用于求解符号常微分方程组。

其中eq1,...,eqn 代表n个微分方程构成的微分方程组;cond1,...,condn代表微分方程组的初始条件(若缺少,则求微分方程组的通解),v1 , (v)为指定自变量(如未指定,系统默认t为自变量)。

1.4 记述规定:MATLAB中,用D(注意:一定是大写)记述微分方程中函数的导数。

当y是因变量时,用‘Dny’表示‘y的n阶导数’。

如,Dy表示y的一阶导数y ',Dny表示y的n阶导数。

Dy(0)=5表示y ' (0)=5。

D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。

2 实例演示例1、求微分方程2'22xy xy xe-+=的通解命令输入:>> y=dsolve('Dy+2*x*y=2*x*exp(-x^2)','x')得结果为:y =(x^2+C1)*exp(-x^2)若输入命令:>>y=dsolve('Dy+2*x*y=2*x*exp(-x^2)')则系统默认t为自变量,而把真正的自变量x当作常数处理,把y 当作t的函数,得到错误的结果:y =exp(-2*x*t-x*(x-2*t))+exp(-2*x*t)*C1例2、求微分方程22420250d x dxxdt dt-+=的通解命令输入:>> x=dsolve('4*D2x-20*Dx+25*x=0')得结果为:x =C1*exp(5/2*t)+C2*exp(5/2*t)*t%系统默认t 为自变量例3、求微分方程'''54100y y y +-+=在条件'006,4x x y y ====下的特解。

MATLAB微分方程几种求解方法及程序

MATLAB微分方程几种求解方法及程序

第五章 控制系统仿真§5.2 微分方程求解方法以一个自由振动系统实例为例进行讨论。

如下图1所示弹簧-阻尼系统,参数如下: M=5 kg, b=1 N.s/m, k=2 N/m, F=1NF图1 弹簧-阻尼系统假设初始条件为:00=t 时,将m 拉向右方,忽略小车的摩擦阻力,m x 0)0(= s m x /0)0(=•求系统的响应。

)用常微分方程的数值求解函数求解包括ode45、ode23、ode113、ode15s 、ode23s 等。

wffc1.m myfun1.m一、常微分方程的数值求解函数ode45求解 解:系统方程为 F kx x b x m =++•••这是一个单变量二阶常微分方程。

将上式写成一个一阶方程组的形式,这是函数ode45调用规定的格式。

令: x x =)1( (位移))1()2(••==x x x (速度) 上式可表示成:⎥⎦⎤⎢⎣⎡--=⎥⎦⎤⎢⎣⎡=⎥⎥⎦⎤⎢⎢⎣⎡••)1(*20)2(*101)2()2()2()1(x x x x x x x 下面就可以进行程序的编制。

%写出函数文件myfun1.mfunction xdot=myfun1(t,x)xdot=[x(2);1-10*x(2)-20*x(1)];% 主程序wffc1.mt=[0 30];x0=[0;0];[tt,xx]=ode45(@myfun1,t,x0);plot(tt,yy(:,1),':b',tt,yy(:,2),'-r') legend('位移','速度')title('微分方程的解 x(t)')二、方法2:F kx x b x m =++•••251)()()(2++==s s s F s X s G%用传递函数编程求解ksys1.mnum=1;den=[5 1 2];%printsys(num,den)%t=0:0.1:10;sys=tf(num,den);figure(1)step(sys)figure(2)impulse(sys)figure(3)t=[0:0.1:10]';ramp=t;lsim(sys,ramp,t);figure(4)tt=size(t);noise=rand(tt,1);lsim(sys,noise,t)figure(5)yy=0.1*t.^2;lsim(num,den,yy,t)w=logspace(-1,1,100)';[m p]=bode(num,den,w);figure(6)subplot(211);semilogx(w,20*log10(m)); grid onsubplot(212);semilogx(w,p)grid on[gm,pm,wpc,wgc]=margin(sys)figure(7)margin(sys)figure(8)nyquist(sys)figure(9)nichols(sys)方法3:F kx x b x m =++•••125=++•••x x xx x x 4.02.02.0--=•••% 主程序wffc1.mt=[0 30];x0=[0;0];[tt,yy]=ode45(@myfun1,t,x0);figure(1)plot(tt,yy(:,1),':b',tt,yy(:,2),'-r') hold onplot(tt,0.2-0.2*yy(:,2)-0.4*yy(:,1),'-.k ')legend('位移','速度','加速度') title('微分方程的解')figure(2)plot(yy(:,1),yy(:,2))title('平面相轨迹')%写出函数文件myfun1.mfunction xdot=myfun1(t,x)xdot=[x(2);0.2-0.2*x(2)-0.4*x(1)];。

最新第四章 Simulink与微分方程组数解讲课讲稿

最新第四章    Simulink与微分方程组数解讲课讲稿

计算开始时 间
计算结束时 间
计算方法
MATLAB6.5
(7)按SIMULATION—START开始仿真计算。 (8)点击SCOPE观察计算结果,或者查看WORKSPACE, 观看变量值,根据需要保存绘制计算值。
SCOPE:
•例2
已知直流发动机的控制系统的微分方程为:
Ldi dt
URi
C1
d
J dt C2iM
50
0
-50
-100
0
1
2
3
4
5
6
7
8
9 10
方法2:根据微分方程直接利用积分,微分, 求和绘制系统模型。
Ld d ti U R i C 1 .......Jd d tC 2 i M
积分
第1个方程
输入电 压U
转速 电流
第2个方程:
J
d
dt
C2i
M
负载
电流
设置输出点:
输出转速


输出点 2
输出点1
(1)根据上述方程定义矩阵A,B,C,D。
(2)设置矩阵,双击选项,出现设置菜单。
将默认值1修改成矩 阵常数或已经定义好
的矩阵变量
(3)设置输入,输出
设置输入值, 可以是向量 常数或是已 经定义的向
量变量
(4)设置计算选项,开始计算,并选取计算结果 电流计算结果
250
200
150
100
50
0
0
信号的+,-,比例放 大在Math Operation项 内
信号加:
可将+改成-, 或增加+,表 示多个信号

matlab求微分方程数值解

matlab求微分方程数值解

matlab求微分方程数值解利用matlab求微分方程数值解是一种常用的数学计算方法。

在实际工程和科学研究中,许多问题都可以用微分方程来描述,但是解析解往往难以求得,因此需要用数值方法求解微分方程。

求解微分方程的数值方法有很多种,其中比较常用的是欧拉法和龙格-库塔法。

欧拉法是一种基本的数值方法,它采用离散化的方法将微分方程转化为差分方程,然后通过迭代来求出数值解。

欧拉法的具体步骤是:首先将自变量和因变量离散化,然后利用微分方程的定义式将微分方程转化为差分方程,最后通过迭代求出数值解。

欧拉法的优点是简单易懂,但是精度较低,容易产生误差。

龙格-库塔法是一种高阶数值方法,它将微分方程转化为一系列的差分方程,并采用递推的方法求解数值解。

龙格-库塔法的优点是精度高,收敛速度快,适用于求解复杂的微分方程。

但是龙格-库塔法的计算量较大,需要进行多次计算,计算时间较长。

在使用matlab求解微分方程时,可以直接调用matlab中的ode 函数来求解微分方程。

ode函数是matlab中内置的求解微分方程的函数,它支持多种数值方法,包括欧拉法和龙格-库塔法等。

使用ode函数可以简化求解微分方程的过程,提高计算效率。

在使用ode函数求解微分方程时,需要先定义微分方程的函数表达式,然后将函数表达式作为参数传入ode函数中。

ode函数会自动选择合适的数值方法来求解微分方程,并返回数值解。

通过调整ode函数的参数,可以进一步提高求解微分方程的精度和计算效率。

除了ode函数外,matlab中还有很多其他的数值计算函数,如dsolve函数、pdepe函数等,它们可以用来求解不同类型的微分方程。

在实际应用中,需要根据具体问题选择合适的数值方法和函数来求解微分方程。

利用matlab求解微分方程数值解是一种常用的数学计算方法,可以通过调用matlab中的内置函数来实现。

在选择数值方法和函数时需要考虑精度和计算效率等因素,以便更好地解决实际问题。

Simulink机械振动仿真简例分析

Simulink机械振动仿真简例分析

1.单自由度无阻尼自由振动
运行仿真,查看示波器显示的结果
曲 线 不 光 滑 ?
1.单自由度无阻尼自由振动
打开仿真参数对话框 Ctrl+E 修改最大步长为0.01
1.单自由度无阻尼自由振动
再次运行,曲线明显光滑了许多
1.单自由度无阻尼自由振动
• 用到的模块:
积分模块,将输入信号经过数值 积分,在输出端输出相应结果。 增益模块,在输入信号基础上乘 以一个特定数据,然后输出。 示波器模块,将输入信号输入到 示波器显示出来。
据此在Simulink中画出框图
5.单自由度有阻尼+正弦激励
• 参数设置: 令k=4,m=1,c=0.2 • 初始状态: 初始速度为0,位移为0.05 • 在框图中: 分别修改对应模块的数值
5.单自由度有阻尼+正弦激励
Hale Waihona Puke • 响应趋于稳态的过程5.单自由度有阻尼+正弦激励
示波器输出为质量块的位移信号
• 参数设置:k=100N/m, m=1kg →n=10rad/s • sin wave参数:Amplitude 1; Frequency 8,10,12 • 初始状态:①x0=1, v0=0→=90; ②x0=0, v0=1→=0; ③ x0=1, v0=10→=45; ④ x0=1, v0=−10→=135; ⑤ x0=0, v0= −1→=180 Sine Wave XY Graph • XY Graph参数 1 1 s s x-min -2; x-max 2; Integrator Integrator1 Gain Scope y-min -2; y-max 2
4.衰减振荡的阻尼比的估计
• 参数:k=100,m=10, c=2 • 初始条件:x0=1, v0=0 • 初始振幅为1,约7个周期时衰减 为0.25,对数减幅: =(ln4)/70.099 阻尼比/20.032 • 理论值=0.5c(km)−0.5 0.032

simulink微分模块详解

simulink微分模块详解

simulink微分模块详解Simulink是一个用于建模、仿真和分析动态系统的工具,微分模块在Simulink中扮演着重要的角色。

微分模块用于描述系统中的微分方程,可以帮助我们建立动态系统的模型,并进行仿真和分析。

下面我将从几个方面详细介绍Simulink中的微分模块。

首先,微分模块在Simulink中通常用于描述动态系统的状态方程。

在实际工程中,许多系统可以通过微分方程来描述其动态行为,比如电路、机械系统、控制系统等。

微分模块可以帮助我们将这些微分方程直接转化为Simulink模型,从而实现对动态系统的建模和仿真。

其次,Simulink中的微分模块可以用于求解微分方程。

通过将微分方程转化为差分方程,Simulink可以利用数值求解方法(如欧拉法、龙格-库塔法等)来对微分方程进行数值求解,从而得到系统的时间响应和状态变化情况。

这对于分析系统的动态行为以及设计控制器非常有帮助。

另外,微分模块还可以用于实现系统的状态空间表示。

在控制系统工程中,状态空间表示是描述动态系统行为的一种常用方法。

Simulink中的微分模块可以帮助我们将系统的状态方程表示为状态空间模型,从而进行状态空间分析和设计。

除此之外,Simulink中的微分模块还可以与其他模块结合,实现更复杂的系统建模和仿真。

比如可以将微分模块与控制器模块、传感器模块等连接起来,构建完整的控制系统模型,进行闭环仿真和分析。

总之,Simulink中的微分模块在动态系统建模和仿真中具有重要作用,可以帮助工程师们更方便地描述和分析动态系统的行为,是Simulink工具中不可或缺的一部分。

希望以上内容能够对你有所帮助。

6 SIMULINK仿真基础之数值积分法仿真

6 SIMULINK仿真基础之数值积分法仿真

对仿真建模方法有三个基本要求: 1、稳定性,若原系统是稳定的,则离散化后的仿真模型也得是稳定 的 2、准确性,绝对或相对误差小于规定误差 3、快速性,数字仿真是一步步推进的,由某个初始值y0出发,依次 计算出y1、y2…yk,每一步计算所需时间决定了仿真速度。
6.1.3 数值积分法
一般情况下,在控制系统仿真中最常用、最基本的求解常 微分方程数值解的方法主要是数值积分法。 对于形如 y f ( y, u, t ) 的系统,已知系统状态变量y的初值y0,现 要计算y随时间变化的过程y(t),对微分方程的积分可以写作: t y (t ) y f (t , y )dt 0 t
不论几阶RK法,它们的计算公式都是由两部分组成,即上一步的结果yk和 步长h乖以tk至tk+1时间间隔间各外推点的导数ki的加权平均和
· 有了上面的数学算法,就可以用MATLA编写出该算法的函数:
function[tout,yout] = rk4(odefile,tspan,y0) t0= tspan(1);th= tspan(2); if length(tspan)<= 3,h= tspan(3) else, h= tspan(2)-tspan(1);th= tspan(2); end tout= [t0:h:th]’;yout= []; for t= tout’ k1= eval([odefile’(t,y0)’]); k2= eval([odefile’(t+h/2,y0+0.5*k1)’]); k3= eval([odefile’(t+h/2,y0+0.5*k2)’]); k4= eval([odefile’t+h,y0+k3’]);
6.1.2 离散化原理

matlab振动微分方程轨迹曲线

matlab振动微分方程轨迹曲线

matlab振动微分方程轨迹曲线要画出振动微分方程的轨迹曲线,首先需要解出微分方程的解析解或数值解。

下面以一个简单的单自由度系统为例进行说明。

假设系统的振动微分方程为:$$m\frac{d^2x}{dt^2}+c\frac{dx}{dt}+kx=F_0\sin(\omega t)$$ 其中,$m$为质量,$c$为阻尼系数,$k$为刚度系数,$F_0$为外力幅值,$\omega$为外力频率。

初始时刻,质点位于平衡位置$x_0$,速度为$v_0$。

解析解方法:使用拉普拉斯变换或复数变换的方法可以求解该微分方程的解析解,最终可以得到质点的位移$x(t)$的表达式。

根据这个表达式,就可以画出质点的轨迹图。

数值解方法:1.使用常微分方程数值解法求解可以使用欧拉法、梯形法、龙格-库塔法等数值解法来求解该微分方程。

最终得到质点的位移$x(t)$的近似解$x_i$,然后将$x_i$与$t$画出曲线就是轨迹图。

2.使用matlab内置函数ode45求解如果你使用的是matlab,可以利用ode45函数直接求解微分方程的数值解,具体步骤如下:1)将微分方程转换为函数句柄形式(将方程的右边看作一个函数):```function dxdt = myfun(t,x)m=1; %质量c=0.1; %阻尼系数k=1; %刚度系数F0=1; %外力幅值w=1; %外力频率dxdt(1) = x(2)dxdt(2) = (F0*sin(w*t)-c*x(2)-k*x(1))/m;dxdt = dxdt(:);end```该函数句柄名为myfun,该函数句柄输入参数为时间$t$和位移$x$,输出为位移和速度的变化率。

2)使用ode45函数求解微分方程:```[t,x] = ode45(@myfun,[0 10],[0 1]);```其中,第一个参数是函数句柄名,第二个参数是时间范围,第三个参数是初始条件(这里的初始条件为$x(0)=0$,$v(0)=1$)。

用Simulink演示微分运算及动态图

用Simulink演示微分运算及动态图

用Simulink演示微分运算及动态图
1. 在工具栏点击Simulink图标,或在Command Window中输入:
>>Simulink
即出现Simulink Library Browser窗口:
2. 在Simulink Library Browser窗口中, 建立一个新模型(new model), 即打开一个新的空白模型窗口,如图1所示。

用鼠标左键点取所需要的模块拖到模型窗口中, 用鼠标左键在模块间建立连接线(若在已有连接线上分叉则用右键)即可.
图1.空白模型窗口
3.以正弦函数为例,建立模型窗口如图2所示。

图2.模型窗口
(1)在模型窗口工具栏点击按钮,或在编辑栏选Simulation\start,系统开始绘制动态图,双击示波器Scope,即可得到动态图,如图3所示。

图3.
(2)双击图标出现相应的模块参数框, 可在其中设置参数.Sine Wave中Phase(相位)为pi/2, 如图4所示,实际为cos t。

运行结果如图5所示,可以很清楚地比较出与图3的区别。

图4.相位设置
图5.。

simulink习题

simulink习题

蹦极跳是一种挑战极限的运动,蹦极者系着一根弹力绳从高处的桥梁向下跳。

在下落的过程中,蹦极者几乎处于失重的状态。

用Simulink 对蹦极系统进行仿真研究。

(1) 蹦极跳系统的数学模型。

自由落体的牛顿定律:x x b x a mg xm --= a , b 为空气阻力系数。

考虑到弹簧力,-kx (x>0), 0 (x<=0)x x b x a kx mg xm ---= 设桥梁距离地面为60m ,蹦极者的起始位置为绳索的长度-30m ,即x (0)=-30m ;蹦极者起始速度为零,即0)0(=x,其余参数为:k=25;a=b=1,m=60,g=10m/s 21. 一个摆动的小球质量为1kg ,其悬挂绳子的长度为1米,绳质量忽略。

初始时,摆球与纵轴的夹角为0.5rad ,初速度为0。

求: (1)建立单摆的微分方程;(2)从图1中选择合适的仿真模块,建立其Simulink 仿真模型,输出摆角。

图12.如图2所示的偏置曲柄滑块机构R2=4,R3=9, R4=1.5, 其中连杆2以匀角速度10rad/s 逆时针转动。

试采用闭环矢量方程求连杆3的角加速度和滑块的加速度。

要求写成矩阵形式。

3.建立第2题的Simulink仿真模型,并为各个积分环节赋初始值。

4.求出图3所示的牛头刨机构中的导杆4的角速度、角加速度,以及导杆上与滑块重合点的速度、加速度的解析式。

图34.建立图4所示的质量-弹簧-阻尼系统的SimMechanics的仿真模型。

自己选择所需模块。

其中小车质量均为1kg,刚度为0.09,阻尼系数为0.03,外界激励力的频率ω=100rad/s, 幅图4值F0=1。

5.若仿真开始时,质量块1的位置和速度均为0,质量块2速度为0,但偏离平衡位置1cm,为题4仿真模型的Joint Sensor和初始条件设置参数。

图5题1 垂直悬挂的弹簧—质量系统,弹簧上端的悬挂点有振幅d=0.025m 、角频率ω=180 rad/s 的竖直简谐运动,试求出悬挂重量W 强迫振动的振幅。

Simulink求解器 - 算法说明

Simulink求解器 - 算法说明

Simulink求解器(Solver)相关知识1.变步长(Variable—Step)求解器可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45;没有状态的系统用的是discrete.1)ode45基于显式Runge—Kutta(4,5)公式,Dormand—Prince对.它是—个单步求解器(solver)。

也就是说它在计算y(tn)时,仅仅利用前一步的计算结果y(tn-1).对于大多数问题.在第一次仿真时、可用ode45试一下.2)ode23是基于显式Runge—Kutta(2,3).Bogackt和Shampine对.对于宽误差容限和存在轻微刚性的系统、它比ode45更有效一些.ode23也是单步求解器.3)odell3是变阶Adams-Bashforth—Moulton PECE求解器.在误差容限比较严时,它比ode45更有效.odell3是一个多步求解器,即为了计算当前的结果y(tn),不仅要知道前一步结果y(tn-1),还要知道前几步的结果y(tn-2),y(tn-3),…;4)odel5s是基于数值微分公式(NDFs)的变阶求解器.它与后向微分公式BDFs(也叫Gear 方法)有联系.但比它更有效.ode15s是一个多步求解器,如果认为一个问题是刚性的,或者在用ode45s时仿真失败或不够有效时,可以试试odel5s。

odel5s是基于一到五阶的NDF公式的求解器.尽管公式的阶数越高结果越精确,但稳定性会差一些.如果模型是刚性的,并且要求有比较好的稳定性,应将最大的阶数减小到2.选择odel5s求解器时,对话框中会显示这一参数.可以用ode23求解器代替。

del5s,ode23是定步长、低阶求解器.5)ode23s是基于一个2阶改进的Rosenbrock公式.因为它是一个单步求解器,所以对于宽误差容限,它比odel5s更有效.对于一些用odel5s不是很有效的刚性问题,可以用它解决.6)ode23t是使用“自由”内插式梯形规则来实现的.如果问题是适度刚性,而且需要没有数字阻尼的结果,可采用该求解器.7)ode23tb是使用TR—BDF2来实现的,即基于隐式Runge—Kutta公式,其第一级是梯形规则步长和第二级是二阶反向微分公式.两级计算使用相同的迭代矩阵.与ode23s 相似,对于宽误差容限,它比odtl5s更有效.8)discrete(变步长)是simulink在检测到模型中没有连续状态时所选择的一种求解器.=========================================================================== ==============2.定步长(Flxed—Step)求解器可以选择的定步长求解器有:ode5,ode4,ode3,ode2,ode1和discrete.1)ode5是ode45的一个定步长版本,基于Dormand—Prince公式.2)ode4是RK4,基于四阶Runge—Kutta公式.3) ode3是ode23的定步长版本,基于Bogacki-Sbampine公式.4) ode2是Heun方法,也叫作改进Euler公式.5) odel是Euler方法.6) discrete(定步长)是不执行积分的定步长求解器.它适用于没有状态的模型,以及对过零点检测和误差控制不重要的模型.=========================================================================== ==============3.诊断页(Diagnostics)可以通过选择Simulation Parameters对话框的Diagnostics标签来指明在仿真期间遇到一些事件或者条件时希望执行的动作.对于每一事件类型,可以选择是否需要提示消息,是警告消息还是错误消息.警告消息不会终止仿真,而错误消息则会中止仿真的运行.(1)一致性检查一致性检查是一个调试工具.用它可以验证Simulink的0DE求解器所做的某些假设.它的主要用途是确保s函数遵循Simulink内建模块所遵循的规则.因为一致性检查会导致性能的大幅度下阵(高达40%),所以一般应将它设为关的状态.使用一致性检查可以验证s函数,并有助于确定导致意外仿真结果的原因.为了执行高效的积分运算,Simulink保存一些时间步的结果,并提供给下一时间步使用.例如,某一时间步结束的导数通常可以放下一时间步开始时再使用.求解器利用这一点可以防止多余的导数运算.一致性检查的另一个目的是保证当模块被以一个给定的t(时间)值调用时.它产生一常量输出.这对于刚性求解器(ode23s和odel5s)非常重要,因为当计算Jacobi行列式时.模块的输出函数可能会被以相同的t值调用多次.如果选择了一致性检查,Simulink置新计算某些值,并将它们与保存在内存中的值进行比较,如果这些值有不相同的,将会产生一致性错误.Simulink比较下列量的计算值:1)输出;2)过零点3)导数;4)状态.(2)关闭过零点检测可以关闭一个仿真的过零点检测.对于一个有过零点的模型,关闭过零点检测会加快仿真的速度,但是可能影响仿真结果的精度.这一选项关闭那些本来就有过零点检测的模块的过零点检测.它不能关闭Hir crossing模块的过零点检测.(3)关闭优化I/O存储选择该选项,将导致Simulink为每个模块约I/()值分配单独的缓存,而不是重新利用援存.这样可以充分增加大模型仿真所需内存的数量.只有需要调试模型时才选择该选项.在下列情况下,应当关闭缓存再利用;1)调试一个C-MEX S-函数;2)使用浮点scope或display模块来察看调试模型中的信号.如果缓存再利用打开,并且试图使用浮点scope或display模块来显示缓存已被再利用的信号,将会打开一个错误对话框.(4)放松逻辑类型检验选择该选项,可使要求逻辑类型输入的模块接受双精度类型输入.这样可保证与Simulink 3版本之前的模型的兼容性.=========================================================================== ==============4.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。

simulink 微分方程组

simulink 微分方程组

simulink 微分方程组Simulink是一种功能强大的仿真软件,可用于建模和仿真各种工程系统。

在Simulink中,微分方程组是一种常见的建模方法,用于描述系统的动态行为。

微分方程组可以通过连接各种系统组件来建立,例如积分器、增益器和传感器等。

本文将介绍Simulink中微分方程组的基本概念和建模方法。

我们需要了解什么是微分方程组。

微分方程组是一组描述系统动态行为的方程,其中包含未知函数及其导数。

这些方程可以用于描述各种自然和工程系统,例如机械系统、电路系统和控制系统等。

在Simulink中,微分方程组可以通过模块化的方式建立,使系统建模更加简单和直观。

Simulink中的微分方程组建模主要分为两个步骤:建立系统框图和定义微分方程。

首先,我们需要根据系统的物理特性和要求,在Simulink中建立系统框图。

系统框图是由各种系统组件(例如积分器、增益器和传感器)和连接线组成的图形表示。

通过连接不同的系统组件,我们可以构建复杂的系统模型。

在建立系统框图后,我们需要定义微分方程。

在Simulink中,可以使用微分方程模块或差分方程模块来定义微分方程。

微分方程模块适用于连续时间系统,而差分方程模块适用于离散时间系统。

通过在相应的模块中输入微分方程,Simulink可以自动求解微分方程组,并获得系统的动态响应。

除了建立系统框图和定义微分方程外,Simulink还提供了丰富的分析和调试工具,以帮助用户对系统模型进行分析和优化。

例如,Simulink可以通过仿真和绘图功能,实时显示系统的时域响应和频域特性。

此外,Simulink还支持参数扫描和优化功能,可以帮助用户寻找系统的最佳参数配置。

在使用Simulink建立微分方程组模型时,我们需要注意一些常见的问题。

首先,模型的准确性是至关重要的。

我们需要仔细分析系统的物理特性和动态行为,并确保模型能够准确地描述系统的行为。

其次,模型的复杂性也需要考虑。

过于复杂的模型可能会导致仿真时间过长或计算资源不足。

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

欢迎使用百度文库
MATLAB/Simulink及振动微分方程的数值解法
李鹤
hli@
Simulink是基于MATLAB的图形化仿真平台,进行动态系统建模、仿真和综合分析的集成软件包。

MATLAB主窗口
Simulink主窗口/Simulink模型库浏览器
Simulink模型编辑器
加速度表达式
21u u u u
激振幅值
激振频率
经过积分一
次:速度
经过积分二
次:位移
u
u
u
u u
位移—时间曲线位移—速度相图
(5)设置速度初始值
双击设置速度初始值
Simulink求解振动微分方程的基本步骤(续)
(6)设置位移初始值
双击设置位移初始值
Simulink求解振动微分方程的基本步骤(续)
(7)设置Simulink 仿真参数:
积分时间步长:
1.保证积分收敛;
2.可以选外激振力周期的
1/n 。

积分起始时间积分终止时间
求解器:定步长4阶龙格库塔法
(8)开始计算,观察结果计算开始按钮
双击Scope或XYGraph察看结果
打印参数设置
视图整体缩放X 轴缩放Y 轴缩放
保存当前坐标轴设置恢复坐标轴设置
悬浮开关
去除坐标轴选择
悬浮时信号选择器
视图自动缩放
(9) Scope 工具栏详解
1222u u f n n u 单自由度有阻尼自由振动方程0
22 u u u n n u u u n n 22
1222u u f n n u 单自由度有阻尼强迫振动方程
t r u u u n n sin 22 t r u u u n n sin 22
范德波尔方程(自激振动)杜芬方程
31122u u u f u 012 u u u u u u u u 12 023 u u u u 32u u u u 12112u u u f u。

相关文档
最新文档