Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Algorithme, dépassement des capacités des boucles, que faire ?

Posté par
ThomasG
14-02-15 à 18:33

Bonjour, j'ai un exercice à faire et je rencontre un problème pour la dernière question ou il faut construire un algorithme sur Algobox.

On a f(x)=e^x/((e^x)+1)
g(x)=f(x)-x
Alpha :valeur approché a 10^-7 de la solution à l'équation g(x)=0
Dans une des questions précédentes nous demandant de trouver la valeur de Alpha, je trouve : Alpha=0,6590461.
On définit la suite U(n)=f(U(n)).
Enfin, on veut donc construire sur Algobox l'algorithme qui nous donnerais n (le plus petit possible) tel que U(n) devienne une valeur approchée de Alpha a 10^-6.

Voila mon algorithme :

1   VARIABLES
2     n EST_DU_TYPE NOMBRE
3     p EST_DU_TYPE NOMBRE
4     U EST_DU_TYPE NOMBRE
5   DEBUT_ALGORITHME
6     U PREND_LA_VALEUR 0
7     n PREND_LA_VALEUR 0
8     LIRE p
9     TANT_QUE (U-0,6590461>p) FAIRE
10      DEBUT_TANT_QUE
11      n PREND_LA_VALEUR n+1
12      U PREND_LA_VALEUR exp(U+1)/(exp(U+1)+1)
13      FIN_TANT_QUE
14    AFFICHER n
15    AFFICHER U
16  FIN_ALGORITHME


Mais le problème c'est qu'il affiche :***Algorithme interrompu ligne 13 : dépassement de la capacité autorisée pour les boucles***
(en ayant essayer avec p=0.000001)

Je ne comprend pas si j'ai fait une erreur quelque part ou sinon comment remédier a ce problème ?

Posté par
Glapion Moderateur
re : Algorithme, dépassement des capacités des boucles, que fair 14-02-15 à 18:43

au début U vaut 0 donc U-0.6590461 vaut -0.6590461 (et mets des points et pas des virgules !!!)
donc tu sors de la boucle immédiatement.

mets des valeurs absolues donc TANT_QUE (abs(U-0.6590461)>p) FAIRE

et puis après c'est curieux aussi ton instruction qui met à jour U, mets plutôt :

U PREND_LA_VALEUR exp(U)/(exp(U)+1)

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 14-02-15 à 19:09

Bonjour,

Je suis d'accord avec Glapion pour ton entrée dans la boucle qui ne se fait pas !

Et pour ta valeur de .... si elle est fausse tu vas avoir un résultat faux avec cet algo !

Il faudrait mieux comparer U et f(U) ....

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 14-02-15 à 19:10

Ta ligne """"12      U PREND_LA_VALEUR exp(U+1)/(exp(U+1)+1)"""" montre que tu patauges pas mal !!!

Posté par
J-P Posteur d'énigmes
re : Algorithme, dépassement des capacités des boucles, que fair 14-02-15 à 20:18

U(n+1) = f(U(n)) et pas ce qui est écrit.

