Algoritmo Matlab Del Sistema Solar en Miniatura

Algoritmo en MATLAB para visualizar El Sistema Solar en miniatura Ingeniero Electrónico: Monteza Zevallos Fidel Tomas

Views 87 Downloads 0 File size 262KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Algoritmo en MATLAB para visualizar El Sistema Solar en miniatura

Ingeniero Electrónico: Monteza Zevallos Fidel Tomas

Las siguientes líneas corresponden al desarrollo de las líneas de programación con MATLAB para poder visualizar el Sistema Solar en miniatura y en pleno movimiento. El tiempo que se pueda dedicar a implementar este programa es muy importante y espero que sirva para ayudar a otros investigadores. Posteriormente estaré publicando líneas de programación en MATLAB de diversas aplicaciones como Sistema Gravitacional, Interacción de partículas, Cinemática Directa y Cinemática Inversa para robótica, Comunicación RS232 con microcontroladores, etc. En siguientes publicaciones estaré comentando acerca de la comunicación RS232 en Visual Basic 6.0 con un microcontrolador para controlar un sistema de conteo en display siete segmentos de cuatro dígitos pero desarrollado en hardware, estar atentos.

Se aprecia la ventana de MATLAB abierta y dentro de ella todas líneas del algoritmo respectivo, todas estas líneas se encuentran más abajo, solo deberá copiarlas y ejecutarlas en MATLAB, asi de fácil. Ademas cada línea importante esta comentada.

Este deberá ser el grafico que deberá visualizar en pleno movimiento, espero sea de mucha utilidad.

LINEAS DEL ALGORITMO DESARROLLADO EN MATLAB %Programa que permite visualizar el Sistema Solar en miniatura. Se podra visualizar a nuetras estrella madre %El Sol y girando en torno a ella los ocho planetas reconocidos actualmente, las lineas se encuentran comentadas clear clc figure(1) %Variables xmer=[]; xv=[]; xt=[]; xm=[]; xj=[]; xs=[]; xu=[]; xn=[];

%Vector %Vector %Vector %Vector %Vector %Vector %Vector %Vector

posicion posicion posicion posicion posicion posicion posicion posicion

vmer=[]; vv=[]; vt=[]; vm=[]; vj=[]; vs=[]; vu=[]; vn=[];

%Vector %Vector %Vector %Vector %Vector %Vector %Vector %Vector

velocidad velocidad velocidad velocidad velocidad velocidad velocidad velocidad

F1=[]; F2=[]; F3=[]; F4=[]; F5=[]; F6=[]; F7=[]; F8=[];

%Vector %Vector %Vector %Vector %Vector %Vector %Vector %Vector

fuerza fuerza fuerza fuerza fuerza fuerza fuerza fuerza

est1=[]; est2=[]; est3=[]; est4=[]; est5=[]; est6=[]; est7=[]; est8=[];

%Vector %Vector %Vector %Vector %Vector %Vector %Vector %Vector

grafica grafica grafica grafica grafica grafica grafica grafica

%Parametros

inicial inicial inicial inicial inicial inicial inicial inicial

de de de de de de de de

inicial inicial inicial inicial inicial inicial inicial inicial

entre entre entre entre entre entre entre entre de de de de de de de de

Mercurio Venus la Tierra Marte Jupiter Saturno Urano Neptuno

de de de de de de de de

Mercurio Venus la Tierra Marte Jupiter Saturno Urano Neptuno

Mercurio y el Sol Venus y el Sol la Tierra y el Sol la Marte y el Sol Jupiter y el Sol Saturno y el Sol Urano y el Sol Neptuno y el Sol

la la la la la la la la

orbita orbita orbita orbita orbita orbita orbita orbita

de de de de de de de de

Mercurio Venus la Tierra Marte Jupiter Saturno Urano Neptuno

M=1e20; mmer=0.4; mv=0.9; mt=1; mm=0.8; mj=10; ms=7; mu=7; mn=7; G=6.67e-11; h=0.01;

%Masa M del Sol %Masa mmer de Mercurio %Masa mv de Venus %Masa mt de la Tierra %Masa mm de Marte %Masa mj de Jupiter %Masa ms de Saturno %Masa mu de Urano %Masa mn de Neptuno %Constante gravitacional %Paso de integracion

%Condiciones iniciales xmer=[-1e3;0]; xv=[-1e3;200]; xt=[-1e3;400]; xm=[-1e3;600]; xj=[-1e3;1000]; xs=[-1e3;1200]; xu=[-1e3;1400]; xn=[-1e3;1500];

