Algorithme
Calcul du nombre d'or
Objectif : On souhaite écrire un programme Java qui calcule le nombre d'or utilisé par les anciens comme nombre idéal pour la sculpture et l'architecture. Si l'on considère deux suites numériques (U) et (V) telles que pour n>2 :

et

On montre que la suite (V) tend vers une limite appelée nombre d'or (nbr d'Or = 1,61803398874989484820458683436564).
 

Spécifications de l’algorithme :
On écrit un programme qui donne une valeur approchée avec une précision fixée de e du nombre d'or. Le programme indiquera en outre le rang du dernier terme de la suite correspondant.
 
n,Un,Un1,Un2 : sont des entiers naturels
Vn,Vn1, e  : sont des nombres réels

lire( e ); // précision demandée
   Un2 ¬ 1;
   Un1 ¬ 2;
   Vn1 ¬ 2;
   n ¬ 2; // rang du terme courant
Itération
    n ¬ n + 1;
    Un ¬ Un1 + Un2;
    Vn ¬ Un / Un1;
    si |Vn - Vn1| £ e alors
       Arrêt de la boucle ; // la précision est atteinte
    sinon
       Un2 ¬ Un1;
       Un1 ¬ Un;
       Vn1 ¬ Vn;
    fsi
fin Itération
ecrire (Vn , n);
 

Implantation en Java

On entre au clavier un nombre réel ci-dessous 0.00001, pour la précision choisie (ici  5 chiffres après la virgule), puis le programme calcule et affiche le Nombre d'or (les caractères gras représentent ce qui est écrit par le programme, les italiques ce qui est entré au clavier) :
 

Précision du calcul ? : 0.00001
Nombre d'Or = 1.6180328  // rang=14

 

Proposition de squelette de classe Java à implanter avec un boucle for :
 

class AppliNombredOr  {

   }

Remarquons que nous proposons une boucle for ne contenant pas de condition de rebouclage dans son en-tête (donc en apparence infinie), puisque nous effectuerons le test "si |Vn - Vn1| <= Eps alors Arrêt de la boucle"  qui permet l'arrêt de la boucle.

Remonter