114 successful steps 7 failed attempts 727 function evaluations

Transcripción

114 successful steps 7 failed attempts 727 function evaluations
%---------------------------------------% Curso 2012-2013
% Problema 2 de la Lección 6
%---------------------------------------%------------% Apartado (1)
%------------function dy=eqMovSR(t,y)
b=[0 0 0]'; % Valores de b1, b2 y b3 (campo externo de momentos)
I=[0.5 2 3]'; % Valores de I1, I2 e I3 (momentos principales de
inercia)
dy=zeros(3,1); % Vector columna (componentes de la velocidad angular)
dy(1)=(I(2)-I(3))/I(1)*y(2)*y(3)+b(1)/I(1);
dy(2)=(I(3)-I(1))/I(2)*y(1)*y(3)+b(2)/I(2);
dy(3)=(I(1)-I(2))/I(3)*y(1)*y(2)+b(3)/I(3);
end
%------------% Apartado (2)
%------------format short g
tiempos=0:0.1:20;
condInic=[1 0 0.9];
opciones=odeset('RelTol',1e-6,'Stats','on');
[T,Y]=ode45(@eqMovSR,tiempos,condInic,opciones);
% Dibujo de las componentes de Y frente al tiempo
figure(1);shg;
plot(T,Y(:,1),'b',T,Y(:,2),'r',T,Y(:,3),'k');
xlabel('t');ylabel('Y_i(t), i=1,2,3');
title('RelTol=10^{-6}');
%------------% Apartado (3)
%------------format short g
tiempos=0:0.1:20;
condInic=[1 0 0.9];
opciones=odeset('RelTol',1e-12,'Stats','on');
[T,Y]=ode45(@eqMovSR,tiempos,condInic,opciones);
% Dibujo de las componentes de Y frente al tiempo
figure(2);%shg;
plot(T,Y(:,1),'b',T,Y(:,2),'r',T,Y(:,3),'k');
xlabel('t');ylabel('Y_i(t), i=1,2,3');
title('RelTol=10^{-12}');
>>>>>>>>>>>>>>>>>SOLUCION>>>>>>>>>>>>><
114 successful steps
7 failed attempts
727 function evaluations
%------------% Apartado (4)
%------------y0=[1 0 0.9]';
%calculamos la solución del apartado anterior (RelTol=10^{-12})
consideraremos exacta
tiempos=[0:0.1:20]';
misopciones=odeset('AbsTol',1e-12','RelTol',1e-12);
[T,Y]=ode45(@eqMovSR,tiempos,y0,misopciones);%solucion exacta
[m,n]=size(Y);
for k=1:5
TOL(k)=10^(-2*k);
misopciones=odeset('AbsTol',TOL(k),'RelTol',TOL(k));
tic;
[T,Y45]=ode45(@eqMovSR,tiempos,y0,misopciones);
t45(k)=toc;
for j=1:m
error45(j)=norm(Y45(j,:)-Y(j,:)) ;
end
error45max(k)=max(error45);%maximo de la diferencia
tic;
[T,Y113]=ode113(@eqMovSR,tiempos,y0,misopciones);
t113(k)=toc;
for j=1:m
error113(j)=norm(Y113(j,:)-Y(j,:));
end
error113max(k)=max(error113);
end
tabla=[TOL',error45max',error113max',t45',t113']
figure(4);shg;
loglog(t45,error45max,'bo-',t113,error113max,'rp--');
xlabel('Tiempo CPU');ylabel('Error');
legend('ode45','ode113');
que

Documentos relacionados

Lab 7 - Universidad de Concepción

Lab 7 - Universidad de Concepción 2.2. Ajustes a las rutinas con odeset Las funciones para la solución de EDO's de MATLAB se pueden ajustar para que operen según distintas instrucciones. Todas estas instrucciones se encuentran en u...

Más detalles