前言
基于本系列第一篇文章MATLAB混沌系统仿真其一:Lorenz系统和Rossler系统,参考其函数传递方式、求解微分方程的函数,编写其他电路的仿真程序。由于电路结构是较为晦涩的内容,有需求的读者可以自行阅读专业书籍,这里只浅显地给出对应图形和特征。
一、三阶RC梯形移相振荡器
RC移相式振荡电路的振荡频率固定,虽然波形不太稳定(合适参数下,波形的幅值是混沌的),但是在一些要求不高的系统中也能使用。随着参数r的改变,电路也可能失去混沌,进入稳态。以下是振荡器的代码:
function dy=RC3(t,y0,r)
if(~exist('r','var'))
r = 300;
end
if(~exist('y0','var'))
dy=zeros(3,1);
end
ma=-34;%参数
no=r*y(3)+0.5*(ma-r)*(abs(y(3)+1)-abs(y(3)-1));
dy(1)=-2*y(1)+y(2)+no;
dy(2)=y(1)-2*y(2)+y(3);
dy(3)=y(2)-y(3);
end
使用ode45函数求解,将所求的时间与三个微分方程的初值传进去,得出波形和吸引子如下:
tspan = 0:0.01:70;
y0 = [1,0.15,-1];
[t,y]=ode45(@RC3,tspan,y0);
二、蔡氏电路(Chua’s circuit)
蔡氏电路是一种简单的非线性电子电路设计,它可以表现出标准的混沌理论行为。(蔡少棠教授,1983)
带物理参数的蔡氏电路
蔡氏电路可以用简单的电路实现,此时需要用物理参数描述蔡氏电路。本次仿真的电路参数都是经典值,因此不在代码内累述。
% 方程代码
para=G2*y(1)+0.5*(G1-G2)*(abs(Vpp+y(1))-abs(Vpp-y(1)));
dy(1)=(1/C1)*(-y(1)/R+y(2)/R-para);
dy(2)=(1/C2)*(y(1)/R-y(2)/R+y(3));
dy(3)=-y(2)/L;
电容C、导纳G等值根据可以根据实际电路修改,在方程式代码的前面赋予对应值即可。同时带物理参数的蔡氏电路的时序比较小,采样率需要相应提高,这里采用1GHz,画出5微秒的仿真图。使用初值
[
1
0.15
0
]
[1\ 0.15\ 0]
[1 0.15 0],其波形和吸引子图如下:
也是一种经典的混沌电路。
蔡氏电路的自治形式
蔡氏电路可以写成方程右边不带t的形式(这也叫自治方程),其结果与带物理参数的方程其实差别不大。其代码更简单:
para=(a-b)*(abs(y(1)+1)-abs(y(1)-1));
dy(1)=r*(y(2)-y(1)-para);
dy(2)=y(1)-y(2)+y(3);
dy(3)=-beta*y(2);
求解同样使用ode45函数。
参数r可以控制其吸引子形状。把r的数值改成9,则吸引子变成单卷形。