|
回复 9 # bohua1208 的帖子
【再一次总结帖】怎么样才能绘制出最准确、最精确的分岔图??
http://forum.vibunion.com/thread-101072-1-1.html
论坛上由很多这样的程序,上面的帖子有一个程序,你可根据相应的方程记性修改!
这是Rossler系统的分岔程序!
function u =rosser(t,x)
global c
a=0.2; b=0.2;
x0=[0.5,0.4,0.3]';
u =[-x(2)-x(3), x(1)+a*x(2), b+x(3)*(x(1)-c)]';
clear all
global c
zhang=[];
M=[2.5:0.001:6.5];
counter=1;
for counter=1:length(M)
c=M(counter);
i=2;
xmax=0;
xmaxold=0;
frmdata=[];
error=0;
tspan=[0 300];
var=1;
y0=[0.5;0.3;0.2];
[t,x]=ode45(@rosser,tspan,y0);
while i < size(x,1)
if x(i-1,var) < x(i,var) & x(i+1,var) <= x(i,var)
xmax=x(i,var);
if xmaxold ~= 0
frmdata=[frmdata ; xmax xmaxold];
end
xmaxold=xmax;
end
i=i+1;
end
r= length(frmdata)-20:length(frmdata);
fradata1(1,r)=frmdata(r,1);
zhang=[zhang;fradata1];
end
plot(M,zhang,'k.','markersize',1);
xlabel(sprintf('c'));
ylabel(sprintf('x')) |
|