天天看點

【Lorenz混沌】基于FPGA的Lorenz混沌系統verilog實作

1.軟體版本

matlab2021a,quartusii

2.本算法理論知識

Lorenz在1963年洛倫茲在研究大氣對流現象時,發現了第一個結構簡單的三維自治混沌系統,這就是著名的“蝴蝶效應”模型,其數學模型為:

【Lorenz混沌】基于FPGA的Lorenz混沌系統verilog實作
【Lorenz混沌】基于FPGA的Lorenz混沌系統verilog實作

當r≤1時,對所有的x,y,z都成立,等式僅在r<1,x=y=z=0和r=1,x=y,z=0時才成立。

當r>1時,系統開始出現不穩定性,當r增加至rc時,有一個亞臨界的Hopf分岔。

當r>rc時,在吸引子附近相鄰的軌道平均來說是以指數分離的,是以兩條開始在一起非常接近的軌道很快喪失所有的相關性,呈現混沌狀。

3.核心代碼

% Dx=(25a+10)(y-x)
% Dy=(28-35a)x-xz+(29a-1)y
% Dz=xy-(a+8)z/3
% 當0<=a<0.8,廣義Lorenz系統
% 當a=0.8,廣義呂系統
% 當0.8<a<=1,廣義陳系統
clear;clc


 x=1.2;y=1.3;z=1.6;
%x=1 ;y=1 ;z=1 ;

dt=0.005;
a=10.0;c=28.0;b=2.666667;
figure;
for i=1:10000
    newx=x+a*(y-x)*dt;
    newy=y+(c*x-y-x*z)*dt;
    newz=z+(x*y-b*z)*dt;
    if i>1000
 %   plot(x,y)
    % plot(x,z)
    % plot(y,z)
     plot3(x,y,z)
    hold on
    end
    x=newx;y=newy;z=newz;
end

figure;
for i=1:10000
    newx=x+a*(y-x)*dt;
    newy=y+(c*x-y-x*z)*dt;
    newz=z+(x*y-b*z)*dt;
    if i>1000
    plot(x,y)
    % plot(x,z)
    % plot(y,z)
     %plot3(x,y,z)
    hold on
    end
    x=newx;y=newy;z=newz;
end


figure;
for i=1:10000
    newx=x+a*(y-x)*dt;
    newy=y+(c*x-y-x*z)*dt;
    newz=z+(x*y-b*z)*dt;
    if i>1000
   % plot(x,y)
     plot(x,z)
    % plot(y,z)
     %plot3(x,y,z)
    hold on
    end
    x=newx;y=newy;z=newz;
end


figure;
for i=1:10000
    newx=x+a*(y-x)*dt;
    newy=y+(c*x-y-x*z)*dt;
    newz=z+(x*y-b*z)*dt;
    if i>1000
    %plot(x,y)
    % plot(x,z)
     plot(y,z)
     %plot3(x,y,z)
    hold on
    end
    x=newx;y=newy;z=newz;
end      
【Lorenz混沌】基于FPGA的Lorenz混沌系統verilog實作

 4.操作步驟與仿真結論

【Lorenz混沌】基于FPGA的Lorenz混沌系統verilog實作

    對系統進行功能仿真:得到如下的結果:

【Lorenz混沌】基于FPGA的Lorenz混沌系統verilog實作

圖1 系統總體仿真結果

【Lorenz混沌】基于FPGA的Lorenz混沌系統verilog實作

圖2 系統總體仿真局部結果

5.參考文獻

[01]洛倫茲EN.混沌的本質.劉式達等譯.氣象出版社,1997

[02]劉秉正.非線性動力學與混沌基礎.長春:東北師範大學出版社,1994

繼續閱讀