[Scilab] Modélisation du système solaire
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

[Scilab] Modélisation du système solaire



  1. #1
    JuiceJoint

    [Scilab] Modélisation du système solaire


    ------

    Bonjour à tous,

    Je ne sais pas si je poste dans la bonne section mais j'ai un projet en méthode numérique à rendre à propos de la modélisation du système solaire avec des méthdes numériques (Stormer-Verlet pour être précis), néanmoins, ma question porte essentiellement sur scilab, en effet, voici la partie du code de mon programme qui me pose problème :

    Code:
        G=2.95912208286*(10^(-4))
        m=[1.00000597682,0.000954786104043,0.000285583733151,0.0000437273164546,0.0000517759138449,1/(1.3*(10^8))]
         
        //positions initiales
        pp1=[0,0,0]
        pp2=[2.2911898857058, 4.4742096428394, -0.0698526085811]
        pp3=[-8.4077274422046, -4.9386528867475, 0.4206194745212]
        pp4=[19.9506411858858, -2.1189594536568, -0.2505524004432]
        pp5=[26.3841113101207, -14.2637141476417, 0.3141826415529]
        pp6=[4.7240342661351, -31.8776619468451, 2.0454833905119]
         
        //vitesses initiales
        vp1=[0,0,0]
        vp2=[-0.0068140485228, 0.0038022184356, 0.0001366932116]
        vp3=[0.0025181864149, -0.0048203311629, -0.00001644111567]
        vp4=[-0.0004495229028, 0.0037304364206, 0.0000197241717]
        vp5=[0.0014665671695, 0.0027825194375, -0.0000910521187]
        vp6=[0.0031588952992, -0.0001620298531, -0.0008976519916]
     
    function solaire_anime(dt,N)
     
        PP=[pp1;pp2;pp3;pp4;pp5;pp6]
        VP=[vp1;vp2;vp3;vp4;vp5;vp6]
        PS=zeros(6,3)
        VS=zeros(6,3)
        VS=VP;
        E=zeros(1,N)
         
        y1=zeros(N+1,3)
        y2=zeros(N+1,3)
        y3=zeros(N+1,3)
        y4=zeros(N+1,3)
        y5=zeros(N+1,3)
        y6=zeros(N+1,3)
     
        y1(1,:)=PP(1,:)
        y2(1,:)=PP(2,:)
        y3(1,:)=PP(3,:)
        y4(1,:)=PP(4,:)
        y5(1,:)=PP(5,:)
        y6(1,:)=PP(6,:)
         
         
        for i=1:6
            param3d(PP(i,1),PP(i,2),PP(i,3));
            corps(i) = gce();
            corps(i).mark_mode="on";
            corps(i).mark_style = 0;
            corps(i).mark_size = 1;
            corps(i).mark_foreground = i;
        end
     
        axes = gca();
        axes.data_bounds = [-50,-50,-20;50,50,20];
     
        for i=1:N
            Pdemi=PP+dt*VP/2
            for j=1:6
                for k=1:6
                   if k~=j then
                     VS(j,:)=VS(j,:)-(dt*G*m(k)*(Pdemi(j,:)-Pdemi(k,:))/((norm(Pdemi(j,:)-Pdemi(k,:)))^3))
                   end
                 end
            end
            PS=Pdemi+dt*VS/2
            PP=PS
            VP=VS
            y1(i+1,:)=PS(1,:)
            y2(i+1,:)=PS(2,:)
            y3(i+1,:)=PS(3,:)
            y4(i+1,:)=PS(4,:)
            y5(i+1,:)=PS(5,:)
            y6(i+1,:)=PS(6,:)
             
     
             
            for j=1:6
                drawlater();
                corps(j).data = PP(j,:);
                //param3d(y2(:,1),y2(:,2),y2(:,3))
                //param3d(y3(:,1),y3(:,2),y3(:,3))
                //param3d(y4(:,1),y4(:,2),y4(:,3))
                //param3d(y5(:,1),y5(:,2),y5(:,3))
                //param3d(y6(:,1),y6(:,2),y6(:,3))
                drawnow();
            end
     
     
    end
     
    endfunction
    mon problème porte particulièrement sur la modélisation finale, et donc sur la dernière boucle, en effet, les planètes tournent bien à la fin, mais lorsque je souhaite tracer les trajectoires des planètes en même temps (ce que j'ai mis en commentaire dans mon code), une ligne noire relie les planètes au soleil, et cette ligne ne disparait pas au fur et à mesure, ce qui crée un gros pâté à la fin . Voici des images pour illustrer mon problème :

    Ce que je voudrais avoir :
    Capture.png

    Ce avec quoi je me retrouve :
    Capture2.png
    (je l'ai arrêté assez vite, entendez bien que si je le laissais tourner plus longtemps, il deviendrait encore plus illisible qu'il ne l'est maintenant)

    Voila, j'espère avoir correctement exposé mon problème, et espère que quelqu'un pourra venir me sauver, car je deviens fou...

    Merci à ceux qui m'auront lu jusque là, et merci d'avance aux personnes qui m'aideront (ou essayeront de m'aider ! )

    Bonne soirée (ou journée, c'est selon) à tous !

    -----

  2. #2
    Resartus

    Re : [Scilab] Modélisation du système solaire

    Je ne suis pas un expert de scilab, mais le problème me semble venir du fait que vous mettez à la suite les 6 param3d, de sorte que le tracé passe d'une planéte à une autre pour chaque temps avant de passer au temps suivant.

    Utiliser param3d1 me semblerait plus propre, pour tracer les 6 courbes avec une seule commande
    https://help.scilab.org/docs/5.5.2/en_US/param3d1.html

  3. #3
    JuiceJoint

    Re : [Scilab] Modélisation du système solaire

    Tout d'abord merci de vous interesser à mon problème.
    Alors voila, j'ai essayé de mettre ca dans ma boucle :
    Code:
        param3d1([y2(:,1),y3(:,1),y4(:,1),y5(:,1),y6(:,1)],[y2(:,2),y3(:,2),y4(:,2),y5(:,2),y6(:,2)],[y2(:,3),y3(:,3),y4(:,3),y5(:,3),y6(:,3)])
    et le résultat est le même...

  4. #4
    Resartus

    Re : [Scilab] Modélisation du système solaire

    OK. L'explication est la suivante : la fonction param3d (ou 3d1) trace tous les point de 1 à N+1, mais de la manière dont votre boucle est faite, les valeurs supérieures à i+1 sont encore nulles, d'où le retour au centre

    Pour faire ce que vous voulez (c'est à dire un tracé progressif) il faut que les valeurs des y au dessus de i+1 soient égales à la dernière valeur calculée, c'est à dire que il faut encadrer les instructions yi(k,....)=... par une boucle en k qui va de i+1 à N+1 pour toutes les mettre à la bonne valeur...

  5. A voir en vidéo sur Futura
  6. #5
    JuiceJoint

    Re : [Scilab] Modélisation du système solaire

    Vous avez raison en effet !!

    Merci infiniment !

    En vous souhaitant un bon week end

Discussions similaires

  1. Modélisation sur scilab
    Par Mil-CA dans le forum Électronique
    Réponses: 1
    Dernier message: 14/11/2014, 09h13
  2. modelisation sur xcos scilab
    Par squall59000 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 18/03/2013, 20h28
  3. Programme Scilab : Modélisation d'une autosuffisance alimentaire pour une denrée donnée
    Par theotours dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 19/06/2012, 15h31
  4. Resolution de système avc Scilab (ou matlab)
    Par invite5cb66036 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 30/03/2008, 13h36
  5. Modélisation du Système Solaire
    Par MIMATA dans le forum Archives
    Réponses: 8
    Dernier message: 20/01/2005, 16h07