Вы находитесь на странице: 1из 5

SIMULACIN ORBIT

1. 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 points
x0=ic(1);vx0=ic(2);y0=ic(3);vy0=ic(4); % grab initial conds
y(1,:)=[x0 vx0 y0 vy0];t(1)=int(1); % build y vector
set(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 direction
for k=1:n
for i=1:p
t(i+1)=t(i)+h;
y(i+1,:)=eulerstep(t(i),y(i,:),h);
end
y(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 method
y=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 cercano
Set: 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 ventana
Ginput: 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 otro
b. La segunda funcin (que es llamada por orbit.m) Eulerstep: la
cual realiza cada iteracin del mtodo de euler llamando a la
funcin ydot
c. 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 grfica
Markersize, especifica el tamao del smbolo que marca los puntos
2. 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.

Вам также может понравиться