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 :
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 :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
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 !
-----