You are on page 1of 8

Algoritmo en MATLAB para visualizar El Sistema Solar en miniatura

Ingeniero Electrnico: Monteza Zevallos Fidel Tomas








Las siguientes lneas corresponden al desarrollo de las lneas de programacin 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 lneas de programacin en MATLAB de diversas aplicaciones como Sistema
Gravitacional, Interaccin de partculas, Cinemtica Directa y Cinemtica Inversa para robtica, Comunicacin RS232 con
microcontroladores, etc.
En siguientes publicaciones estar comentando acerca de la comunicacin RS232 en Visual Basic 6.0 con un
microcontrolador para controlar un sistema de conteo en display siete segmentos de cuatro dgitos pero desarrollado en
hardware, estar atentos.

Se aprecia la ventana de MATLAB abierta y dentro de ella todas lneas del algoritmo respectivo, todas estas
lneas se encuentran ms abajo, solo deber copiarlas y ejecutarlas en MATLAB, asi de fcil. Ademas cada lnea
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=[]; %Vector posicion inicial de Mercurio
xv=[]; %Vector posicion inicial de Venus
xt=[]; %Vector posicion inicial de la Tierra
xm=[]; %Vector posicion inicial de Marte
xj=[]; %Vector posicion inicial de Jupiter
xs=[]; %Vector posicion inicial de Saturno
xu=[]; %Vector posicion inicial de Urano
xn=[]; %Vector posicion inicial de Neptuno

vmer=[]; %Vector velocidad inicial de Mercurio
vv=[]; %Vector velocidad inicial de Venus
vt=[]; %Vector velocidad inicial de la Tierra
vm=[]; %Vector velocidad inicial de Marte
vj=[]; %Vector velocidad inicial de Jupiter
vs=[]; %Vector velocidad inicial de Saturno
vu=[]; %Vector velocidad inicial de Urano
vn=[]; %Vector velocidad inicial de Neptuno

F1=[]; %Vector fuerza entre Mercurio y el Sol
F2=[]; %Vector fuerza entre Venus y el Sol
F3=[]; %Vector fuerza entre la Tierra y el Sol
F4=[]; %Vector fuerza entre la Marte y el Sol
F5=[]; %Vector fuerza entre Jupiter y el Sol
F6=[]; %Vector fuerza entre Saturno y el Sol
F7=[]; %Vector fuerza entre Urano y el Sol
F8=[]; %Vector fuerza entre Neptuno y el Sol

est1=[]; %Vector grafica de la orbita de Mercurio
est2=[]; %Vector grafica de la orbita de Venus
est3=[]; %Vector grafica de la orbita de la Tierra
est4=[]; %Vector grafica de la orbita de Marte
est5=[]; %Vector grafica de la orbita de Jupiter
est6=[]; %Vector grafica de la orbita de Saturno
est7=[]; %Vector grafica de la orbita de Urano
est8=[]; %Vector grafica de la orbita de Neptuno

%Parametros
M=1e20; %Masa M del Sol
mmer=0.4; %Masa mmer de Mercurio
mv=0.9; %Masa mv de Venus
mt=1; %Masa mt de la Tierra
mm=0.8; %Masa mm de Marte
mj=10; %Masa mj de Jupiter
ms=7; %Masa ms de Saturno
mu=7; %Masa mu de Urano
mn=7; %Masa mn de Neptuno
G=6.67e-11; %Constante gravitacional
h=0.01; %Paso de integracion


%Condiciones iniciales
xmer=[-1e3;0]; %Posicion inicial de Mercurio
xv=[-1e3;200]; %Posicion inicial de Venus
xt=[-1e3;400]; %Posicion inicial de la Tierra
xm=[-1e3;600]; %Posicion inicial de Marte
xj=[-1e3;1000]; %Posicion inicial de Jupiter
xs=[-1e3;1200]; %Posicion inicial de Saturno
xu=[-1e3;1400]; %Posicion inicial de Urano
xn=[-1e3;1500]; %Posicion inicial de Neptuno

vmer=[0;-2e3]; %Velocidad inicial de Mercurio
vv=[0;-2e3]; %Velocidad inicial de Venus
vt=[0;-2e3]; %Velocidad inicial de la Tierra
vm=[0;-2e3]; %Velocidad inicial de Marte
vj=[0;-2e3]; %Velocidad inicial de Jupiter
vs=[0;-2e3]; %Velocidad inicial de Saturno
vu=[0;-2e3]; %Velocidad inicial de Urano
vn=[0;-2e3]; %Velocidad inicial de Neptuno

%Variable externa
F1=-G*(mmer*M/norm(xmer)^2)*(xmer/norm(xmer)); %Resultado Fuerza Gravitacional Mercurio - Sol
F2=-G*(mv*M/norm(xv)^2)*(xv/norm(xv)); %Resultado Fuerza Gravitacional Venus - Sol
F3=-G*(mt*M/norm(xt)^2)*(xt/norm(xt)); %Resultado Fuerza Gravitacional Tierra - Sol
F4=-G*(mm*M/norm(xm)^2)*(xm/norm(xm)); %Resultado Fuerza Gravitacional Marte - Sol
F5=-G*(mj*M/norm(xj)^2)*(xj/norm(xj)); %Resultado Fuerza Gravitacional Jupiter - Sol
F6=-G*(ms*M/norm(xs)^2)*(xs/norm(xs)); %Resultado Fuerza Gravitacional Saturno - Sol
F7=-G*(mu*M/norm(xu)^2)*(xu/norm(xu)); %Resultado Fuerza Gravitacional Urano - Sol
F8=-G*(mn*M/norm(xn)^2)*(xn/norm(xn)); %Resultado Fuerza Gravitacional Neptuno - Sol

for step=1:1000

hold off
scatter(xmer(1)/6.9,xmer(2)/6.9,40,'black','filled'); %Dibujo posicion de Mercurio
hold on
scatter(xv(1)/6.5,xv(2)/6.5,80,'magenta','filled'); %Dibujo posicion de Venus
hold on
scatter(xt(1)/6.2,xt(2)/6.2,100,'blue','filled'); %Dibujo posicion de la Tierra
hold on
scatter(xm(1)/5,xm(2)/5,70,'red','filled'); %Dibujo posicion de Marte
hold on
scatter(xj(1)/3.8,xj(2)/3.8,250,'green','filled'); %Dibujo posicion de Jupiter
hold on
scatter(xs(1)/3.5,xs(2)/3.5,160,'cyan','filled'); %Dibujo posicion de Saturno
hold on
scatter(xu(1)/3.3,xu(2)/3.3,110,'blue','filled'); %Dibujo posicion de Urano
hold on
scatter(xn(1)/3.1,xn(2)/3.1,115,'cyan','filled'); %Dibujo posicion de Neptuno
hold on
title(['step : ' num2str(step)]);
scatter(0,0,900,'yellow','filled'); %Dibujo posicion del Sol
%legend('PROGRAMA PARA VISUALIZAR EL SISTEMA SOLAR')
axis([-350 420 -1000 1600]);
grid

%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
plot((est7(1,:))/3.3,(est7(2,:))/3.3,'blue'); %La linea plot esta dividida entre 3.3 para alcanzar la escala
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]; %Grafico de la estela de Mercurio en un plano
est2=[xav est2]; %Grafico de la estela de Venus en un plano
est3=[xat est3]; %Grafico de la estela de la Tierra en un plano
est4=[xam est4]; %Grafico de la estela de Marte en un plano
est5=[xaj est5]; %Grafico de la estela de Jupiter en un plano
est6=[xas est6]; %Grafico de la estela de Saturno en un plano
est7=[xau est7]; %Grafico de la estela de Urano en un plano
est8=[xan est8]; %Grafico de la estela de Neptuno en un plano

%Paso de integracin
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 = vamer + (h/2)*(F1/mmer);
vpmv = vav + (h/2)*(F2/mv);
vpmt = vat + (h/2)*(F3/mt);
vpmm = vam + (h/2)*(F4/mm);
vpmj = vaj + (h/2)*(F5/mj);
vpms = vas + (h/2)*(F6/ms);
vpmu = vau + (h/2)*(F7/mu);
vpmn = van + (h/2)*(F8/mn);

xpmmer = xamer + (h/2)*vamer;
xpmv = xav + (h/2)*vav;
xpmt = xat + (h/2)*vat;
xpmm = xam + (h/2)*vam;
xpmj = xaj + (h/2)*vaj;
xpms = xas + (h/2)*vas;
xpmu = xau + (h/2)*vau;
xpmn = 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 = vamer + h*(F1/mmer);
vv = vav + h*(F2/mv);
vt = vat + h*(F3/mt);
vm = vam + h*(F4/mm);
vj = vaj + h*(F5/mj);
vs = vas + h*(F6/ms);
vu = vau + h*(F7/mu);
vn = van + h*(F8/mn);

xmer = xamer + h*vpmmer;
xv = xav + h*vpmv;
xt = xat + h*vpmt;
xm = xam + h*vpmm;
xj = xaj + h*vpmj;
xs = xas + h*vpms;
xu = xau + h*vpmu;
xn = xan + h*vpmn;

end


Espero que esta aplicacin sea de mucha utilidad y de seguro debera tener mejoras, las que posteriormente estare publicando. Gracias

Ingeniero Electronico Monteza Zevallos idel !omas
".#.M.#.

You might also like