2007年11月10日土曜日

ローレンツ・アトラクタ

ローレンツモデルに参考

 ローレンツモデルとは、気象学者エドワード・ローレンツ (Edward N. Lorenz)は1963年に "Deterministic nonperiodic flow"というカオスの研究上重要な位置を占めるにことになる論文を発表した。
 このモデルは、上下に温度差のある流体の運動差によって、対流から乱流へ転移してく運動を記述するモデルである。一般的な対流の運動方程式、連続の方程式、熱伝導の方程式を用いて導かれる。

%----------------- MATLABソース -----------------%
%----------------- lorenz_main.m -----------------%
function main
r = 2;
c = 2;
[t,xyz] = ode45('lorenz',[0,30],[5;3;1]);
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);

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);
end
movie2avi(F,'lorenz.avi');
end
%----------------- lorenz_main.m -----------------%

%----------------- lorenz.m -----------------%
function xyz = lorenz(t,y)
s = 10;
b = 8/3;
r = 28;
xyz = [ -s .* y(1) + s .* y(2)
r .* y(1) - y(2) - y(1) .* y(3)
y(1) .* y(2) - b .* y(3) ];
end
%----------------- lorenz.m -----------------%
%----------------- MATLABソース -----------------%


実行の結果

0 件のコメント: