2007年11月11日日曜日

レスラーアトラクタ

レスラーモデルに参考
 レスラーモデルとは、チュービンゲン大学のレスラー(O.E.Rossler)によって提案されたストレンジアトラクタで、非線形項のみを含む非線形微分方程式である。
%-----------------  MATLABのソース  -----------------%
%----------------- main_rossler.m -----------------%
function main_rossler
r = 2;
c = 2;
[t,xyz] = ode45('rossler',[0,500],[4;0;0]);
x = xyz(:,1); xmin = min(x); xmax = max(x);
y = xyz(:,2); ymin = min(y); ymax = max(y);
z = xyz(:,3); zmin = min(z); zmax = max(z);

aviobj = avifile('rossler.avi');

for i=1:length(t)
subplot(r,c,1);
plot3(x(1:i),y(1:i),z(1:i),...
x(1),y(1),z(1),'or',...
x(i),y(i),z(i),'ob');
axis([xmin xmax ymin ymax zmin zmax]);
xlabel('x'); ylabel('y'); zlabel('z');

subplot(r,c,2);
plot(x(1:i),y(1:i),...
x(1),y(1),'or',...
x(i),y(i),'ob');
axis([xmin xmax ymin ymax]);
xlabel('x'); ylabel('y');

subplot(r,c,3);
plot(x(1:i),z(1:i),...
x(1),z(1),'or',...
x(i),z(i),'ob');
axis([xmin xmax zmin zmax]);
xlabel('x'); ylabel('z');

subplot(r,c,4);
plot(y(1:i),z(1:i),...
y(1),z(1),'or',...
y(i),z(i),'ob');
axis([ymin ymax zmin zmax]);
xlabel('y'); ylabel('z');

%pause(0.01);
%F(i) = getframe(GCF);
F = getframe(GCF);
aviobj = addframe(aviobj,F);
end
aviobj = close(aviobj);
%movie2avi(F,'rossler.avi');
end
%----------------- main_rossler.m -----------------%

%----------------- rossler.m -----------------%
function xyz = rossler(t,y)
a = 0.2;
b = 0.2;
c = 6.0;
xyz = [ -y(2) - y(3)
y(1) + a*y(2)
b + y(1)*y(3) - c*y(3) ];
end
%----------------- rossler.m -----------------%
%----------------- MATLABのソース -----------------%
実行の結果

0 件のコメント: