Algoritmo en MATLAB para visualizar El Sistema Solar en miniatura
Ingeniero Electrónico: Electrónico: Monteza Zevallos Zevallos Fidel Tomas 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, mo vimiento, espero 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 for step=1:1000 hold off scatter(xmer(1)/6.9,xmer(2)/6.9,40, 'black' 'black', ,'filled' 'filled'); ); hold on scatter(xv(1)/6.5,xv(2)/6.5,80, 'magenta' 'magenta', ,'filled' 'filled'); );
%Dibujo posicion de Mercurio %Dibujo posicion de Venus
hold on scatter(xt(1)/6.2,xt(2)/6.2,100, 'blue' 'blue', ,'filled' 'filled'); ); hold on scatter(xm(1)/5,xm(2)/5,70, 'red' 'red', ,'filled' 'filled'); ); hold on scatter(xj(1)/3.8,xj(2)/3.8,250, 'green' 'green', ,'filled' 'filled'); ); hold on scatter(xs(1)/3.5,xs(2)/3.5,160, 'cyan' 'cyan', ,'filled' 'filled'); ); hold on scatter(xu(1)/3.3,xu(2)/3.3,110, 'blue' 'blue', ,'filled' 'filled'); ); hold on scatter(xn(1)/3.1,xn(2)/3.1,115, 'cyan' 'cyan', ,'filled' 'filled'); ); hold on title(['step title(['step : ' ' num2str(step)]); scatter(0,0,900, 'yellow' 'yellow', ,'filled' '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 if (size(est3,2)>0) plot((est1(1,:))/6.9,(est1(2,:))/6.9, 'black' 'black'); ); %La linea plot esta dividida entre 6.9 para alcanzar la escala plot((est2(1,:))/6.5,(est2(2,:))/6.5, 'magenta' 'magenta'); ); %La linea plot esta dividida entre 6.5 para alcanzar la escala plot((est3(1,:))/6.2,(est3(2,:))/6.2, 'blue' 'blue'); ); %La linea plot esta dividida entre 6.2 para alcanzar la escala plot((est4(1,:))/5,(est4(2,:))/5, 'red' 'red'); ); %La linea plot esta dividida entre 5 para alcanzar la escala plot((est5(1,:))/3.8,(est5(2,:))/3.8, 'green' 'green'); ); %La linea plot esta dividida entre 3.8 para alcanzar la escala plot((est6(1,:))/3.5,(est6(2,:))/3.5, 'cyan' 'cyan'); ); %La linea plot esta dividida entre 3.5 para alcanzar la escala plot((est7(1,:))/3.3,(est7(2,:))/3.3, 'blue' 'blue'); ); %La linea plot esta dividida entre 3.3 para alcanzar la escala plot((est8(1,:))/3.1,(est8(2,:))/3.1, 'cyan' '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 posteriormente estare publicando. Gracias Ingeniero Electronico Monteza Zevallos idel !omas ".#.M.#.