Bonjour bonjour, je suis étudiant, depuis le début de ce semestre (environ 1 mois) nous avons appris les bases du F90, et nous avons un sujet à rendre pour dans 3 semaines.
Je voulais savoir si vous auriez la gentillesse de m'aider à le faire ?
Je dis bien aider ... et non macher le boulot.
Je vais poster question par question ce que l'on doit faire :
1) Dans un premier temps, on se propose d'écrire un SOUS-PROGRAMME GENERAL permettant de calculer un pas RK4 qui détermine la position des N corps au temps t+h a partir de la donnée position et de la vitesse au temps t en transformant le système d'équations différentielles d'ordre 2 en un système d'équations d'ordre 1.
Pour ce faire, on suppose avoir déjà écrit un sous-programme FORCE(Fx, Fy, x, y, Vx, Vy, m, N, t) qui détermine la force totale agissant sur chaque corps et qui admet comme arguments :
Fx, Fy : tableaux de dim N qui contient les composantes x et y de la force
x,y : idem avec x et y de la position des corps
Vx, Vy : idem avec x et y de la vitesse des corps
m : tableaux de dim N qui contient la masse des corps
N : nbe de corps
t : le tps
Voilà la question : Le sous-programme RK4( x, y, Vx, Vy, m, N, t, h) devra être écrit de telle sorte que les tableaux x, y Vx et Vy contiennent les valeurs à l'instant t à l'entrée et qu'il contienne les valeurs t+h à la sortie.(variable t à la sortie valant elle t+h).
Concrètement, je pense savoir écrire le RK4 (du moins je l'avais fait pour un TD en cours, on avait vu dans un autre TD comment faire un tableau ...
Youhou ! Donc normalement, je devrais être apte à le faire tout seul comme un grand.. M'enfin, j'y arrive pas ..
Voila comment j'avais écrit mon Runge Kutta 4 :
Cependant, je ne vois pas trop comment ça fonctionnera dans le cadre de mon énoncé ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 k1 = f(theta, m, d, l, q, qprime, g)*h/(2.0d0) beta = (thetaprime + k1/(2.0d0))*h/(2.0d0) k2 = f(theta + beta, m, d, l, q, qprime, g)*h/(2.0d0) k3 = f(theta + beta, m, d, l, q, qprime, g)*h/(2.0d0) delta = h*(thetaprime + k3) k4 = f(theta + delta, m, d, l, q, qprime, g)*h/(2.0d0) theta = theta + h*(thetaprime + (k1 + k2 + k3)/(3.0d0)) thetaprime = thetaprime + (k1 + 2*k2 + 2*k3 + k4)/(3.0d0) t = t + h
Et encore moins (c'est surtout la que j'ai besoin d'aide) comment faire sortir les données sous forme de tableau ...
Cordialement,
Partager