///////////////////////////////////////////////// // // Comparaison cos() avec cos() calcule a l'aide // d'une serie entiere d'ordre 8 // ///////////////////////////////////////////////// #include #include #include #include #include "courbe.h" const double PI = 3.1416; ///////////////////////////////////////////////// // // Calcul de factoriel N // conversion en double pour eviter // les debordements d'int // ///////////////////////////////////////////////// double factN( int N ) { double fact = 1; for( int i = 1; i <= N; i ++ ) { fact = fact * N; } return fact; } ///////////////////////////////////////////////// // // Calcul de cos(x) a l'aide d'une serie entiere // d'ordre 8 // ///////////////////////////////////////////////// double myCos( double x ) { double mycos; double x2 = x*x; double x4 = x2*x2; double x6 = x4*x2; double x8 = x4*x4; mycos = 1 - x2/factN(2) + x4/factN(4) - x6/factN(6) + x8/factN(8); return mycos; } void main() { double xMin = -PI; double xMax = 3*PI; double yMin = -2; double yMax = 2; // On change le mode video if( InitGraphics("c:\\turboc3\\bgi") != 0 ) { int errorcode = graphresult(); printf("Erreur d'initialisation : %s\n", grapherrormsg(errorcode)); getch(); return; } // On indique l'echelle // (pour cos, de 0 a PI sur x et de -1 a 1 sur y ) if( SetGraphicsScale( xMin, xMax, yMin, yMax ) != 0 ) { printf( "Echelle incorrecte\n" ); getch(); return; } // Fond blanc setbkcolor( WHITE ); // On dessine les axes X et Y en bleu // pas de 0.5 en X, pas de 0.2 en Y DrawGraphicsAxys( BLUE, 1, 0.2, "Axe des X", "Axe des Y" ); // On dessine le cos approximatif en rouge setcolor(RED); double xPrec = xMin; double yPrec = myCos(xMin); double y; for( double x = xMin + 0.1; x < xMax; x+= 0.1 ) { y = myCos(x); line( xGraphics2Screen(xPrec), yGraphics2Screen(yPrec), xGraphics2Screen(x), yGraphics2Screen(y) ); xPrec = x; yPrec = y; } // On dessine le "bon" cos() en vert setcolor(GREEN); xPrec = xMin; yPrec = cos(xMin); for( x = xMin + 0.1; x < xMax; x+= 0.1 ) { y = cos(x); line( xGraphics2Screen(xPrec), yGraphics2Screen(yPrec), xGraphics2Screen(x), yGraphics2Screen(y) ); xPrec = x; yPrec = y; } // On laisse a l'utilisateur le temps d'admirer // les courbes getch(); // On restore le mode texte DestroyGraphics(); }