Programe nombre d'Or

Fermé
red-sama - 17 déc. 2007 à 17:45
 Arsenic33333 - 12 févr. 2009 à 23:37
bonjour
ecrire le programe qui calcule le nombre d'Or :
1,618033988749894848204586834365638117720309179805762862135448622705260462189024497072072041 comme limite de la suite Vn definie par Un=Un-1 + Un-2 , et Vn= Un/Un-1 , U1=1 , U2=2 ,

merci a toute persone pouvant m'aidée ,

13 réponses

SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
17 déc. 2007 à 18:22
au fait, fais tout de même attention aux effets de bord... genre n'essaie pas de calculer V(1) étant donné que U(0) n'est pas définie
1
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
17 déc. 2007 à 17:52
ça dépend principalement de ce que tu attend de ton programme.
tu lui passe l'erreur tolérée ou le nombre d'itérations?
0
sinserement , ocune idée , ! ! ! , il ons poser la question comme sa , g fait un copier coler ,

mais dit moi , normalement , quand j'execute mon programe , quesque je dois obtenir ?
0
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
17 déc. 2007 à 18:17
tu appelle ton programme avec un ou plusieurs paramètres, et tu obtiens le résultat voulu...
le problème est que cette suite est infinie, alors si tu fais une boucle qui est sensée se rapprocher infiniment près de ta valeur finale, elle va tourner indéfiniment... et du coup tu risque d'arriver en retard pour tes exams de fin d'année ;o)
c'est pourquoi le plus simple est de passer en prarmètre le nombre d'itérations voulues, ce qui va limiter la précision de ton calcul mais te permettra tout de même d'obtenir la valeur de V(n) en fonction de n.
il ne te reste plus qu'à dire que pour n très grand on peut considérer qu'il est infini, passer ce "grand" paramètre à ta fonction, et regarder quel résultat ça te donne.
après, pour l'écriture de ta fonction, c'est vraiment pas dur... en jouant avezc un tableau de 3 entiers et 2 fonctions (une pour U(n) en fonction de U(n-1) et U(n-2), et une autre pour V(n) en fonction de U(n-1) et U(n)) plus une fonction main, tu peux assez facilement arriver à avoir un programme qui tourne...
c'est vraiment basique, comme programme.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
17 déc. 2007 à 18:21
Il y a aussi moyen de s'arreter lorsque tu atteinds la precision voulue (genre 10^-200 pour avoir 200 chiffres significatifs apres la virgule).

Dis-moi c'est dans quel cadre que tu dois faire ca ? Car ce sera different si tu es en 4eme ou si tu es en Doctorat (mais ca m'etonnerai que tu sois en Doctorat).

a+
-Qwerti.
0
je suis en premiere anné math info , on vien juste de comencer le C , alors je suis pas trop .... comment dire , je pige pas tout de la premiere fois si tu vois se que je veu dire , , esque tu peut me donné le resultat de se probleme en langage c , ci c'est possible ! merci
0
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
17 déc. 2007 à 18:30
Alors soyons clair, JE NE VAIS PAS TE DONNER LA SOLUTION !

Et je suppose que personne ici ne te la donnera.

Commence a ecrire le programme (reprends tes cours, lis des tutos sur le web), montre-nous le resultat, dis-nous ou tu as des problemes et on sera tres tres heureux de t'aider !

L'idee de SebManfred est bonne : commence par ecrire un programme qui calcule les N premieres iterations par exemples et qui renvoie la valeur de V_N.

Courage !
-Qwerti.
0
ok ,
merci pour votre éclaircicement , je vais fair mon possible , resté en ligne , je vous donne se que g fait dans quelque minutes
0
re ...
regardez moi , sa , esque sa dois ressembler a ça ?
#include <stdio.h>
#include <conio.h>
void main()
{
int i,n;
float v,u1,u2,u3;
scanf("%d",&n);
u2=1;
u3=2;
for(i=3;i<=n;i++)
{
u1=u2;
u2=u3;
u3=u2+u1;
}
v=u3/u2;
printf("Vn %f",v);

}

merci
0
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
17 déc. 2007 à 19:46
Bon c'est un bon debut...

Petit detail : je prefere quand c'est

int main()

(ligne 3) et rajoute a la fin de main :

return 0;

Ca fait plus serieux, ca evite de faire hurler le compilateur... enfin ca depend du compilateur bien sur :-)

Ca a l'air syntaxiquement correct et algorithmiquement aussi... mais le probleme c'est que tu ne vas pas avoir une precision folle ! Est-ce que tu as 200 chiffres apres la virgule ?

a+
-Qwerti.
0
ah , ta raiso , il est la le probleme , , je vais , voir , merci
0
Ecrire le programme de nombre d'or
0
Programme permettant de calculer le nombre d'or en PHP
(juste un problème : PHP arrondie les nombres au bout d'un moment mais vous pouvez peut-être convertir ce programme sous un autre language qui permet d'avoir des nombres précis à souhait)

<?PHP

$d = 100; // nombre de boucles qu'on veut calculer (on s'approche du nombre d'or à chaque bouclage...)

$F[1] = 1;
$F[2] = 1;
$n = 3;

while($n < $d) {

$F[$n] = $F[$n-1] + $F[$n-2];
$phy = $F[$n] / $F[$n-1];
$count++;

}

echo $phy;

?>
0
désolé petite erreur à la ligne 13 : $count++;
il faut remplacer cette ligne par : $n++;

test http://raidsky.fr/fib.php
0