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

Algoritmo Matlab Del Sistema Solar en Miniatura

Embed Size (px)

Citation preview

  • 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 Fidel Tomas

    V.J.M.J.