%Posicion %Posicion %Posicion %Posicion %Posicion %Posicion %Posicion %Posicion

vmer=[0;-2e3]; vv=[0;-2e3]; vt=[0;-2e3]; vm=[0;-2e3]; vj=[0;-2e3]; vs=[0;-2e3]; vu=[0;-2e3]; vn=[0;-2e3];

%Velocidad %Velocidad %Velocidad %Velocidad %Velocidad %Velocidad %Velocidad %Velocidad

inicial inicial inicial inicial inicial inicial inicial inicial

de de de de de de de de

inicial inicial inicial inicial inicial inicial inicial inicial

Mercurio Venus la Tierra Marte Jupiter Saturno Urano Neptuno

de de de de de de de de

%Variable externa F1=-G*(mmer*M/norm(xmer)^2)*(xmer/norm(xmer)); F2=-G*(mv*M/norm(xv)^2)*(xv/norm(xv)); F3=-G*(mt*M/norm(xt)^2)*(xt/norm(xt)); F4=-G*(mm*M/norm(xm)^2)*(xm/norm(xm)); F5=-G*(mj*M/norm(xj)^2)*(xj/norm(xj)); F6=-G*(ms*M/norm(xs)^2)*(xs/norm(xs)); F7=-G*(mu*M/norm(xu)^2)*(xu/norm(xu)); F8=-G*(mn*M/norm(xn)^2)*(xn/norm(xn));

Mercurio Venus la Tierra Marte Jupiter Saturno Urano Neptuno

%Resultado %Resultado %Resultado %Resultado %Resultado %Resultado %Resultado %Resultado

Fuerza Fuerza Fuerza Fuerza Fuerza Fuerza Fuerza Fuerza

Gravitacional Gravitacional Gravitacional Gravitacional Gravitacional Gravitacional Gravitacional Gravitacional

Mercurio - Sol Venus - Sol Tierra - Sol Marte - Sol Jupiter - Sol Saturno - Sol Urano - Sol Neptuno - Sol

for step=1:1000 hold off scatter(xmer(1)/6.9,xmer(2)/6.9,40,'black','filled'); hold on scatter(xv(1)/6.5,xv(2)/6.5,80,'magenta','filled');

%Dibujo posicion de Mercurio %Dibujo posicion de Venus

hold on scatter(xt(1)/6.2,xt(2)/6.2,100,'blue','filled'); hold on scatter(xm(1)/5,xm(2)/5,70,'red','filled'); hold on scatter(xj(1)/3.8,xj(2)/3.8,250,'green','filled'); hold on scatter(xs(1)/3.5,xs(2)/3.5,160,'cyan','filled'); hold on scatter(xu(1)/3.3,xu(2)/3.3,110,'blue','filled'); hold on scatter(xn(1)/3.1,xn(2)/3.1,115,'cyan','filled'); hold on title(['step : ' num2str(step)]); scatter(0,0,900,'yellow','filled'); %legend('PROGRAMA PARA VISUALIZAR EL SISTEMA SOLAR') axis([-350 420 -1000 1600]); grid

%Dibujo posicion de la Tierra %Dibujo posicion de Marte %Dibujo posicion de Jupiter %Dibujo posicion de Saturno %Dibujo posicion de Urano %Dibujo posicion de Neptuno

%Dibujo posicion del Sol

%Lineas de programacion para graficar las orbitas de los diferentes planetas del Sistema Solar if (size(est3,2)>0) plot((est1(1,:))/6.9,(est1(2,:))/6.9,'black'); %La linea plot esta dividida entre 6.9 para alcanzar la escala plot((est2(1,:))/6.5,(est2(2,:))/6.5,'magenta'); %La linea plot esta dividida entre 6.5 para alcanzar la escala plot((est3(1,:))/6.2,(est3(2,:))/6.2,'blue'); %La linea plot esta dividida entre 6.2 para alcanzar la escala plot((est4(1,:))/5,(est4(2,:))/5,'red'); %La linea plot esta dividida entre 5 para alcanzar la escala plot((est5(1,:))/3.8,(est5(2,:))/3.8,'green'); %La linea plot esta dividida entre 3.8 para alcanzar la escala plot((est6(1,:))/3.5,(est6(2,:))/3.5,'cyan'); %La linea plot esta dividida entre 3.5 para alcanzar la escala %La linea plot esta dividida entre 3.3 para alcanzar la escala plot((est7(1,:))/3.3,(est7(2,:))/3.3,'blue'); plot((est8(1,:))/3.1,(est8(2,:))/3.1,'cyan'); %La linea plot esta dividida entre 3.1 para alcanzar la escala end %Si desea visualizar el espacio en color negro, activar la siguiente linea %set(gca,'Color','black'); pause(0.01); %Guardar el valor anterior xamer=xmer; xav=xv; xat=xt; xam=xm; xaj=xj; xas=xs; xau=xu; xan=xn; vamer=vmer; vav=vv;

