Algorithmes élémentaires - Page professionnelle de Benjamin Favetto

TP MAPLE no1
Algorithmes ´el´ementaires
Benjamin Favetto
Vincent Mercat
28 novembre 2008
1 Introduction
Le but de ce premier TP est de se familiariser avec le vocabulaire et les notions de base de la pens´ee
algorithmique. Pour cela, nous disposons de la machine la plus puissante du monde : une feuille et un
crayon ! Dans cette s´erie d’exercices, il vous est en effet demand´e de r´ediger dans un langage compr´e-
hensible par votre voisin plusieurs algorithmes simples mettant en jeu des notions d´ej`a rencontr´ees dans
votre pass´e math´ematique.
Selon Wikipedia, on dispose de la d´efinition suivante :
Un algorithme est un moyen pour un humain de pr´esenter la r´esolution par calcul d’un pro-
bl`eme `a une autre personne physique (un autre humain) ou virtuelle (un calculateur). En effet,
un algorithme est un ´enonc´e dans un langage bien d´efini d’une suite d’op´erations permettant
de r´esoudre par calcul un probl`eme. [...]
Rappels : On ne cherchera pas `a savoir – dans un premier temps – comment l’ordinateur peut com-
prendre un tel langage. On se bornera `a manipuler des variables exactement comme en math´ematiques,
avec, par exemple l’expression “soit x= 5” : on a affect´e la valeur 5 `a x, et on peut l’utiliser par la suite
dans un calcul, par exemple “3.x + 2 = 17”. On utilisera aussi deux types de boucles afin d’effectuer un
calcul de fa¸con it´erative :
Les boucles inconditionnelles, qui effectuent un calcul un nombre d´etermin´e de fois (par exemple,
la multiplication d’un entier npar 3 est une r´ep´etition d’additions : n+n+n= 3 ×n, c’est une
boucle inconditionnelle tr`es simple),
Les boucles conditionnelles, qui ex´ecutent un calcul tant qu’une condition est vraie (par exemple,
´etant donn´e un entier n, on peut d´ecider de lui soustraire 1 tant que le r´esultat est positif, mais le
nombre de soustractions d´epend de n).
Remarque : La r´edaction d’un algorithme ne doit pas s’effectuer de fa¸con lin´eaire, mais plutˆot en
respectant, comme dans toute bonne r´edaction, un plan en trois parties : on doit pour cela clairement
identifier les donn´ees que l’on doit traiter, la fa¸con de les traiter et ce que l’algorithme doit renvoyer. Pour
cela, on pourra m´editer, puis compl´eter, le squelette correspondant au deuxi`eme exemple ci-dessus :
Initialisation soustract(n)
un
Corps de l’algo.
tant que . . . faire
u. . .
fin faire
R´esultat retourner . . .
1
2 Exercice 1
On d´efinit pour nNla quantit´e factorielle n par :
0! = 1
n! =
n
Y
k=1
kpour n1
et l’on remarque imm´ediatement que n! = n×(n1)!.
R´ediger un algorithme bas´e sur une boucle inconditionnelle qui prend en entr´ee un entier net qui calcule
n!. On prˆetera attention
au choix des variables
`a leur initialisation
`a la formulation du calcul que doit effectuer une ´etape de la boucle
aux valeurs des variables `a la fin de l’algorithme.
3 Exercice 2
R´ediger un algorithme permettant de calculer
n
X
k=1
1,
n
X
k=1
k ,
n
X
k=1
k2
sur le mod`ele de l’exercice pr´ec´edent.
4 Exercice 3
Etant donn´es deux entiers naturels aet b, avec b6= 0, on appelle quotient et reste de la division
euclidienne de apar bles entiers naturels qet rtels que
a=bq +r
avec 0 r < b. Nous disposons de la proposition suivante :
Proposition : Pour a, b donn´es, le couple (q, r) existe et est unique.
Le but de cet exercice est de r´ediger un algorithme permettant le calcul du couple (q, r). Pour cela, on
se basera sur une boucle conditionnelle et l’on fera attention `a
la valeur initiale des diff´erentes quantit´es du probl`eme,
l’´etape de calcul que l’on doit r´ep´eter dans l’algorithme (Indication : proc´eder par soustraction),
la condition intervenant dans la boucle (Indication : s’assurer de la positivit´e du reste).
Question subsidiaire : prouver l’unicit´e dans la proposition pr´ec´edente.
5 Exercice 4
Soit nNun entier, on souhaite ´ecrire un algorithme permettant de calculer le n-`eme terme unde
la suite de Fibonacci, d´efinie par :
u0= 0 , u1= 1,
un+2 =un+1 +un.
Pour cela, on prˆetera attention `a l’actualisation des valeurs des diff´erentes variables lorsqu’on passe du
calcul de un`a un+1. On se basera sur une boucle inconditionnelle.
2
6 Exercice 5
On d´efinit pour n0 la suite (un) par u0=Kentier naturel quelconque et :
un+1 =un
2si unest pair
3un+ 1 si unest impair
(une telle suite s’appelle suite de Syracuse, voir http://fr.wikipedia.org/wiki/Conjecture_de_Syracuse
pour plus d’informations).
R´ediger un algorithme permettant le calcul, ´etant donn´e un entier naturel n, du n-`eme terme de cette
suite. Pour cela, on r´efl´echira
aux variables n´ecessaires et `a leur initialisation,
`a la strat´egie `a adopter (boucle conditionnelle ou inconditionnelle ?),
au test de la condition.
7 Exercice 6
Le but de cet exercice est de r´ediger un algorithme permettant de trouver une valeur d’annulation
d’une fonction. On s’appuiera sur le r´esultat suivant :
Proposition : Soit fune fonction continue de [a, b] `a valeurs r´eelles, strictement croissante, et telle
que f(a)f(b)<0. Alors il existe un unique x0[a, b] tel que f(x0) = 0.
Pour un grand nombre de fonctions, il n’est pas possible de trouver une valeur explicite de x0, et
l’on recourt souvent `a l’ordinateur pour fournir une valeur num´erique approch´ee. On souhaite pour cela
proc´eder par dichotomie, c’est `a dire
On sait d’apr`es la proposition que x0[a, b],
On coupe l’intervalle [a, b] en deux sous-intervalles de mˆeme longueur,
Si f(a+b
2)>0 alors x0appartient `a l’intervalle de gauche, sinon x0appartient `a l’intervalle de
droite,
On recommence le proc´ed´e jusqu’`a obtenir un intervalle contenant x0de longueur attendue (i.e.
conforme `a la pr´ecision que l’on veut pour l’approximation num´erique).
Afin de mettre en oeuvre cette m´ethode, on commencera par faire un dessin, puis on effectuera `a la
main quelques it´erations du proc´ed´e. On r´efl´echira notemment `a la longueur de l’intervalle contenant x0
au bout de kit´erations. Ensuite seulement, on r´efl´echira :
Aux variables intervenant dans le probl`eme,
Au choix de la strat´egie (boucle conditionnelle ou inconditionnelle ?),
Au passage d’une ´etape `a l’´etape suivante,
A ce que doit retourner l’algorithme.
8 Un peu de Maple ...
Reprendre les exercices avec Maple, une fois les algorithmes ´elabor´es sur papier. Pour cela, on n’h´esitera
pas `a se servir abondemment de l’aide de Maple . . .Voici quelques ´el´ements de syntaxe :
l’affectation d’une variable se fait via l’op´erateur :=, par exemple x:=5;affecte 5 `a x.
la boucle inconditionnelle for admet la syntaxe suivante
for ifrom 1to ndo . . . end ;
la boucle conditionnelle while admet la syntaxe suivante
while . . . do . . . end ;
. . .et surtout, ne pas oublier ;en fin de ligne !
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !