TAREA 2 RevDagav20150222

5
 SIMULACIÓN ORBIT 1. A continuación el código del programa e tra!do del li"ro de T. Sauer. %Program 6.4 Plotting program for one-body problem % Inputs: int=[a b] time interval, initial onditions % i = [!" v!" y" vy"], ! position, ! veloity, y pos, y vel, % # = stepsi$e, p = steps per point plotted % alls a one-step met#od su# as trapstep.m % &!ample usage: orbit'[" (""],[" ( ) "],"."(,*+ funtion $=orbit'int,i,#,p+ n=round''int')+-int'(++'p#++ % plot n points !"=i'(+v!"=i')+y"=i'/+vy"=i'4+ % grab initial onds y'(,:+=[!" v!" y" vy"]t'(+=int'(+ % build y vetor set'ga,012im0,[-* *],032im0,[-* *],01i50,[-* " *],03i50,... [-* " *],0ra7mode0,0fast0,08isible0,0on0,09e!tPlot0,0add0+ la sun=line'0olor0,0y0,0ar5er0,0.0,0mar5ersi$e0,)*,...  0!data0,",0ydata0,"+ dra7no7 #ead=line'0olor0,0r0,0ar5er0,0.0,0mar5ersi$e0,)*,...  0erase0,0!or0,0!data0,[],0ydata0,[]+ tail=line'0olor0,0b0,02ine;tyle0,0-0,0erase0,0none0,...  0!data0,[],0ydata0,[]+ %[p!,py,button]=ginput'(+ % inlude t#ese t#ree lines %[p!(,py(,button]=ginput'(+ % to enable mouse support %y'(,:+=[p! p!(-p! py py(-py] % ) li5s set diretion for 5=(:n  for i=(:p t'i<(+=t'i+<# y'i<(,:+=eulerstep't'i+,y'i,:+,#+  end y'(,:+=y'p<(,:+t'(+=t'p<(+ set'#ead,0!data0,y'(,(+,0ydata0,y'(,/++ set'tail,0!data0,y'):p,(+,0ydata0,y'):p,/++ dra7no7 end  funtion y=eulerstep't,!,#+ %one step of t#e &uler met#od y=!<#ydot't,!+  funtion $ = ydot't,!+ m)=/g=(mg)=m)gp!)="py)=" p!(=!'(+py(=!'/+v!(=!')+vy(=!'4+ dist=srt''p!)-p!(+>)<'py)-py(+>)+ $=$eros'(,4+ $'(+=v!( $')+='mg)'p!)-p!(++'dist>/+ $'/+=vy( $'4+='mg)'py)-py(++'dist>/+ A continuación el li#tado de comando# u#ado#$

description

Differential Equations

Transcript of TAREA 2 RevDagav20150222

SIMULACIN ORBIT1. A continuacin el cdigo del programa extrado del libro de T. Sauer.

%Program 6.4 Plotting program for one-body problem% Inputs: int=[a b] time interval, initial conditions% ic = [x0 vx0 y0 vy0], x position, x velocity, y pos, y vel,% h = stepsize, p = steps per point plotted% Calls a one-step method such as trapstep.m% Example usage: orbit([0 100],[0 1 2 0],0.01,5)function z=orbit(int,ic,h,p)n=round((int(2)-int(1))/(p*h)); % plot n pointsx0=ic(1);vx0=ic(2);y0=ic(3);vy0=ic(4); % grab initial condsy(1,:)=[x0 vx0 y0 vy0];t(1)=int(1); % build y vectorset(gca,'XLim',[-5 5],'YLim',[-5 5],'XTick',[-5 0 5],'YTick',...[-5 0 5],'Drawmode','fast','Visible','on','NextPlot','add');cla;sun=line('color','y','Marker','.','markersize',25,... 'xdata',0,'ydata',0);drawnow;head=line('color','r','Marker','.','markersize',25,... 'erase','xor','xdata',[],'ydata',[]);tail=line('color','b','LineStyle','-','erase','none',... 'xdata',[],'ydata',[]);%[px,py,button]=ginput(1); % include these three lines%[px1,py1,button]=ginput(1); % to enable mouse support%y(1,:)=[px px1-px py py1-py]; % 2 clicks set directionfor k=1:n for i=1:pt(i+1)=t(i)+h;y(i+1,:)=eulerstep(t(i),y(i,:),h); endy(1,:)=y(p+1,:);t(1)=t(p+1);set(head,'xdata',y(1,1),'ydata',y(1,3))set(tail,'xdata',y(2:p,1),'ydata',y(2:p,3))drawnow;end function y=eulerstep(t,x,h)%one step of the Euler methody=x+h*ydot(t,x); function z = ydot(t,x)m2=3;g=1;mg2=m2*g;px2=0;py2=0;px1=x(1);py1=x(3);vx1=x(2);vy1=x(4);dist=sqrt((px2-px1)^2+(py2-py1)^2);z=zeros(1,4);z(1)=vx1;z(2)=(mg2*(px2-px1))/(dist^3);z(3)=vy1;z(4)=(mg2*(py2-py1))/(dist^3);

