• Aucun résultat trouvé

4 Calcul du PGCD de deux nombres

N/A
N/A
Protected

Academic year: 2021

Partager "4 Calcul du PGCD de deux nombres"

Copied!
4
0
0

Texte intégral

(1)

P REMIERS ALGORITHMES

1 Introduction

OBJECTIF :L’objectif de ce tp est de rendre l’élève capable :

• concevoir un algorithme répondant à un problème précisément posé

• traduire enPythonun algorithme en pseudocode

• comparer de façon expérimentale les vitesses de convergence de différents algorithmes

Q - 1 : Créer un fichier PCSI-2-NOM-Prenom-Tp-Algo-Prog-1.py pour y répondre aux questions suivantes. Ce fichier sera envoyé (pour évaluation) dans un message ayant pour objet PCSI-2-Tp-Algo-Prog-1.

2 Quelques problèmes simples pour démarrer

2.1 Pair ou impair

Q - 2:Ecrire une fonctionParite(n)qui prend comme argumentnun entier naturel et qui retournepair si le nombre est pairimpairsinon.

2.2 Devinette

La bibliothèquerandompermet de générer de façon aléa- toire des nombres. On placera donc en préambule du fichier les lignes ci-contre :

import random as r

La fonctionrandint(a,b)renvoie de façon aléatoire, un entierndans l’intervalle~a,boùaetbsont des entiers, tels quea<b.

La fonctionrandom()renvoie un nombre appartenant à [0,1].

Soit la fonctionDevinette(n)qui donne au joueur le plaisir de rechercher un nombre choisi par l’ordinateur :

• le programme choisit un nombrex∈Nentre 0 etn(n∈N).

• le programme demande au joueur de devinerx

• le joueur propose un nombrer

• le programme lui indique alors sirest supérieur, inférieur ou égale à x

• en cas d’égalité, le programme lui indique le nombre de coups utilisés pour trouverx

• sinon, le programme propose au joueur de recommencer ou de taperqs’il veut arrêter.

LYCÉECARNOT(DIJON) 1/4 INFO ENMPSI & PCSI - TP1 - ALGO-PROG

(2)

Q - 3:Ecrire la fonctionDevinette(n).

Cette fois les rôles sont inversés. Le joueur donne un nombrexque le programmeDevin(x,n)doit trouver entre 0 etn. Ce programme est bicéphale, car il recherche le nombrexmais s’occupe aussi d’indiquer si ses propositionsrsont supérieures, inférieures ou égales à x. Évidemment, il n’a pas de droit de tricher. Il indique au joueur toutes les propositionsr qu’il a faites, dans l’ordre chronologique.REMARQUE:penser à la fonctionappend()

Q - 4:Construire un programmeDevin(x,n). Effectuer un test pour x=4et n=10

Q - 5:Déterminer le nombre de coups nécessaires à votre programme pour déterminer x, pour n= 10mavec m∈~1,8.

>>>

Ok en 3 coups pour x= 4 et n= 10 Ok en 6 coups pour x= 4 et n= 100 Ok en 8 coups pour x= 4 et n= 1000 Ok en 12 coups pour x= 4 et n= 10000 Ok en 16 coups pour x= 4 et n= 100000 Ok en 18 coups pour x= 4 et n= 1000000 Ok en 22 coups pour x= 4 et n= 10000000 Ok en 23 coups pour x= 4 et n= 100000000

REMARQUE: pour que le programme converge rapidement vers la valeur, il faut faire comme les 6ème qui jouent à ce jeu en récréation., i.e, faire varier les bornes d’un intervalle dont on prend une valeur centrale. . .

On propose dans la partie suivante de faire de même mais pour résoudre une équation du type f(x)=0.

3 Résoudre f (x) = 0

On propose deux algorithmes pour résoudre l’équation f(x)=0 où

PROBLÈME: Soit f, une fonction continue et monotone sur un intervalle [a,b] et pour lequel, f(a).f(b) ≤ 0. D’après le théorème des valeurs intermédiaires, par continuité, il existex0∈[a,b] tel que f(x0)=0. On propose deux algorithmes pour trouver une valeur approchée dex0:

3.1 Présentation de deux méthodes de résolution

3.1.1 Méthode par Dichotomie

On posea0=aetb0. Soitc0le milieu de [a0,b0].

• si f(c0)=0, on s’arrête là, on a la solution de l’équation

• si f(a0).f(c0)<0 alorsx0se trouve dans l’intervalle ]a0,c0[. On posea1=a0 et b1=c0

• sinon, c’est f(c0) et f(b0) qui sont de signes contraires. On cherche alorsx0dans l’intervalle ]c0,b0ce qui conduit à poser :a1=c0 et b1=b0

et on recommence. . .

LYCÉECARNOT(DIJON) 2/4 INFO ENMPSI & PCSI - TP1 - ALGO-PROG

(3)

Méthode par Dichotomie

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

-0.3 -0.2 -0.1 0 0.1 0.2 0.3

f(x)=e0(x)

a1=a2=a3

b1 c1=b2

c2=b3=b4

c3=a4

x

3.1.2 Méthode de Newton

On part d’une première valeurx0et on effectue un développement limité de f à l’ordre 1 : f(x1)= f(x0)+ f0(x0).(x1−x0)+o(x1−x0)

On suppose alors quex1est solution du problème. On négligeo(x1−x0) et on en déduit :

x1= x0− f(x0) f0(x0) On recommence avec le nouveau candidat jusqu’à convergence.

