连续时间混沌系统MATLAB程序和SIMULINK模型
- 格式:doc
- 大小:229.50 KB
- 文档页数:9
常微分方程及常微分方程组地求解
( )
转载▼
分类:编程之
标签:
杂谈
最近参加了数学建模,对于老师说地算法地不同步长地精度不一样,编写了一个函数文件来实现这个精度地比较,把函数附上:文档收集自网络,仅用于个人学习
[] ()
这里使用可变输出输入函数地
{}为求解常微分方程地表达式
{}为求解常微分方程地定解条件
需要给出地变量有常微分方程地范围,({}{})
为对这个区间地分割({})文档收集自网络,仅用于个人学习
写于月日
取得算法需要地变量,并附上容易理解地含义变量
{};
{}自变量地范围
{}区间地分割次数
( )步长
{}; 常微分方程地表达式
{}; 常微分方程地定解条件表达式文档收集自网络,仅用于个人学习
首先求出所给常微分方程问题地精确解
();
();
; ;
(,'');
() ;
() (,{},{()});
:()
() () ;
() ((,{},{()}));
文档收集自网络,仅用于个人学习
利用方法求解近似数值微分解
();
();
;
() ;
() (,{},{})获得原方程地初解
:()
() () ;
() () .* (((),{},{()()}))特别记录中地字符串操作,提取子字符串即(:)...
文档收集自网络,仅用于个人学习
返回经过算法算出与地值
;
;
画图进行误差比较
(,'');
;
(,'');文档收集自网络,仅用于个人学习特此记录,以后写了新地算法再分享。
【关键字】实现连续时间系统分析及MATLAB实现张登奇,张璇(湖南理工学院信息与通信工程学院,湖南岳阳)摘要:文章介绍了分析连续时间系统的基本流程,阐述了系统模型的创建方法,并用拉普拉斯变换对连续时间系统进行了时域、频域和稳定性分析,实例列举了MATLAB实现的程序。
关键词:MATLAB;连续时间系统;系统分析;拉普拉斯变换;系统函数引言系统分析就是已知系统结构和参数,研究系统的特性或计算给定激励下系统的输出。
分析系统首先要根据系统结构建立描述系统的数学模型,再采用适当的数学方法分析这个模型,找出反映系统基本性能的特征量,或求解给定激励下系统的输出。
在连续时间系统中,线性时不变连续时间系统是最基本的连续时间系统,电路网络或结构框图是常见的系统结构描述形式。
下面以线性时不变连续时间因果稳定系统为例,介绍系统分析的基本流程,阐述创建电路网络或结构框图数学模型的基本方法,并用拉普拉斯变换法对连续时间系统进行时域分析、频域分析和稳定性分析,结合实例列出MA TLAB在系统分析过程中的应用程序。
1 系统分析流程系统分析实质上是根据系统模型进行数学运算的过程。
分析系统首先要根据系统结构,建立一个描述系统的数学模型。
微分方程只与连续系统的自身结构有关,反映了系统的自身特性,是最基本的系统模型。
在零状态条件下,将微分方程两边进行拉普拉斯变换很容易得出系统函数。
系统函数的拉氏反变换就是描述系统时间特性的特征参数——单位冲激响应;将系统函数的变量用代入即可得到描述系统频率特性的特征参数——频率响应。
对系统进行时域分析,主要是求解微分方程,也可通过计算系统输入与单位冲激响应的卷积,在时域直接求解系统的零状态响应;对系统进行频域分析,主要是寻求系统输出随频率变化的规律,也可根据卷积性质把时域中的卷积计算变换成频域中的乘法运算。
无论是时域分析还是频域分析,拉普拉斯变换是简化运算的有力工具[1],系统函数是时域与频域联系的桥梁,根据其极点位置也可方便判断系统的稳定性。
【标题】Matlab中连续时间系统的建模与仿真实例【正文】1. 概述在工程领域中,连续时间系统的建模与仿真是非常重要的环节。
Matlab作为一款强大的工程计算软件,提供了丰富的工具和功能,可以帮助工程师们高效地完成系统建模与仿真的工作。
本文将以连续时间系统的建模与仿真为主题,通过实例的方式,从简到繁地探讨Matlab中的相关应用。
2. 相关概念解释在开始具体的实例之前,我们先来了解一下什么是连续时间系统的建模与仿真。
连续时间系统是指系统的输入和输出都是连续的,可以用连续函数来描述。
而建模与仿真则是指利用数学模型和计算机软件,对系统进行描述和分析,并用计算机模拟系统的行为。
Matlab提供了Simulink等工具,可以方便地进行连续时间系统的建模与仿真。
3. 实例展示接下来,我们将通过一个简单的实例来演示Matlab中连续时间系统的建模与仿真。
假设我们要建立一个受控物体的连续时间系统模型,并对其进行仿真。
在Matlab中,我们可以首先使用Simulink工具搭建系统模型,包括输入信号、系统传输函数等。
通过设置仿真参数和运行仿真,我们可以得到系统的输出响应,进而进行分析和评估。
4. 实例分析在实例展示中,我们可以逐步扩展系统模型的复杂度,加入更多的控制器、传感器等元素,以更贴近实际工程应用场景。
利用Matlab强大的数据处理和分析功能,可以对仿真结果进行详细的分析和评估,验证系统性能和稳定性。
5. 总结与回顾通过本文的实例演示,我们了解了Matlab中连续时间系统建模与仿真的基本流程和方法。
在工程实践中,合理使用Matlab工具,可以极大地提高系统设计与分析的效率和准确性。
值得注意的是,系统建模与仿真需要结合实际情况进行灵活应用,才能更好地发挥其作用。
6. 个人观点个人认为,Matlab提供的工程计算工具具有很高的实用性和适用性,尤其对于连续时间系统的建模与仿真来说,其优势尤为突出。
希望工程师们能够深入学习和应用Matlab工具,不断提升自己在系统设计与分析领域的能力。
matlab连续时间系统的建模与仿真实例标题:深入探讨matlab连续时间系统的建模与仿真实例一、引言在工程领域中,连续时间系统的建模与仿真是非常重要的一环。
使用matlab作为工具可以帮助工程师们更好地理解和分析连续时间系统的行为。
本文将深入探讨matlab在连续时间系统建模与仿真中的实际应用,帮助读者更好地掌握这一领域的知识。
二、连续时间系统建模与仿真概述连续时间系统建模与仿真是指利用数学方法和计算机工具对连续时间系统进行抽象化描述和模拟。
在工程实践中,这一过程可以帮助工程师们更好地理解系统的动态特性、分析系统的稳定性和性能,并设计控制策略以满足特定的需求。
1.连续时间系统建模方法连续时间系统建模的方法有很多种,常用的包括微分方程描述、传递函数描述、状态空间描述等。
在matlab中,可以利用Simulink工具箱来快速构建系统的模型,并进行仿真分析。
2.连续时间系统仿真实例下面我们将以一个简单的例子来展示如何使用matlab对连续时间系统进行建模和仿真。
假设有一个带有阻尼的弹簧质量系统,其运动方程可以描述为:\[ m \frac{d^2 x(t)}{dt^2} + c \frac{dx(t)}{dt} + kx(t) = F(t) \]其中,m为质量,c为阻尼系数,k为弹簧常数,F(t)为外部作用力。
我们希望利用matlab对这个系统进行建模,并仿真系统的动态响应。
三、matlab建模与仿真实例1.建立模型在matlab中打开Simulink工具箱,我们可以直接从库中选择弹簧质量阻尼系统的模块进行快速搭建。
将质量、阻尼、弹簧和外部作用力连接起来,即可构建出系统的模型。
2.参数设定设定系统的参数:m=1kg, c=0.5N/m/s, k=2N/m, 外部作用力F(t)=sin(t)。
3.仿真分析设置仿真时间为10s,运行仿真,观察系统的位移-时间和速度-时间响应。
四、实验结果分析通过matlab进行仿真,我们可以得到系统的位移和速度随时间的变化曲线。
混沌同步模型驱动系统和响应系统都是Lorenz System,只不过初值不同。
驱动系统: dx/dt=a*(y-x)dy/dt=r*x-y-xzdz/dt=x*y-b*z初值(0.1,0.1,0.1)输出信号令S(t)=x(t)响应系统:将S(t)代替x(t)作为激励信号dx/dt=a*(y-x)dy/dt=r*x-y-xzdz/dt=x*y-b*z初值(0.1,0.1,1)最后求响应系统的输出x(t),y(t),z(t)程序:function [Y1] = Lorenz_response(tspan);%%计算处于响应地位的Lorenz系统的数值解,并由此画出其相图yinit = [0.1,0.1,1];% 初始化输入y(1:3) = yinit;tstart = 0; % 时间初始值tstep = 1e-1; % 时间步长wholetimes = 1e2; % 总的循环次数steps = 1; % 每次演化的步数iteratetimes = wholetimes/steps; % 演化的次数S=output;for i=1:iteratetimes;tspan = tstart:tstep:(tstart + tstep*steps);[T,Y1] = ode45(@Lorenz_driven, tspan, y);y = Y1(size(Y1,1),:);y(1)=S(i,1);% 重新定义起始时刻tstart = tstart + tstep*steps;endfigure(1)plot3(Y1(:,1),Y1(:,2),Y1(:,3))function s=output;tstart = 0; % 时间初始值tstep = 1e-1; % 时间步长wholetimes = 1e2; % 总的循环次数% options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);tspan=tstart:tstep:wholetimes*tstep[T,Y] = ode45(@Lorenz_driven,tspan,[0.1 0.1 0.1]);s=Yfigure(3)plot3(Y(:,1),Y(:,2),Y(:,3))function dY=Lorenz_driven(t,Y);a=10;b=8/3;r=60;dY=zeros(3,1);dY=[a*(Y(2)-Y(1));-Y(1)*Y(3)+r*Y(1)-Y(2);Y(1)*Y(2)-b*Y(3)]MatLab常微分方程及常微分方程组的求解(2011-07-08 23:01:48)转载▼分类:编程之Matlab标签:杂谈最近参加了数学建模,对于老师说的Euler算法的不同步长的精度不一样,编写了一个M 函数文件来实现这个精度的比较,把函数附上:function [x,y]= Euler(varargin)%这里使用可变输出输入函数的%varargin{1}为求解常微分方程的表达式%varargin{2}为求解常微分方程的定解条件%需要给出的变量有常微分方程的范围a,b(varargin{3},varargin{4})%n为对这个区间的分割(varargin{5})%xlt写于7月8日%取得算法需要的变量,并附上容易理解的含义变量a = varargin{3};b = varargin{4};%自变量的范围n = varargin{5};%区间的分割次数h = (b - a)/n;%步长Dy = varargin{1}; %常微分方程的表达式y0 = varargin{2}; %常微分方程的定解条件表达式%首先求出所给常微分方程问题的精确解x1 = zeros(n+1,1);y1 = zeros(n+1,1);syms f1; syms x;f1 = dsolve(Dy,y0,'x');x1(1) = a;y1(1) = subs(f1,{x},{x1(1)});for i = 2:(n+1)x1(i) = x1(i-1) + h;y1(i) = double(subs(f1,{x},{x1(i)}));end%利用Euler方法求解近似数值微分解x2 = zeros(n+1,1);y2 = zeros(n+1,1);syms y;x2(1) = a;y2(1) = subs(f1,{x},{a});%获得原方程的初解for i = 2:(n+1)x2(i) = x2(i-1) + h;y2(i) = y2(i-1) + h .* double(subs(Dy(5:end),{x,y},{x2(i-1),y2(i-1)}));%特别记录Matlab中的字符串操作,提取子字符串即A(3:6)...end%返回经过Euler算法算出x与y的值x = x2;y = y2;%画图进行误差比较plot(x1,y1,'r');hold on;plot(x2,y2,'b');特此记录,以后写了新的算法再分享文 - 汉语汉字编辑词条文,wen,从玄从爻。
课程设计任务书题目:连续时间信号和系统时域分析及MATLAB实现课题内容:一、用MATLAB实现常用连续时间信号的时域波形(通过改变参数,分析其时域特性)。
二、用MATLAB实现信号的时域运算三、用MATLAB实现信号的时域变换(参数变化,分析波形变化)1、反转,2、使移(超时,延时),3、展缩,4、倒相,5、综合变化四、用MATLAB实现信号简单的时域分解1、信号的交直流分解,2、信号的奇偶分解五、用MATLAB实现连续时间系统的卷积积分的仿真波形给出几个典型例子,对每个例子,要求画出对应波形。
六、用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形。
给出几个典型例子,四种调用格式。
七、利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形。
给出几个典型例子,要求可以改变激励的参数,分析波形的变化。
时间安排:学习MATLAB语言的概况第1天学习MATLAB语言的基本知识第2、3天学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天课程设计第6-9天答辩第10天指导教师签名:年月日目录摘要 (Ⅰ)1.绪论 (1)2.对课题内容的分析 (2)2.1连续时间信号概述 (2)2.2采样定理 (2)2.3总体思路 (2)3.设计内容 (2)3.1用MATLAB实现常用连续时间信号的时域波形 (2)3.1.1单位阶跃信号和单位冲击信号 (2)3.1.2正弦信号 (4)3.1.3指数信号 (5)3.1.4实指数信号和虚指数信号 (6)3.2用MATLAB实现信号的时域运算 (7)3.2.1相加 (7)3.2.2相乘 (8)3.2.3数乘 (9)3.2.4微分 (10)3.2.5积分 (12)3.3用MATLAB实现信号的时域变换 (13)3.4用MATLAB实现信号简单的时域分解 (15)3.4.1 交直流分解 (15)3.4.2 奇偶分解 (16)3.5用MATLAB实现连续时间系统的卷积积分的仿真波形 (18)3.6用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形 (19)3.7利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形 (20)4.心得体会 (22)5.参考文献 (23)摘要本文介绍了基于MATLAB的连续时间信号与系统时域分析。
第6章连续时间混沌系统本章讨论连续时间混沌系统的基本特点与分析方法,主要包括混沌数值仿真和硬件实验方法简介、混沌系数平衡点的计算、平衡点的分类与性质、相空间中的轨道、几类典型连续混沌系统的介绍、混沌机理的分析方法、用特征向量空间法寻找异宿轨道、Lorenz系统及混沌机理定性分析、Lorenz映射、Poincare截面、Chua系统及其混沌机理定性分析、时间序列与相空间重构等内容。
6.1 混沌数值仿真和硬件实验方法简介混沌的数值仿真主要包括MA TLAB编程、SIMULINK模块构建、EWB仿真以及其他一些相关的软件仿真或数值计算等方法,从而获取混沌吸引子的相图、时域波形图、李氏指数、分叉图和功率谱等。
混沌的硬件实验主要包括模拟/数字电路设计与硬件实验、现场可编程门阵列器件(FPGA)、数字信号处理器(DSP)等硬件实现方法来产生混沌信号。
本节仅对各种数值仿真方法作简单介绍。
1)混沌系统的MA TLAB数值仿真该方法主要根据混沌系统的状态方程来编写MA TLAB程序。
现举二例来说明这种编程方法。
(1)已知Lorenz系统的状态方程为dx/dt=-a(x-y)dy/dt=bx-xz-ydz/dt=-cz+xy式中a=10,b=30,c=8/3。
MA TLAB仿真程序如下:>> %**************************************************Function dxdt=lorenz(t,x)%除符号dxdt外,还可用其他编程者习惯的有意义的符号A=10;B=30;C=8/3;dxdt=zeros(3,1);dxdt(1)=-A*(x(1)-x(2));dxdt(2)=B*x(1)-x(1).*x(3)-x(2);dxdt(3)=x(1)*x(2)-C*x(3);%*************************************************options=odeset('RelTol',1e-6,'AbsTol',[ 1e-6 1e-6 1e-6]);t0=[0 200];x0=[0.02,0.01,0.03];[t,x]=ode45('lorenz',t0,x0,options);%**************************************************n=length(t)n1=round(n/2)%n1=1;%**************************************************figure(1);plot(t(n1:n,1),x(n1:n,1));xlabel('t','fontsize',20,'fontname','times new roman','FontAngle','italic');ylabel('x','fontsize',20,'fontname','times new roman','FontAngle','italic');figure(2);plot(x(n1:n,1),x(n1:n,3));xlabel('x','fontsize',20,'fontname','times new roman','FontAngle','italic');ylabel('z','fontsize',20,'fontname','times new roman','FontAngle','italic');%*******************************************************************根据上述MA TLAB程序,得Lorenz系统的时域波形图和混沌吸引子相图的数值仿真结果如图6-1所示。
图6-1 Lorenz系统的时域波形图和混沌吸引子相图的MATLAB数值仿真结果(2)已知Chua系统的状态方程为dx=a[y-f(x)]dy=x-y+zdz=-by式中a=10,b=15,m0=-1/7,m1=2/7,f(x)=m1*x+0.5(m0-m1)[|x+1|-|x-1|]为三分段非线性函数MA TLAB仿真如下:function dxdt=chua(t,x)m0=-1/7;m1=2/7;a=10;b=15;%*******************************************dxdt=zeros(3,1);f=m1*x(1)+0.5*(m0-m1)*(abs(x(1)+1)-abs(x(1)-1));dxdt(1)=a*(x(2)-f);dxdt(2)=x(1)-x(2)+x(3);dxdt(3)=-b*x(2);%*****************************************************options=odeset('RelTol',1e-6,'AbsTol',[1e-6 1e-6 1e-6]);t0=[0 5e+2];x0=[0.01 0.02 0.03];[t,x]=ode45('chua',t0,x0,options);%****************************************************n=length(t)n1=round(n/2)%****************************************************** figure(1);plot(t(n1:n),x(n1:n,1));xlabel('t','fontsize',20,'fontname','times new roman','FontAngle','italic'); ylabel('x','fontsize',20,'fontname','times new roman','FontAngle','italic'); figure(2);plot(x(n1:n,1),x(n1:n,2));xlabel('x','fontsize',20,'fontname','times new roman','FontAngle','italic'); ylabel('y','fontsize',20,'fontname','times new roman','FontAngle','italic'); %********************************************************根据上述MA TLAB 程序,得Chua 系统的时域波形图和混沌吸引子相图的数值仿真结果如图6-2所示。
图6-2 Chua 系统的时域波形图和混沌吸引子相图的MATLAB 数值仿真结果2) 混沌系统的SIMULINK 仿真该方法主要是根据混沌系统的状态方程,将其转换成积分方程,利用模块和积分算子画出SIMULINK 的模块化仿真图。
为保证计算的精确度,又不使仿真时间过长,应对仿真图中几个重要参数进行设置。
第一个参数是仿真时间:第二个参数是相对误差,通常设为1010-;第三个参数是绝对误差,通常设为1310-,现举二例来说明这种编程方法。
(1) 已知Lorenz 系统的状态方程仍如(6-1)式,将其转换成积分方程:dx/dt=-a(x-y) ⎰--=dt y x a x )]([dy/dt=bx-xz-y ⎰--=dty xz bxy ][ dz/dt=-cz+xy⎰+-=dtxy czz ][注意 ,SIMULINK 仿真中的微分子算子为S ,积分算子为S1,故得SIMULINK 的仿真如图6-3所示,设其文件名为“simulink_lorenz ”,再利用文件名为“y_simulink_lorenz ”的程序运行“simulink_lorenz ”。
程序如下:[t,x]=sim('simulink_lorenz',200);n=length(t)n1=round(n/2)%*********************************************figure(1);plot(t(n1:n,1),x(n1:n,1));xlabel('t','fontsize',20,'fontname','times new roman','FontAngle','italic');ylabel('x','fontsize',20,'fontname','times new roman','FontAngle’,'italic');figure(2);plot(x(n1:n,1),x(n1:n,3));xlabel('x','fontsize',20,'fontname','times new roman','FontAngle','italic');ylabel('z','fontsize',20,'fontname','times new roman','FontAngle','italic');%********************************************************运行结果仍如图6-1所示。