|
回复无水
我把采用这种方法的一个lorenz分岔图的例子列在下面,一看就明白了!
function dy = Lorenz(t,y)
global r
dy=zeros(3,1);
dy(1)=-10*(y(1)-y(2));
dy(2)=-y(1)*y(3)+r*y(1)-y(2);
dy(3)=y(1)*y(2)-8*y(3)/3;
下面是求解程序
clear all
global r
t0=[0 150];%积分时间
y0=[1,0,0];
%bifurcation
for r=1:0.05:30 %r的变化精度
[t,y]=ode45('Lorenz',t0,y0);
[Xmax]=getmax(y(:,1));
plot(r,Xmax,'b','markersize',1)
hold on
clear Xmax
end
xlabel('r')
ylabel('Xmax')
下面是getmax程序
function [Xmax] = getmax(y)
a=length(y);
j=1;
for i=(a-1)/2:a
b=(y(i,1)-y(i-2,1))/2;
c=(y(i,1)+y(i-2,1))/2-y(i-1,1);
if y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)&c==0
Xmax(j)=y(i-1,1);
j=j+1;
elseif y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)
Xmax(j)=y(i-1,1)-b^2/(4*c);
j=j+1;
end
end |
评分
-
1
查看全部评分
-
|