dichotomie.pdf

Upload: habdoulaye-koudakidiga

Post on 04-Apr-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 dichotomie.pdf

    1/4

    Lalgorithme de dichotomieHenri ROLAND

    Mai 2010

    1) Le jeu du nombre cachAlbert a choisi un nombre compris entre 1 et 100, Bertrand doit le deviner.Bertrand fait des propositions et Albert rpond "trop grand", "trop petit" ou "gagn". Lejeu sarrte lorsque Bertrand a trouv le nombre.Faire fonctionner le jeu avec un camarade, archiver le droulement du jeu dans un tableau

    sur papier.Que faut-il mmoriser ?Que faut-il archiver dans le tableau ?On dcide dappeler N le nombre cach

    et R la rponse de Bertrand.Albert a choisi 63. On obtient le tableau suivant :

    N R TestRponsedAlbert

    63 40 RN Trop grand

    60 RN Trop grand

    62 RN alorsAfficher("Trop grand")

    Sinon

    si RN AlorsAfficher("Trop grand")

    Sinon

    si R

  • 7/29/2019 dichotomie.pdf

    2/4

    On obtient lalgorithme suivant :

    N Nombre alatoire compris entre 1 et 100.R0Tant que R=N Faire

    Lire(R)Si R>N Alors

    Afficher("Trop grand")Si RN:Then:Disp("TROP GRAND"):End:If RN:print Trop grand

    if R

  • 7/29/2019 dichotomie.pdf

    3/4

    RemarqueLes calculatrices programmables "non formelles" ne grent que les variables de typenumrique et pas les chanes de caractres. Il faut donc trouver un codage pour la rponsedAlbert.Pour simplifier, Albert tapera -1 pour "Trop petit" ou 1 pour "Trop grand" ou 0 pour"Gagn".

    On obtient lalgorithme suivant :

    Premire mthodeavec un entier alatoire

    A1B100R2Tant que R=0 Faire

    CEntier Alatoire entre A et BAfficher(C)Lire(R)Si R=1 Alors

    BC-1Si R=-1 Alors

    AC+1

    Deuxime mthodepar dichotomie

    A1B100R2Tant que R=0 Faire

    CPartieEntire(A+B

    2)

    Afficher(C)

    Lire(R)Si R=1 Alors

    BC-1Si R=-1 Alors

    AC+1

    Programmation de la deuxime mthodeProgrammation sur TI 82 Programmation en Python 2.6

    :1A:100B

    :2R:While R=0:PartEnt((A+B)/2)C:Disp("PROPOSITION=",C):Input("REPONSE ?",R):If R=1:Then:C-1B:End:If R=-1

    :Then

    :C+1A:End:End

    from math import *A=1

    B=100R=2

    while R !=0 :C=floor((A+B)/2.)print Proposition = ,CR=input(Rponse ? )if R==1:

    B=C-1if R==-1:

    A=C+1

    3) Utilisation de la dichotomie pour rsoudre une

    quationf est une fonction dfinie sur lintervalle [a; b] et strictement monotone sur [a; b] . Oncherche rsoudre numriquement lquation f(x) = 0. On peut liminer tout dabord les cas o f(a) = 0 ou f(b) = 0.

    Lexistence dune racine

    sur ]a

    ;b

    [ est subordonne au fait quef

    (a

    ) etf

    (b

    ) sont designes contraires, ce qui quivaut f(a) f(b) < 0, et que f est continue sur [a ; b]. Si c est un rel de lintervalle ]a, b[, la position de par rapport c peut tre teste par

    lintruction suivante :

    3

  • 7/29/2019 dichotomie.pdf

    4/4

    Si f(a)f(c) 0 alorsRechercher sur ]a;c]

    SinonRechercher sur ]c;b[

    Dans la pratique on prendra pour c le milieu de lintervalle [a; b].

    On itrera le processus jusqu obtenir par exemple b a < pour donn.Algorithme

    A, B, E et f sont donns.Si f(A)f(B)0 alors

    Afficher(Pas de racine sur ]A;B[)Sinon

    Tant que B-AE Faire

    CA+B

    2Si f(A)f(C)0 alors

    BC

    SinonAC

    Afficher(A,B)

    Ecriture du programme

    Pour le programme sur TI 82 on suppose que la fonction (x x3 + x + 1) a tprlablement entre dans la variable Y1.

    Programmation sur TI 82 Programmation en Python 2.6:Prompt A:Prompt B:Prompt E

    :If Y1(A)*Y1(B)0:Then:Disp("PAS DE RACINE"):Else

    :While B-AE:(A+B)/2C:If Y1(A)*Y1(C)0:Then:CB:Else:CA:End

    :End:Disp("A=",A):Disp("B=",B)

    def f(x):return x**3+x+1

    A=input(A=)

    B=input(B=)E=input(Prcision =)if f(A)*f(B)>=0 :

    print(pas de racine entre ,A, et ,B)

    else:while B-A>=E :

    C=(A+B)/2.if f(A)*f(C)0 :

    B=Celse :

    A=Cprint(Une racine entre ,A, et ,B)

    NotePour une tude plus gnrale de problmes lis la dichotomie vous pouvez consulter lesdocuments suivants disponibles sur le site de lIREM dAix-Marseille :http://www.irem.univ-mrs.fr/

    Une mthode pour laborer des algorithmes itratifs. Auteur : F.Didier. Algorithmes et logique au lyce. Auteurs : P.Bouttier, A.Crumire, F.Didier, J-M.Fillia,M.Quatrini, H.Roland.

    4