前言:
最近研究的被控对象有延时、死区非线性特性,希望通过分线性分析挖掘其中一些有价值的东西,从混沌的分析方法观察参数变化对被控对象的影响。刚开始接触混沌,先从感性的认识入手,然后学习了分岔图和李雅普诺夫指数概念,计算方法和编程。复现了一维非线性差分方程的分岔图,lyapunov指数计算有现成的matlab工具包,但是需要根据自己模型进行融合。照葫芦画瓢做了自己的被控对象的分岔图,但是合理性有待进一步研究,这部分没有放上来。
一、 lorenz混沌系统相轨迹图 MATLAB 仿真
lorenz混沌系统 MATLAB 仿真程序如下
% lorenz混沌系统 MATLAB 仿真
其中洛伦兹混沌函数为
% 洛伦兹混沌函数
function dydt = lorenz_diff(t,y)
dydt = [ -10*(y(1)-y(2));
30*y(1)-y(1)*y(3)-y(2)
-8/3*y(3)+y(1)*y(2)];
end
二、李雅普诺夫指数
李雅普诺夫指数,衡量一个系统因微小初值误差,随时间(迭代)产生分离的程度。李雅普诺夫指数大于0,可以作为混沌行为的判据。李雅普诺夫指数正负及其数目决定了吸引子类型。计算李雅普诺夫方法很多,matlab有相应的工具包,但是需要编写一下自己模型的微分方程。
三、分岔图
以抛物线迭代方程为例
分岔图为
对应x值变化情况为
r=2.8时
r=3.2
r=3.5
r=3.7
抛物线映射的分岔图matlab程序
%% 混沌中的倍周期现象matlab实现
clear
clc
r=2.7:0.001:3.9;
n=length(r);
x=zeros(150,n);
x(1,:)=0.1;
for i=2:150
x(i,:)=r.*x(i-1,:).*(1-x(i-1,:));
end
x1=x(101:150,:);
figure(1)
plot(r,x1,'.k','MarkerSize',0.5)
xlabel('r 参数');
ylabel('x 状态')
k=(3.5-2.7)/0.001-1;
抛物线映射数值迭代的matlab程序
% 抛物线模型的迭代图,用来验证和感受分岔图中参数对系统变化的影响
%by zhouyu
close all
clc
clear
tv=100;
x=zeros(1,tv);
x(1)=0.1;
r=3.7;%2.8;3.2;3.5; 3.7可观察不同收敛现象
for i=1:tv-1
x(i+1)=r*x(i)*(1-x(i));
end
plot([1:tv],x)
xlabel('迭代次数')
ylabel('状态变化')
x(100)
四、参考文献
禹思敏.混沌系统与混沌电路——原理、设计及其在通信中的应用
7.李雅普诺夫指数 - 百度文库wenku.baidu.com 混沌现象的matlab实现 - 百度文库wenku.baidu.com lorenz混沌系统 MATLAB 仿真jingyan.baidu.com