vat=vt; vam=vm; vaj=vj; vas=vs; vau=vu; van=vn; est1=[xamer est1]; est2=[xav est2]; est3=[xat est3]; est4=[xam est4]; est5=[xaj est5]; est6=[xas est6]; est7=[xau est7]; est8=[xan est8];

%Grafico %Grafico %Grafico %Grafico %Grafico %Grafico %Grafico %Grafico

de de de de de de de de

la la la la la la la la

estela estela estela estela estela estela estela estela

de de de de de de de de

Mercurio en un plano Venus en un plano la Tierra en un plano Marte en un plano Jupiter en un plano Saturno en un plano Urano en un plano Neptuno en un plano

%Paso de integración F1=-G*(mmer*M/norm(xamer)^2)*(xamer/norm(xamer)); F2=-G*(mv*M/norm(xav)^2)*(xav/norm(xav)); F3=-G*(mt*M/norm(xat)^2)*(xat/norm(xat)); F4=-G*(mm*M/norm(xam)^2)*(xam/norm(xam)); F5=-G*(mj*M/norm(xaj)^2)*(xaj/norm(xaj)); F6=-G*(ms*M/norm(xas)^2)*(xas/norm(xas)); F7=-G*(mu*M/norm(xau)^2)*(xau/norm(xau)); F8=-G*(mn*M/norm(xan)^2)*(xan/norm(xan)); vpmmer vpmv = vpmt = vpmm = vpmj = vpms = vpmu = vpmn =

= vamer + (h/2)*(F1/mmer); vav + (h/2)*(F2/mv); vat + (h/2)*(F3/mt); vam + (h/2)*(F4/mm); vaj + (h/2)*(F5/mj); vas + (h/2)*(F6/ms); vau + (h/2)*(F7/mu); van + (h/2)*(F8/mn);

xpmmer xpmv = xpmt = xpmm = xpmj = xpms = xpmu = xpmn =

= xamer + (h/2)*vamer; xav + (h/2)*vav; xat + (h/2)*vat; xam + (h/2)*vam; xaj + (h/2)*vaj; xas + (h/2)*vas; xau + (h/2)*vau; xan + (h/2)*van;

F1=-G*(mmer*M/norm(xpmmer)^2)*(xpmmer/norm(xpmmer)); F2=-G*(mv*M/norm(xpmv)^2)*(xpmv/norm(xpmv)); F3=-G*(mt*M/norm(xpmt)^2)*(xpmt/norm(xpmt));

F4=-G*(mm*M/norm(xpmm)^2)*(xpmm/norm(xpmm)); F5=-G*(mj*M/norm(xpmj)^2)*(xpmj/norm(xpmj)); F6=-G*(ms*M/norm(xpms)^2)*(xpms/norm(xpms)); F7=-G*(mu*M/norm(xpmu)^2)*(xpmu/norm(xpmu)); F8=-G*(mn*M/norm(xpmn)^2)*(xpmn/norm(xpmn)); vmer vv = vt = vm = vj = vs = vu = vn =

= vamer + h*(F1/mmer); vav + h*(F2/mv); vat + h*(F3/mt); vam + h*(F4/mm); vaj + h*(F5/mj); vas + h*(F6/ms); vau + h*(F7/mu); van + h*(F8/mn);

xmer xv = xt = xm = xj = xs = xu = xn =

= xamer + h*vpmmer; xav + h*vpmv; xat + h*vpmt; xam + h*vpmm; xaj + h*vpmj; xas + h*vpms; xau + h*vpmu; xan + h*vpmn;

end

Espero que esta aplicación sea de mucha utilidad y de seguro debera tener mejoras, las que posteriormente estare publicando. Gracias Ingeniero Electronico Monteza Zevallos Fidel Tomas V.J.M.J.