• 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

É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 à

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 ,

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

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

— 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