syms t;
syms x;
syms y;
syms z;
iterMax = 25;
tol = 1^(-5);
n = 1000;
A = 10; B = 4.85; C = 10;
x0 = 2.3; y0 = -1.3; z0 = 10;
tic
[T, Wx, Wy, Wz] = HeunMeth2(A*(B*y-x),C*x-x*z,x*y-B*z,0,10,x0,y0,z0,n,tol,iterMax);
tiempoCaso1 = toc;
grafiqueCortes(Wx, Wy, Wz,'Oscilador Caotico de Lorenz variante Tee/Salleh Caso 1', 1);
muestreTiempos(T, Wx, Wy, Wz,'Caso 1');
grafiqueTiempos(T, Wx, Wy, Wz,'Caso 1',1);
A = 10; B = 8.5; C = 10;
x0 = 2.3; y0 = -1.3; z0 = 10;
tic
[T, Wx, Wy, Wz] = HeunMeth2(A*(B*y-x),C*x-x*z,x*y-B*z,0,10,x0,y0,z0,n,tol,iterMax);
tiempoCaso2 = toc;
grafiqueCortes(Wx, Wy, Wz,'Oscilador Caotico de Lorenz variante Tee/Salleh Caso 2', 2);
muestreTiempos(T, Wx, Wy, Wz,'Caso 2');
grafiqueTiempos(T, Wx, Wy, Wz,'Caso 2',2);
A = 10; B = 8.6; C = 10;
x0 = 2.3; y0 = -1.3; z0 = 10;
tic
[T, Wx, Wy, Wz] = HeunMeth2(A*(B*y-x),C*x-x*z,x*y-B*z,0,10,x0,y0,z0,n,tol,iterMax);
tiempoCaso3 = toc;
grafiqueCortes(Wx, Wy, Wz,'Oscilador Caotico de Lorenz variante Tee/Salleh Caso 3', 3);
muestreTiempos(T, Wx, Wy, Wz,'Caso 3');
grafiqueTiempos(T, Wx, Wy, Wz,'Caso 3',3);
A = 10; B = 4.85; C = 10;
x0 = -2.3; y0 = 1.3; z0 = -10;
tic
[T, Wx, Wy, Wz] = HeunMeth2(A*(B*y-x),C*x-x*z,x*y-B*z,0,10,x0,y0,z0,n,tol,iterMax);
tiempoCaso4 = toc;
grafiqueCortes(Wx, Wy, Wz,'Oscilador Caotico de Lorenz variante Tee/Salleh Caso 4', 4);
muestreTiempos(T, Wx, Wy, Wz,'Caso 4');
grafiqueTiempos(T, Wx, Wy, Wz,'Caso 4',4);
A = 10; B = 4.85; C = 10;
x0 = -0.1; y0 = -1; z0 = -1;
tic
[T, Wx, Wy, Wz] = HeunMeth2(A*(B*y-x),C*x-x*z,x*y-B*z,0,10,x0,y0,z0,n,tol,iterMax);
tiempoCaso5 = toc;
grafiqueCortes(Wx, Wy, Wz,'Oscilador Caotico de Lorenz variante Tee/Salleh Caso 5', 6);
muestreTiempos(T, Wx, Wy, Wz,'Caso 5');
grafiqueTiempos(T, Wx, Wy, Wz,'Caso 5',5);
disp("Tiempo de ejecucion Caso 1:" + num2str(tiempoCaso1));
disp("Tiempo de ejecucion Caso 2:" + num2str(tiempoCaso2));
disp("Tiempo de ejecucion Caso 3:" + num2str(tiempoCaso3));
disp("Tiempo de ejecucion Caso 4:" + num2str(tiempoCaso4));
disp("Tiempo de ejecucion Caso 5:" + num2str(tiempoCaso5));
%Esta funcion muestra la grafica de los tiempos en 0,200,500,700,1000 (0,2,5,7,10)
function grafiqueTiempos(T,Wx,Wy,Wz,nombreCaso,numeroCaso)
figure(7);
subplot(2,3,numeroCaso);
Wx = [Wx(1), Wx(201), Wx(501), Wx(701), Wx(1001)];
Wy = [Wy(1), Wy(201), Wy(501), Wy(701), Wy(1001)];
Wz = [Wz(1), Wz(201), Wz(501), Wz(701), Wz(1001)];
c = linspace(1,5,length(Wx));
scatter3(Wx,Wy,Wz,20,c,'*');
xlabel('X'),ylabel('Y'),zlabel('Z');
title(nombreCaso);
end
%Esta funcion despliega la duracion de cada caso
function muestreTiempos(T,Wx,Wy,Wz,nombreCaso)
disp(nombreCaso);
disp("Wx T0 " + num2str(Wx(1)));
disp("Wy T0 " + num2str(Wy(1)));
disp("Wz T0 " + num2str(Wz(1)));
disp("Wx T2 " + num2str(Wx(201)));
disp("Wy T2 " + num2str(Wy(201)));
disp("Wz T2 " + num2str(Wz(201)));
disp("Wx T5 " + num2str(Wx(501)));
disp("Wy T5 " + num2str(Wy(501)));
disp("Wz T5 " + num2str(Wz(501)));
disp("Wx T7 " + num2str(Wx(701)));
disp("Wy T7 " + num2str(Wy(701)));
disp("Wz T7 " + num2str(Wz(701)));
disp("Wx T10 " + num2str(Wx(1001)));
disp("Wy T10 " + num2str(Wy(1001)));
disp("Wz T10 " + num2str(Wz(1001)));
end
%Esta funcion grafica el resultado y cada corte
function grafiqueCortes(Wx, Wy, Wz, titulo, numeroFigura)
figure(numeroFigura);
hold on;
subplot(2,2,1);
surface([Wx;Wx],[Wy;Wy],[Wz;Wz], 'EdgeColor', 'interp');
title(titulo);
xlabel('X'),ylabel('Y'),zlabel('Z');
hold on;
subplot(2,2,2);
surface([Wx;Wx],[Wy;Wy],[Wz;Wz], 'EdgeColor', 'interp');
title('Plano X-Y');
view(0,90); % XY
hold on;
subplot(2,2,3);
surface([Wx;Wx],[Wy;Wy],[Wz;Wz], 'EdgeColor', 'interp');
title('Plano X-Z');
view(0,0); % XZ
hold on;
subplot(2,2,4);
surface([Wx;Wx],[Wy;Wy],[Wz;Wz], 'EdgeColor', 'interp');
title('Plano Y-Z');
view(90,0); % YZ
end