• Aucun résultat trouvé

TD - RECURSIVITE Exponentiation rapide

N/A
N/A
Protected

Academic year: 2022

Partager "TD - RECURSIVITE Exponentiation rapide "

Copied!
2
0
0

Texte intégral

(1)

Fénelon Sainte-Marie 2015-2016

PC/PSI [1-2] Marc Lichtenberg

TD - RECURSIVITE Exponentiation rapide

Introduction et objectifs

Dans ce TD consacré à la récursivité, on étudie un algorithme permettant le calcul de an où a est un réel non nul et n un entier naturel. L’objectif principal du TD est une étude, à la fois expérimentale et théorique, de la complexité de l’algorithme proposée.

Code Python

def fexpo(a,n):

if n == 0:

return 1 else:

q,r = divmod(n,2) prod = fexpo(a,q) prod = prod*prod if r == 1:

prod = prod * a return prod

Remarque : la fonction « divmod » reçoit comme arguments deux entiers, α et β , et renvoie deux autres entiers, q et r, correspondant respectivement au quotient et au reste de la division euclidienne de α par β.

1. Expliquez le principe de l’algorithme ayant conduit à cette fonction Python.

2. Quelles sont les principales étapes du calcul de 253 ? Combien de multiplications sont requises pour ce calcul ? Combien de multiplications sont requises dans le calcul

« naïf » ?

Correction de l’algorithme

3. Une exécution de fexpo(a,n) se termine-t-elle toujours ?

4. Démontrer que l’exécution de fexpo(a,n) retourne bien la valeur de an (on démontrera le résultat en raisonnant par récurrence sur n).

(2)

TD – Récursivité / Sujet

Fénelon Sainte-Marie 2014-2015

PC/PSI [2-2] Marc Lichtenberg

Complexité de l’algorithme

Dans cette partie, on se donne un réel a non nul. On définit alors les suites M =

( )

Mn n` et

( )

n n

A= A ` où, pour tout entier naturel n, les entiers Mn et An correspondent respectivement au nombre total de multiplications et au nombre total d’appels à la fonction fexpo engendrés par un premier appel à cette fonction : fexpo(a,n) (cet appel initial ne sera donc pas comptabilisé au niveau de la suite A). Ces quantités ne dépendent pas de la valeur du réel a.

Pour l’étude expérimentale des suites M et A, on écrira un programme mettant en œuvre la fonction fexpo et incluant des variables globales m et c donnant, à la fin de l’exécution, le nombre total de multiplications effectuées et le nombre total d’appels à la fonction fexpo.

Etude de la suite M.

5. Effectuer une étude expérimentale de la monotonie de la suite M.

6. Soit n un entier naturel non nul.

On écrit n=2q+r la division euclidienne de n par 2 et on définit la suite

( )

un n∈`*

par : ∀ ∈n `*,Mn =Mq+un.

Préciser un en fonction de la parité de n.

7. Pour tout entier naturel p, calculer M2p, M2p1 et M2p+1. Que peut-on en conclure sur la monotonie de M ?

8. Soit n un entier naturel non nul.

Montrer qu’il existe un unique entier naturel p tel que : 2p ≤ <n 2p+1. Préciser p.

9. A l’aide d’une récurrence forte, montrer alors que l’on a : p+ ≤2 Mn2

(

p+1

)

. 10. Déduire de la question précédente que l’on a : Mn =O ln

( )

n .

Etude de la suite A.

11. Effectuer une étude expérimentale de la monotonie de la suite A.

12. Pour n entier naturel non nul, on note n=2q+r la division euclidienne de n par 2.

Après avoir remarqué que l’on a An =Aq+1, montrer, à l’aide d’une récurrence forte, que la suite A est croissante.

13. Pour tout entier naturel p, calculer

2p

A .

14. A l’aide de la question 8, déterminer un encadrement puis un équivalent de An.

Références

Documents relatifs

— Pour mesurer le temps t n mis par l’algorithme A sur les entr´ ees de taille n dans le pire cas, il peut ˆ etre utile de tirer au hasard un certain nombre d’entr´ ees de taille

Ecrire une procédure Horner1(P,x) qui calcule P(x) de façon récursive par la méthode de Hörner. Etablir d'abord la relation de récurrence entre les s i puis écrire la procédure

En pr´ eciser la nature et la

• Il faut coder les caractères (chiffres, lettres et autres symboles) sous un format qui peut être reconnu par tous les ordinateurs. – ASCII

En déduire, la surface maximale du triangle rectangle AHC ainsi que la valeur de x pour laquelle cette surface est maximale.. D’après la

2. Dans le cadre d'une recherche, un technicien supérieur se propose de déterminer à partir de quelle année l'Union Européenne atteindra son objectif. Pour tout entier naturel ,

Écrivez une fonction qui vérifie qu’une liste passée en paramètre est triée dans l’ordre croissant ou décroissant (on renvoie False si elle est “désordonnée”, True

Dans tout l’exercice, n, p, A sont 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 à