Informatique 2010-2011 : TP Maple 2 MPSI B Hoche
Exponentiation rapide
L’algorithme d’exponentiation rapidepermet de calculerae oùaet esont des nombres naturels en effectuant moins (beaucoup moins !) deemultiplications.
Le premier cas est celui où l’exposanteest une puissance de 2. Pour calculer
xm=a(2m)
on peut utiliser seulementm(au lieu de 2m) multiplications en remarquant que
x0=a, xm+1=x2m
Dans le cas général, on peut utiliser la décomposition deeen base 2. Les coefficients sont 0 ou 1 et seuls les 1 "comptent" dans le calcul de la puissance
e = c0+c121+c222+· · ·+cm2m ae = ac0ac121· · ·acm2m
ae = xi1xi2...
aveci1,i2 associés aux coefficients non nuls de la décomposition
1. Mettre en oeuvre le principe précédent pour calculer ae sur un exemple en décomposant e en base 2 (par une succession d’opérations sans chercher à former un programme). Vérifier en calculant directement.
2. On modifie légèrement l’algorithme de décomposition deeen base 2 en cal- culant toutes les puissances dea dont l’exposant est une puissance de 2 et en multipliant ces nombres lorsque c’est nécessaire. Ce nouvel algorithme est présenté dans le diagramme de la figure1 que vous devez traduire dans la syntaxe Maple.
Surjectivité et injectivité
Dans tout l’exercice, n, p, Asont des variables (globales si cette notion a été traitée) qui désignent respectivement deux entiers naturels non nuls et un tableau indexé de 1 à la valeur den.
On modélise une fonctionfde{1,2,· · · , n}vers{1,2,· · · , p}à l’aide du tableau Aen associant , pour toutientre 1 etn, la valeurf(i) à la cléi.
Vous devez former le diagramme et écrire le code Maple qui permet d’exécuter les tâches précisées. Si la syntaxe des procédures a été vue en TD, définir les procédures dont le nom est indiqué au début de la question. Tester sur des exemples de votre choix.
Fig.1 – exponentiation rapide
1. est_image(x). Renvoyer vrai si x est une image de la fonction f et faux sinon.
2. nbantecedent(x)Renvoyer le nombre d’antécédents dexpour la fonctionf lorsquexest une image et renvoyer 0 sixn’est pas une image.
3. est_surjective()Renvoyer vrai sif est surjective et faux sinon.
4. est_injective()Renvoyer vrai sif est injective et faux sinon.
5. reciproque() Renvoyer un tableau Bqui, lorsque f est bijective, modélise la bijection réciproquef−1.
Cette création est mise à disposition selon le Contrat
Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
1 Rémy Nicolai TP1002