U(n+1) = e^(U(n))/(e^(U(n)+1)

Une proposition est :

VARIABLES
     n EST_DU_TYPE NOMBRE
     p EST_DU_TYPE NOMBRE
     U EST_DU_TYPE NOMBRE
     Q EST_DU_TYPE NOMBRE
   DEBUT_ALGORITHME
     U PREND_LA_VALEUR 0
     n PREND_LA_VALEUR 0
     p PREND_LA_VALEUR 1/1000000
     Q PREND_LA_VALEUR exp(U)/(exp(U)+1)  
     TANT_QUE (Q-U > p) FAIRE
      DEBUT_TANT_QUE
      n PREND_LA_VALEUR n+1
      U PREND_LA_VALEUR Q
        Q PREND_LA_VALEUR exp(U)/(exp(U)+1)
      FIN_TANT_QUE
    AFFICHERcalcul* n+1
    AFFICHER Q
  FIN_ALGORITHME
-----

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:28

Non, mais je ne peux pas le modifier autant J-P, car dans l'énoncé il nous donnait un algorithme a trou d'abord à compléter puis ensuite a faire sur algobox.

u[0]=...       J'ai mis : 0
n=0
Saisir(p)
Tantque (|u[n]-...|>p) faire     J'ai mis 0.6590461
n=n+1
u[n]=...              J'ai mis exp(u[n-1])/(exp(u[n-1])+1))
FinTantque
Afficher (n et u[n])

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:36

C'est du n'importe quoi un algo avec    u[0] et u[n] ..... Cela voudrait dire que u est une liste de nombres ... pas un nombre ...

Il sort d'où cet algo ? D'un livre ? D'une photocopie de ton prof ?

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:36

En tenant compte de vos conseils Glapsion, j'obtient :

***Algorithme lancé***
Entrer p : 0.000001
100.65904583
***Algorithme terminé***

Ce qui ne me semble faux. De plus je ne comprend pas pourquoi vous m'avez conseiller de mettre juste ''U'' dans la ligne 12 alors que la suite est définit à la base par récurrence Un+1=f(Un) ... :/ Mais je l'ai fait quand même et ca me donne ce que je vous ai mis plus haut.

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:37

Il y avait des valeurs absolues :  | | dans la ligne  : Tantque (|u[n]-...|>p) faire     J'ai mis 0.6590461

NE pas les oublier !

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:38

Bah oui il sort de mon livre, c'est un exercice du livre que le prof nous a donné.

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:41

Oui je les ai rajouter comme Glapsion me lavait dit et ca me donne le résultat que je vous ai poster plus haut.

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:41

Et l'affichage c'est

10   suivi de 0.65904583

Transformer

AFFICHERcalcul* n+1
AFFICHER Q

en AFFICHERcalcul* n+1
AFFICHER "-"
AFFICHER Q

Cela donnera : 10-0.65904583

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:45

C'est quoi le Q ? J ne l'ai même pas dans mes variables...

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:51

C'est dans l'algo de JP !!!

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:52

DAns ton truc, il faut
AFFICHER n
AFFICHER "-"
AFFICHER U

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 11:56

Mais je ne peux pas modifier autant l'algo car il doit correspondre à celui qui a dans l'énoncé : juste traduit sur Algobox.

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 12:04

D'accord je viens de comprendre en fait que les deux chiffres étaient collés en rajouter ''-'' ou un retour à la ligne ca va mieux forcément.

Dernier problème, la valeur qui s'affiche est enfaite une valeur a 10^-8 pas a 10^-6. Je devrais trouver 0.659046 et non 0.65904583 ?:/

Posté par
alainpaul
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 12:16

Bon dimanche,

Deux idées pour éviter l'overflow:

1°  procéder par emboîtements ,pour la précision approcher à
10^{-3} puis 10^{-5}   et 10^{-6}.


2° mettre un test sur le nombre de boucles,



Alain

Posté par
J-P Posteur d'énigmes
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 14:52

Citation :
Dernier problème, la valeur qui s'affiche est enfaite une valeur a 10^-8 pas a 10^-6. Je devrais trouver 0.659046 et non 0.65904583 ?:/


Oui, enfin bof

Algonox ne va pas faire un arrondi pour le plaisir.

La réponse signifie simplement que alpha est 0,65904583 à moins de 10^-6 près.

Donc quelle est comprise dans ]0,65904483 ; 0,65904683[

On ne peut pas deviner à ce stade si il faudrait arrondir à 0,659045 ou bien à 0,659046 ou bien à 0,659047 ... et ce n'est d'ailleurs pas demandé.

Mais ce n'est que mon avis.  

Posté par
jeveuxbientaider
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 14:57

Citation :
Mais ce n'est que mon avis.
  

Avis que je partage !  

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 15-02-15 à 19:38

Oula je ne comprend pas du tout. Il nous demande une valeur à 10^-6, donc l'algorithme doit donner une valeur a 10^-6 De plus je ne comprend pas ça : ''Donc quelle est comprise dans ]0,65904483 ; 0,65904683['' Pourquoi ne peut on pas arrondire directement nous a 0.659046 puisque l'on connait les chiffres suivants ?!

Posté par
J-P Posteur d'énigmes
re : Algorithme, dépassement des capacités des boucles, que fair 16-02-15 à 08:03

Supposons que ton Alpha = 0,6590461 ait correctement été arrondi, on sait alors que alpha est compris dans [0,65904605 ; 0,65904615[

L'intervalle dans lequel alpha est compris a une amplitude de 0,65904615 - 0,65904605 = 0,0000001 = 10^-7

Il n'empêche que |alpha - 0,6590461| <= 0,5.10^-7

Et donc 0,6590461 est une valeur approchée de alpha à 0,5.10^-7
*****

A mon sens, l'algo demande le nombre d'itérations à faire, pour trouver une valeur numérique telle que |alpha - valeur numérique| <= 10^-6

et l'algo donne n = 10 pour la "valeur numérique" = 0,65904583 ... et on a |alpha - 0,65904583| <= 10^-6
**********

Citation :
Pourquoi ne peut on pas arrondire directement nous a 0.659046 puisque l'on connait les chiffres suivants


Non, on ne connait pas les chiffres suivants.

On sait juste que |alpha - 0,65904583| <= 10^-6 et que donc alpha est compris dans
[0,65904\red 4[/tex]83 ; 0,65904\red 6[/tex]83]

Posté par
J-P Posteur d'énigmes
re : Algorithme, dépassement des capacités des boucles, que fair 16-02-15 à 08:04

Zut, à la fin de mon message précédent, lire :

On sait juste que |alpha - 0,65904583| <= 10^-6 et que donc alpha est compris dans
[0,65904\red 483 ; 0,65904\red 683]

Posté par
ThomasG
re : Algorithme, dépassement des capacités des boucles, que fair 18-02-15 à 22:52

Merci pour ces explications je crois que je commence à comprendre.

Simplement l'énoncé dit : ''Pour obtenir le plus petit entier n tel que Un soit une valeur approchée de Alpha à 10^-6''
Donc je dois dire quoi dans ma réponse ? Un =(environ) 0.65904583 ou j'ai quand même le droit d'arrondir a 10^-6. Par exemple Un=(environ) 0.659046. (enfaîte j'ai vraiment envie d'arrondir comme cela car avec un 8 derrière on arrondit au supérieur...)

Ou alors je crois que je ne comprends pas ça :
On sait juste que |alpha - 0,65904583| <= 10^-6 et que donc alpha est compris dans
[0,65904\red 483 ; 0,65904\red 683]



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1760 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !