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
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