A continuacin el listado de comandos usados:a. Primero el archivo orbit.m cuenta con tres bloques de instrucciones que se llaman recurrentemente 2 de ellos. El bloque central de programacin es la funcin orbit.m. Esta funcin est documentada en las primeras lneas del bloque. Los comandos de matlab que usa este bloque son: Round: redondear al entero ms cercanoSet: ajusta propiedades de un objeto en este caso la interfaz grfica. En particular: Set(gca,'Xtick',xticks,'Ytick',yticks) : para controlar el nmero y el espaciado de marcas en los ejes Line: que adiciona lneas en la ventana (window)Drawnow: que dibuja los elementos que estn en la cola grfica ilustrndolos en la ventanaGinput: que permite la entrada de interfaz grfica del mouse (pero que se encuentran comentados)For: ciclos de programacin, en este caso anidados, uno dentro del otrob. La segunda funcin (que es llamada por orbit.m) Eulerstep: la cual realiza cada iteracin del mtodo de euler llamando a la funcin ydotc. Por ltimo la funcin ydot, que este caso es el conjunto de restricciones y variables que realiza la evaluacin de la posicin (x,y), velocidad (x,y), distancia y aceleracin (x,y), cumpliendo con el modelo fsico definido. La cual usa el comando zeros, el cual inicializa el vector con elementos de valor cero. Adicionalmente para el manejo de la interfaz grfica la funcin orbit utiliza: XLim y YLim: Establece los lmites en el eje horizontal X y en el vertical Y. Por ejemplo,xlim([0 12]) indica el valor mnimo y mximo de la abscisa que se va a representar en la ventana grficaMarkersize, especifica el tamao del smbolo que marca los puntos2. Usando : orbit ([0 100], [0 1 2 0], 100/10000, 5)Nota: se ajusta la instruccin a 100/10000 diferente al propuesto paso de 100

Se ejecuta el programa, y empieza a describir una espiral hacia el sol (punto (0,0)), all se acerca, aumenta su velocidad y luego se aleja hacia los cuadrantes superiores del plano, con menor velocidad. Esto es un artificio numrico y se debe a la precisin en el mtodo de Euler, exactamente en el tamao del paso, el cual afecta la cercana a la solucin (error) y no permite completar un ciclo (elipse) en la misma trayectoria. Usando : orbit ([0 100], [0 1 2 0], 100/100000, 5)

Se observa una mejora al hacer los pasos ms cortos, la distancia entre las elipses es menor pero an se nota que no llegan a completar o cerrar una elipse. Es decir an hay error pero no es tan notorio como en el anterior. Opinin del mtodo EULER.Como opinin del mtodo de Euler se puede afirmar que la precisin de la solucin depende del tamao del paso, el cual en teora se puede hacer ms pequeo, hasta obtener la exactitud deseada. Sin embargo consumiendo mucho recurso computacional y dependiendo de la definicin del problema. Como lo muestran las diferentes grficas que se han obtenido haciendo variaciones en el paso. Es de aclarar que siempre habr un margen de error notable con este mtodo. El cual segn lo investigado no se usa en problemas sensibles de ingeniera sino que se utiliza mtodos de euler mejorajdos como los de Heuhn, trapecio o en el caso de Matlab, dependiendo del caso ode23, ode311, ode45 o bound

Usando : orbit ([0 100], [0 1 2 0], 10/50000, 5)

En este otro ejemplo se ha hecho an ms corto el paso y se observa una mayor exactitud.Usando : orbit ([0 100], [0 1 2 0], 10/70000, 5)

La mejora es mucho ms notable y se podra llegar obtener una rbita que pretendieria ser geostacionaria.

FALTA EL LTIMO PUNTO: Busque un ejemplo con cdigo que le parezca interesante de una aplicacin del mtodo de Euler a Ingeniera, y argumente porque es relevante para usted. Presente la simulacin correspondiente al ejemplo encontrado.