Fonction avec algobox


  • C

    Bonsoir,
    Pouvez vous me dire quel est le rôle de ce programme ?
    1 VARIABLES
    2 h EST_DU_TYPE NOMBRE
    3 x EST_DU_TYPE NOMBRE
    4 y EST_DU_TYPE NOMBRE
    5 Max EST_DU_TYPE NOMBRE
    6 c EST_DU_TYPE NOMBRE
    7 DEBUT _ALGORITHME
    8 LIRE h
    9 Max PREND _LA_VALEUR 0
    10 TANT_QUE (x<1) FAIRE
    11 DEBUT _TANT QUE
    12 x PREND _LA VALEUR x+h
    13 y PREND _LA VALEUR x sqrt (1-pow (x,2))
    14 SI (y>max) ALORS
    15 DEBUT_SI
    16 mAX PREND_LA_VALEUR y
    17 c PREND_LA_VALEUR x
    18 FIN SI
    19 FIN_TAN_QUE
    20 AFFICHER "c="
    21 AFFICHER c
    22 AFFICHER "Max="
    23 AFFICHER Max
    24 FIN_ALORITHME

    Merci à celui qui pourra me guider (et par la suite
    je dois faire l'étude théorique du problème résolu).C'est une première pour moi merci de votre compréhension.


  • L

    vraiment bisard ton algo, il commence avec une boucle TANQUE(x<1)

    Alors que le X n'a pas encore été lue.


  • mtschoon

    Bonjour,

    Non loenel , il n'y a pas de problème à ce niveau .
    Par défaut , dans Algobox , la valeur initiale de la variable est 0 , donc ici ça va.

    Par contre , il y a un problème aux lignes 12-13
    Si on teste l'algorithme avec h=0.3 , on finit par avoir une erreur de calcul ...
    x prend les valeurs 0 , 0.3 , 0.6 sans difficulté. problème pour x=0.9 ( donc x< 1 )
    le "Tant que " donne x =0.9+0.3=1.2 ( ligne 12 )
    la ligne 13 fait calculer y avec la racine carrée d'un nombre négatif (!) d'où message d'erreur et programme bloqué...

    Il faudrait donc modifier ce programme en alternant les lignes 12 et 13 , mais il faudrait dans ce cas modifier aussi la valeur de c à afficher car ce n'est pas la valeur utile qui est affichée....

    En bref , CANAILLE , le programme qui tu donnes a des défauts...

    Si tu veux, malgrè tout , en comprendre l'idée , teste-le avec h=0.1 ( tu n'auras pas de message d'erreur et les résultats seront bons )

    Bien entendu , te dire ce que fait le programme ne te permettrait pas d'en comprendre la logique .
    Pense cependant qu'il s'agit de la fonction x→x1−x2x \to x\sqrt{1-x^2}xx1x2 et que Max veut dire "maximum".

    Pour comprendre , si tu as le programme en Algobox , fait le fonctionner pas à pas ( avec h=0.1 par exemple ) .
    Sinon , toujours avec h=0.1 , tu peux aussi remplacer la machine et appliquer le programme à la main ...

    Si ça peut-être utile , je te donne quelques résultats

    Pour h=0.1 , tu obtiens c=0.7 et Max=0.49989999
    Pour h=0.01 , tu obtiens c=0.7 et Max=0.49998319
    Pour h=0.001 , tu obtiens c=0.707 et Max=0.49999998

    Bon exercice.


  • C

    bonsoir et merci d'avoir étudier cet excercice,
    je vais poursuivre bonne soirée.


Se connecter pour répondre