Bonjour,
Ce n'est pas moi qui ai écrit ce code mais je suis censée savoir l'expliquer à un professeur pour vendredi et je n'y comprends rien.

je mélange tout entre u(1) u1 u ,etc si quelqu'un pouvait me détailler un peu ce code ça m'aiderait beaucoup notamment m'expliquer précisément les 2 premières constantes


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function [u2]=force_g(t,u,masse)
        module=-G*masse*((u(1)^2+u(2)^2)^(-3/2))
        u2=[module*u(1); module*u(2)]
endfunction
 
 function [du]=force(t,u,masse0,masse1)
         u1=[u(1);u(2)]
        du1=[u(3);u(4)]
         u2=[u(5);u(6)]
        du2=[u(7);u(8)]
       ddu1=force_g(t,u1,masse0)
       ddu2=force_g(t,u2,masse0)+force_g(t,u2-u1,masse1)
         du=[du1;ddu1;du2;ddu2]
endfunction
 
 
//constantes 
G=0.04;//constante gravitationnelle en unités astronomique*
m0=1000;//masse soleil
m1=1;//masse Jupiter
dt=0.05;// intervalle entre les différentes dates
T=500;//durée de la simulation
dx=0.5;dy=0.5;// taille du dessin des planètes
//coordonnées de la planète au début 
x1=5;y1=0;vx1=0;vy1=2.5;
//coordonnées de la comète  au début 
x2=6;y2=6;vx2=-2;vy2=-0.5;
// valeur initiale de U 
u0=[x1; y1; vx1; vy1; x2; y2; vx2; vy2];
//dates de calcul de U
t=[0:dt:T];
//calcul de la solution 
u=ode(u0,0,t,list(force,m0,m1));
//récupération des coordonnées correspondant à la position (X,Y) des deux objets
X=[u(1,:)',u(5,:)'];Y=[u(2,:)',u(6,:)'];
 
//animation graphique
plot2d(X,Y,[5 2],rect=[-10,-10,10,10],frameflag=4)
rect=[min(X),min(Y),max(X),max(Y)]
N=length(t);
plot2d(0,0,-9,rect=rect,frameflag=3)
f=gcf()
winnum=winsid() ;
toolbar(winnum(1),'off');
f.pixmap="on"
for k=2:N
   drawlater()
   clf()
   plot2d(0,0,-9,rect=rect,frameflag=3)
   plot2d(X(1:k,:),Y(1:k,:),[5 2],rect=rect,frameflag=0)
   P1=[X(k,1)-dx/2;Y(k,1)+dy/2;dx;dy;0;360*64];//la planète en rouge
   P2=[X(k,2)-dx/2;Y(k,2)+dy/2;dx;dy;0;360*64];//la comète en bleu
   xfarcs([P1,P2],[5,2])
   xstring(-4,-6,'t='+string(t(k)))
   drawnow()
end