cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008
-
16 août 2004 à 21:13
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 2009
-
17 août 2004 à 08:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 17 août 2004 à 08:57
pour le temps de calcul, c'est norma, on calcul la solution de 0 a 100 (1000 iterations avec un pas de 0.1, le compte est bon), et en plus pour chaque 0.1, on calculs 100 points intermediaires.
donc je pense que c'est normal, mais prend d'autres valeurs plus correctes, le resultat sera aussi correct, et ce sera plus rapide. Enfin essaye koi.
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 17 août 2004 à 00:53
merci beaucoups.
10/10. PAr contre, vive le temps de calcul !!!
Pour la fonction, c'est juste celle que tu obtiens en résolvant 1/2*m(dy/dx)² = mgy
(énergie cinétique et potentielle)
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 16 août 2004 à 23:49
Ben la plus part des trucs c a moi, c'est une de mes libraires, ici c'est util.h et util.c, elle s'occupe de chose basic, comme l'allocation memoire, les erreurs, les fichiers... plein de choses koi. Et donc a la fin du programme tu fermes la librairie, et apres tu peux voir si elle a ete effectivement fermee, car en fait tu peux avoir plusieurs utilisateurs de cet lib, comme pas exemple winutil.h et winutil.c ... enfin ca c autre chose.
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 16 août 2004 à 23:44
CheckingClosingLibUtil() ???
C une fonction perso à toi ça??
MSDN coné po...
++
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 16 août 2004 à 23:38
bon voila ton equation, c'est quoi cette equation ? car la solution ne me dit rien ...
RungeKuttaODE(
yf, // le resultat
x0, // x au debut
y0, // y au debut
n, // nombre de pas
h, // pas de calcul
df, // y'=sqrt(2*g*y)
NULL // aucun parametre
);
// on ecrit les resultats
FilePrint((file,"%le\t%le\n",x,yf->coord[0]));
// on echange tout
CopyVectND(y0,yf);
x0 = x;
}
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 16 août 2004 à 21:54
x0 = 0 et y0 = 10
merci.
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 16 août 2004 à 21:41
oki je te fais un main pour cette equation, donne moi juste les conditions initialises (x0,y0)
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 16 août 2004 à 21:13
Salut !
Je connaissais cette méthode mais de là à la coder... bravo.
Mais je ne te mettrai une note, et un commentaire final, que lorsque j'orai pu tester le prog : impossible de compiler car main.c est vide !
Met un exe ou remplis main.c stp : je meurs d'envie de tester ton prog (j'ai une équa a résoudre : y' = Rac(2gy) )
17 août 2004 à 08:57
donc je pense que c'est normal, mais prend d'autres valeurs plus correctes, le resultat sera aussi correct, et ce sera plus rapide. Enfin essaye koi.
17 août 2004 à 00:53
10/10. PAr contre, vive le temps de calcul !!!
Pour la fonction, c'est juste celle que tu obtiens en résolvant 1/2*m(dy/dx)² = mgy
(énergie cinétique et potentielle)
16 août 2004 à 23:49
16 août 2004 à 23:44
C une fonction perso à toi ça??
MSDN coné po...
++
16 août 2004 à 23:38
===================================
#ifndef _UTIL_H_
#include "util.h"
#endif // _UTIL_H_
#ifndef _MATH_H_
#include "math.h"
#endif // _MATH_H_
#ifndef _LIST_H_
#include "list.h"
#endif // _LIST_H_
#ifndef _ODE_H_
#include "ODE.h"
#endif // _ODE_H_
//----------------------------------------------------------
// veut y', soit y'=sqrt(2*g*y)
BOOL df(P_VECTND res,double x,P_VECTND y,void *param)
{
double g;
g = 9.81;
res->coord[0] = sqrt(2*g*y->coord[0]);
return TRUE;
} // df()
//----------------------------------------------------------
int main(int argc,char **argv)
{
InitializationLibUtil();
{
double x0;
int dim,i;
P_VECTND yf,y0;
P_UTIL_FILE file;
dim = 1; // l'equation n'a qu'une dimension
y0 = CreateVectND(dim);
yf = CreateVectND(dim);
x0 = 0.;
y0->coord[0] = 10.;
file = FileOpen("res.txt","wt");
for(i=0;i<1000;i++)
{
double x,h,step;
int n;
step = 0.1;
x = x0 + step;
n = 100;
h = step/n;
RungeKuttaODE(
yf, // le resultat
x0, // x au debut
y0, // y au debut
n, // nombre de pas
h, // pas de calcul
df, // y'=sqrt(2*g*y)
NULL // aucun parametre
);
// on ecrit les resultats
FilePrint((file,"%le\t%le\n",x,yf->coord[0]));
// on echange tout
CopyVectND(y0,yf);
x0 = x;
}
FileClose(file);
Free(yf);
Free(y0);
}
CloseLibUtil();
CheckingClosingLibUtil();
return 0;
}
===================================
16 août 2004 à 21:54
merci.
16 août 2004 à 21:41
16 août 2004 à 21:13
Je connaissais cette méthode mais de là à la coder... bravo.
Mais je ne te mettrai une note, et un commentaire final, que lorsque j'orai pu tester le prog : impossible de compiler car main.c est vide !
Met un exe ou remplis main.c stp : je meurs d'envie de tester ton prog (j'ai une équa a résoudre : y' = Rac(2gy) )