最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

M文件和Simulink求解连续微分系统实例分析

来源:动视网 责编:小OO 时间:2025-10-01 10:20:43
文档

M文件和Simulink求解连续微分系统实例分析

M文件和Simulink求解连续微分系统实例分析Matlab自带的一个S函数源代码:D:\\MATLAB7\oolbox\\simulink\\blocks\\sfuntmpl例1.常微分方程(Lorenze混沌系统):(1)其中。(1)m文件实现:文件名为exam1.mfunctionexam1x0=[0;0;1e-3];[t,x]=ode45(@lorenzfun,[0,100],x0);figure(1)plot(t,x)figure(2)plot3(x(:,1),x(:,2),x(:,
推荐度:
导读M文件和Simulink求解连续微分系统实例分析Matlab自带的一个S函数源代码:D:\\MATLAB7\oolbox\\simulink\\blocks\\sfuntmpl例1.常微分方程(Lorenze混沌系统):(1)其中。(1)m文件实现:文件名为exam1.mfunctionexam1x0=[0;0;1e-3];[t,x]=ode45(@lorenzfun,[0,100],x0);figure(1)plot(t,x)figure(2)plot3(x(:,1),x(:,2),x(:,
M文件和Simulink求解连续微分系统实例分析

Matlab自带的一个S函数源代码: D:\\MATLAB7\oolbox\\simulink\\blocks\\sfuntmpl

例1.常微分方程(Lorenze混沌系统):

                                                    (1)

其中。

(1)m文件实现:文件名为exam1.m

function exam1

x0=[0;0;1e-3];

[t,x]=ode45(@lorenzfun,[0,100],x0);

figure(1)

plot(t,x)

figure(2)

plot3(x(:,1),x(:,2),x(:,3))

%----------------------------------

function dx=lorenzfun(t,x)

a=10;c=28;b=8/3;

dx=zeros(3,1);

dx(1)=-b*x(1)+x(2)*x(3);

dx(2)=-a*x(2)+10*x(3);

dx(3)=-x(1)*x(2)+c*x(2)-x(3);

(2) (I)Simulink模块实现:(见lorenzblok)

其中三个积分模块的初始值设置与exam1相同,仿真时长为100s。精度设置:Simulation--Configuration Parameters—Relative tolerance, 1e-3改为1e-5(试试不作此修改的结果比较)。运行后双击示波器scope后可看到:

或在matlab命令窗口输入画图命令:

>> plot(tout,yout) >>plot3(yout(:,2),yout(:,3),yout(:,1))

(II)Simulink向量模块实现:(见lorenzevector)

画图语句:>>plot(t,x) >>plot3(x(:,1),x(:,2),x(:,3))

(3)Simulink中S函数的实现:(见lorenzsfun 和lorenzsystem.m)

例2.常时滞微分方程:

                                            (2)

(1)m文件需调用dde23来求解:(见exam2.m)

function exam2

sol = dde23('exam1f',[1, 0.2],ones(3,1),[0, 5]);

plot(sol.x,sol.y);

title('Example 2')

xlabel('time t');

ylabel('y(t)');

%-----------------------------------------------

function v = exam1f(t,y,Z)

ylag1 = Z(:,1);

ylag2 = Z(:,2);

v = zeros(3,1);

v(1) = ylag1(1);

v(2) = ylag1(1) + ylag2(2);

v(3) = y(2);

(2)Simulink中S函数来实现:(见exam2sfun和exam2mfun.m)

注:用Simulink中S函数求解时滞微分方程的核心思想在于:将时滞变量作为S函数的外部输入。

画图语句为: >>plot(t,y)

例3.用Simulink解决一个变时滞的例子。(见logisticvariable和logisticconstant)

单时滞量的Logistic一阶时滞微分方程:

                                           (3)

                                             (4)

取和。对于(3)和(4)而言,若分别取和,易知当充分大时。Simulink模块框图分别如下:

取相同的初始条件,运行后分别双击Scope可得

或画图命令:>>plot(t,x)

思考:a. 改变时滞量的值,看有什么变化;

      b. 试试看用S函数替代上面的框图会更简单。

文档

M文件和Simulink求解连续微分系统实例分析

M文件和Simulink求解连续微分系统实例分析Matlab自带的一个S函数源代码:D:\\MATLAB7\oolbox\\simulink\\blocks\\sfuntmpl例1.常微分方程(Lorenze混沌系统):(1)其中。(1)m文件实现:文件名为exam1.mfunctionexam1x0=[0;0;1e-3];[t,x]=ode45(@lorenzfun,[0,100],x0);figure(1)plot(t,x)figure(2)plot3(x(:,1),x(:,2),x(:,
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top