Exercice en algorithmique d'approximation

houta -  
 manou -
Bonjour,
SVP JE CHERCHE UN COUR ET DES EXERCICES SUR LES ALGORTHMES D4APPROXIMATION AVEC DES CORRECTIONS
(COMME RACINE CARR2 DE X ....)
avec mes remerciment d'avance
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    La plupart des approximations utilisées en algorithmique sont liées au concept mathématiques de série, et nottament de série entière.
    Quelques exemples avec les développements usuels

    On peut grâce à ce "petit" point de théorie faire un certain nombre d'approximation, à condition que tu saches faire des sommes, des calculs de puissances, et des factorielles (le tout combiné) dans le langage de programmation que tu utilises (ps. ce serait bien de préciser lequel c'est)
    1
    1. houta
       
      Mercie pour votre message
      ce que je cherche par exemple l'algorithme d'approximation de la fonction racine carré de x
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Dans les exemples si tu prends la formule 9 tu as une formule pour calculer (1+x)^a pour x sur ]-1;1[

    Avec a=1/2 on peut alors calculer racine(1+x) pour x sur ]-1;1[
    Et en posant y=x+1 on obtient donc une formule de racine(y) pour y sur ]0;2[

    La formule est un algorithme exprimé dans un langage formel (les mathématiques) il s'agit de faire une somme (infinie mais faut s'arrêter un peu avant) où dans chaque terme tu as un produit, une factorielle, et une puissance...

    Je ne peux pas te proposer d'algorithme dans ton langage de programmation, parce que... tu n'as pas dit ce que c'était !
    1
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    Remarque : pour l'approximation de la racine carré on a l'algorithme de Babylone
    0
  4. KX Messages postés 19031 Statut Modérateur 3 020
     
    Voici l'implémentation des deux méthodes (en langage Pascal) :
    const epsilon=1E-10;
    
    function racine1(y:real):real; // méthode des développements usuels
    var n:integer; x,somme,produit,factorielle,puissance,memoire:real;
    begin
         x:=y-1;
         if abs(x)>=1 then begin
                           writeln('/!\ le calcul de racine(y) necessite y sur ]0;2[');
                           readln; halt;
                           end;
         n:=0;
         somme:=1;
         produit:=1;
         factorielle:=1;
         puissance:=1;
    
         repeat
               memoire:=somme;
               n:=n+1;
               produit:=produit*(0.5-n+1); // a=0.5
               factorielle:=factorielle*n;
               puissance:=puissance*x;
               somme:=somme+produit*puissance/factorielle;
         until abs(somme-memoire)<epsilon;
    
         result:=somme;
    end;
    
    function racine2(a:real):real; // algorithme de Babylone
    var x,y:real;
    begin
         if a<=0 then begin
                      writeln('/!\ le calcul de racine(a) necessite a>0');
                      readln; halt;
                      end;
    
         y:=a;
         repeat
               x:=y;         // x <=> x(n)
               y:=(x+a/x)/2; // y <=> x(n+1)
         until abs(x-y)<epsilon;
    
         result:=y;
    end;
    La deuxième est plus simple mais elle ne s'utilise qu'avec le calcul de la racine alors que la première peut facilement se modifier pour s'adapter à tous les développements usuels
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. manou
     
    je cherche un algorithme qui permet de calculer le rayon d'un cecle inscrit dans une grande cercle et la différence entre l'aire de 2 cercles soit maximal
    0