ou
u' = FF1(u,up,t)
up' = FF2(u,up,t).
Le coeur du programme est donc une boucle:
for(itt=1;itt<ittmax;itt++)
{
/* Runge Kutta 4*/
du1 =dt*FF1(u,up,t);
dup1=dt*FF2(u,up,t);
du2 =dt*FF1(u+du1/2,up+dup1/2,t+dt/2);
dup2=dt*FF2(u+du1/2,up+dup1/2,t+dt/2);
du3 =dt*FF1(u+du2/2,up+dup2/2,t+dt/2);
dup3=dt*FF2(u+du2/2,up+dup2/2,t+dt/2);
du4 =dt*FF1(u+du3,up+dup3,t+dt);
dup4=dt*FF2(u+du3,up+dup3,t+dt);
u =u +(du1 /6 +du2 /3 +du4 /6);
up=up+(dup1/6 +dup2/3 +dup4/6);
t=t+dt;
}
Exemple de RUN:
printf(" Resolution du pendule force\n");
printf("2\n");
printf(" d udu\n");
printf(" --- + lbd-- + k sin(u) - omega sin(u) cos(u)\n");
printf("2dt\n");
printf(" dt\n");
printf("
avec
lbd=.30;
k=(2*Pi)*(2*Pi);
Quelques exemples
On impose au temps t=0 un déplacement sans vitesse
u=.2;
|
|
|