public class DeveloppementLimiteSinusAvecFonctions { /////////////////////////////////////////////////////// /* Calcul de la puissance entiere d'un reel */ /* Les valeurs a reelle et n entiere sont donnees */ static double puissance(double a,int n) { double res; int i; res = a; for ( i = 1 ; i < n ; i = i+1 ) res = res*a; return(res); } /* Calcul de n! */ /* La valeur n entiere est donnee */ static long factoriel(int n) { long fct; int i; fct = 1L; for ( i = 2 ; i <= n ; i = i+1 ) fct = fct*i; return(fct); } /* Calcul de la valeur de sin(a) au voisinage de 0.0 */ /* Utilisation du developpement limite */ /* Les valeurs a et n sont donnees */ static double sinus(double a,int n) { double signe; double sn; sn = a; signe = -1.0; for ( int i = 3 ; i <= n ; i = i+2 ) { sn = sn + signe*puissance(a,i)/factoriel(i); signe = -signe; } return sn; } /////////////////////////////////////////////////////// /* Programme principal */ public static void main(String [] args) { double angle; int n; double sin; Ecran.afficher("SVP, l'angle : "); angle = Clavier.saisirDouble(); Ecran.afficher("SVP, n : "); n = Clavier.saisirInt(); sin = sinus(angle,n); Ecran.afficherln("sin(",angle,") = ",sin); Ecran.afficherln("Valeur reelle = ",Math.sin(angle)); Ecran.afficherln("Difference = ",Math.sin(angle)-sin); } }