Graphiquement, cela revient à prendre la tangente à la courbe enx0et se déplacer le long de cette tangente jusqu’à croiser l’axe des abscisses enx1. Si la fonction est suffisammentbelle, au voisinage d’un zéro, la convergence est quadratique.

Méthode de Newton

0 0.1 0.2 0.3 0.4

-0.1 0 0.1 0.2 0.3 0.4 0.5

f(x)=e0(x)

x0 x1 x2 x3

x

3.2 Questions

Q - 6:Construire une fonction Dicho(f,a,b,eps)permettant d’approcher une (ou la) solution du pro- blème f(x)=0sur[a,b]avec une toléranceepssur l’image.

Q - 7 :Construire une fonctionNewton(f,fp,x0,eps)permettant d’approcher une (ou la) solution du problème f(x)=0en partant de x0avec une toléranceepssur l’image.

Q - 8:Comparer le nombre d’itérations nécessaires pour résoudre f(x)=x2−2, sur l’intervalle[0,100]ou en partant de x0=100, avec une toléranceε=10−8.

LYCÉECARNOT(DIJON) 3/4 INFO ENMPSI & PCSI - TP1 - ALGO-PROG

(4)

4. CALCUL DUPGCDDE DEUX NOMBRES

On cherche à observer la vitesse de convergence des deux algorithmes précédents en fonction du nombre d’itérations.

Q - 9:Modifier les deux fonctions précédentes pour obtenir, en fonction du nombre d’itérations n, la valeur absolue de l’erreurε(n)entre la valeur du candidat (ci pour la dichotomie et xi pour Newton) à l’itération n et la valeur exacte de la solution du problème (√

2pour le problème précédent).

Q - 10:Tracer|ε(n)|etln (|ε(n)|)en fonction de n. Si une droite apparaît, faire une régression pour identifier la relation.

Méthode par Dichotomie Méthode de Newton

Algorithm 1Dichotomie

entrée: f une fonction, a et b les bornes et ε la tolérance

résultat:xtel que|f(x)| ≤ε

1: ai,bi,ci←a,b,(a+b)/2

2: fa,fc←f(ai),f(ci)

3: tant queabs(fc)>εfaire

4: sifa. fc≤0alors

5: bi←ci

6: sinon

7: ai,fa←ci,fc

8: fin si

9: ci←(ai+bi)/2

10: fc←f(ci)

11: fin tant que

12: renvoi: ci

Algorithm 2Newton

entrée:f et fp, une fonction et sa dérivée, x0 une valeur de départ etε, la tolérance

résultat:xtel que|f(x)| ≤ε

1: xi←x0

2: fx←f(xi)

3: tant queabs(fx)>εfaire

4: fpx←fp(xi)

5: sifpx=0alors

6: break

7: fin si

8: xi←xi-fx/fpx

9: fx←f(xi)

10: fin tant que

11: renvoi: xi

4 Calcul du PGCD de deux nombres

PROBLÈME:Déterminer le Plus Grand Diviseur Commun (PGCD) de deux entiers dont on ne connaît pas la factorisation.

Algorithm 3Fonction PGCD PGCD(a,b)

1: u←a

2: v←b

3: tant que u,vfaire

4: si u > valors

5: u←u-v

6: sinon

7: v←v-u

8: fin si

9: fin tant que renvoi: u

Algorithm 4Fonction PGCD : algo- rithme d’Euclide

Euclide_PGCD(a,b)

1: répéter

2: r←a mod b

3: a←b

4: b←r

5: jusqu’àr == 0 renvoi: a

Algorithm 5Fonction PGCD : algo- rithme d’Euclide récursif

Euclide_PGCD_recursif(a,b)

1: sib==0alors

2: renvoi: a

3: sinon

4: renvoi:

Euclide_PGCD_recursif(b,a mod b)

5: fin si renvoi: a

Q - 11:Construire trois fonctionsPGCD(a,b),Euclide_(a,b)etEuclide_recursif(a,b)à partir des 3 algorithmes vus en cours.

Q - 12:Comparer le nombre d’itérations nécessaires à chaque méthode pour déterminer le PGCD de deux nombres. Prendre des valeurs assez élevées. . .

LYCÉECARNOT(DIJON) 4/4 INFO ENMPSI & PCSI - TP1 - ALGO-PROG

Références

Documents relatifs

Dans un premier temps, on r´ epondra aux questions ` a l’´ ecrit puis pour v´ erifier que nos algorithmes sont bien ´ ecrits, on les programmera sur machine.. Exercice

BCPST R´ esolution de syst` emes et inversions de matrice 2016-2017 Le but de ce TP est de finir le dernier TP en ´ ecrivant l’ensemble des algorithmes sur les matrices vus dans

[r]

Schott indique (dans [2]) qu'un résultat de Nagell permet d'établir que le seul carré de nombre premier qui est brésilien est 11^2.. Il me paraît difficile d'avoir accès

Un entier naturel n est dit « narcissique » si la somme des puissances n-ièmes des n premiers nombres entiers naturels est divisible par n?. Quels sont les

[r]

-Si Hippolyte prend un ou plusieurs chiffres impairs au cours de la partie, l’utilisation de tous les chiffres impairs sera encore plus rapide et avec les chiffres pairs restants

On associe une valeur appelée gain à chaque résultat de l’expérience : Si le lancer est gagnant le gain est 2 ; si le lancer est perdant le gain est −14. (a) Reproduire le