• Aucun résultat trouvé

2k nk r ← 1 pour i de k à 0 faire r ← r*r si nk ==1 alors r ← r*a fsi fpour 2- Fibonacci La suite de Fibonacci est définie par : F0=0

N/A
N/A
Protected

Academic year: 2022

Partager "2k nk r ← 1 pour i de k à 0 faire r ← r*r si nk ==1 alors r ← r*a fsi fpour 2- Fibonacci La suite de Fibonacci est définie par : F0=0"

Copied!
3
0
0

Texte intégral

(1)

Module Info31 – L2 Sciences & Techniques Université de Bourgogne Dominique Michelucci

Document de travail pour le TD2 Exercices de base

1- Puissance rapide

Construisez un algorithme de calcul de puissance rapide sur les entiers :

- la méthode de réduction consiste à remplacer n2k par (n2 )k et n2k+1 par n*(n2 )k

- indiquez de façon précise les cas d'arrêt et précisez pourquoi les appels récursifs vont se terminer.

Donnez les bases de ce même algorithme pour la puissance rapide de matrices.

Remarque- pour calculer une puissance d'entiers an il est possible d'écrire la puissance, n, en binaire sous la forme : 20 n0 + 21 n1 + 22 n2 + 23 n3 + … + 2k nk et d'utiliser l'algorithme suivant :

// calcul de an avec n=20 n0 + 21 n1 + 22 n2 + 23 n3 + … + 2k nk

r ← 1

pour i de k à 0 faire r ← r*r si nk ==1 alors r ← r*a

fsi fpour

2- Fibonacci

La suite de Fibonacci est définie par : F0=0; F1=1;

Fn=Fn−1+Fn−2, pour n>1 a) Proposez un calcul récursif simple de cette suite.

b) Construisez l'arbre des premiers appels récursifs (jusqu'à n valant 4 ou 5) et calculez le nombre d'appels sur 0 et 1. Vérifiez que pour toute valeur de n, le nombre d'appels de F1 est égal à la valeur de la suite de Fibonacci sur n.

c) Pour obtenir une certaine efficacité, on veut conserver et réutiliser des résultats intermédiaires. L'idée est de passer à du calcul matriciel, comme illustré ci-contre.

Quelle matrice doit être utilisée ?

Remarque Le calcul matriciel de (Fn, Fn-1) sera donc fait comme indiqué ci-contre : le calcul de la suite de Fibonacci consiste à calculer une puissance de matrice.

Il est possible d'utiliser une méthode de calcul de puissance rapide, comme celle vue en question 1.

3- Suites

Ecrivez un calcul récursif de la suite de Thue-Morse qui est définie par :

T0=0 T2n=Tn

T2n+1=1-Tn

Remarque La suite de Thue-Morse, permet de dessiner une courbe de Von Koch en n segments (avec une boucle « pour i de 1 à n » dans laquelle on avance d'une unité si la valeur Ti de la suite est 0 et en tournant à gauche de 60 degrés si la valeur Ti de la suite est 1).

TD2-1- ( Fn , Fn-1 ) = ( Fn-1 , Fn-2 )

? ?

? ?

( Fn , Fn-1 ) = ( Fn-2 , Fn-3 ) 2

? ?

? ?

( Fn , Fn-1 ) = ( Fn-3 , Fn-4 ) 3

? ?

? ?

( Fn , Fn-1 ) = ( F1 , F0 )

n-1

? ?

? ?

. . .

(2)

Module Info31 – L2 Sciences & Techniques Université de Bourgogne Dominique Michelucci

Ecrivez un calcul récursif de la fonction HOTPO1 qui est définie pour tout entier n>0 par :

h(n) : selon

cas n=1 : 1

cas n pair : h (n/2)

cas n >1 et impair : h (3n + 1) fcas

D'après Denis Lugiez, université de Marseille- Proposez un algorithme permettant, pour un entier n

donné, d'afficher :

- les résultats des calculs successifs h(n), h2(n), h 3(n), … jusqu'à obtenir 1,

- le nombre d'itérations nécessaires pour obtenir 1 en partant de n, pour n variant entre 1 et 10000.

4- Recherche d'un élément dans un tableau

Ecrivez l'algorithme de recherche du ke élément d'un tableau en adaptant la méthode du tri rapide. Il n'est pas demandé de trier le tableau.

Autres schémas récursifs 5- Cascade des appels récursifs

Ecrivez deux calculs récursifs qui affichent un par un, respectivement à l'endroit et à l'envers, les chiffres constituant un entier donné.

Par exemple pour 23657, vous devez afficher 2 3 6 5 7 et 7 5 6 3 2.

Vous disposez des opérations % et / pour accéder au dernier chiffre d'un entier (reste de la division entière par 10) et au début d'un entier (division entière par 10).

6- Fonction d'Ackerman

La fonction d'Ackerman est définie par :

A(a,b)= si a=0 alors b+1

si a>0 et b=0 alors A(a-1,1)

si a>0 et b>0 alors A(a-1,A(a,b-1))

Attention : ne pas lancer le calcul de cette fonction pour des valeurs élevées de a et b (a<=2 semble être un choix raisonnable). Vous trouverez une table des premières valeurs de la fonction d'Ackerman à l'adresse http://www-users.cs.york.ac.uk/susan/cyc/a/ackermnn.htm. En TP, vous pourrez utiliser en Java les « bigInteger ».

7- Récursivité croisée

D'après Patrick Cégielski, université Paris Est Créteil & LACL- Ecrivez le calcul de la suite un sachant que un, vn et wn sont définies pour tout entier n≥0 par :

– u0 = 1 et un+1 = 2un + 3vn + wn

– v0 = 2 et vn+1 = un + vn + 2wn

– w0 = 3 et wn+1 = un + 4vn + wn

Annexe- complément au TP sur les fractales Fractale de Mandelbrot

Vocabulaire nombre complexe (somme, produit, module).

La fonction f(z) =z2+c est définie sur les nombres complexes et on peut démontrer que si le module de z est supérieur strictement à 2, alors le module de f n(z) tend vers +∞.

Pour dessiner la fractale de Mandelbrot, vous devez utiliser la forme suivante de cette propriété : si il

1 Lothar Collatz, 1937 : quelque soit la valeur de départ, cette suite atteint la valeur 1. Cette conjecture est aussi connue sous le nom de problème de Syracuse ... et sous le sigle HOTPO (Half Or Triple Plus One). Vous trouverez quelques courbes de « hotpo » à l'adresse http://mathematicalgarden.wordpress.com/2009/01/04/the-syracuse-problem/

TD2-2-

(3)

Module Info31 – L2 Sciences & Techniques Université de Bourgogne Dominique Michelucci

existe k, tel que f k(z)> 2 alors il y a divergence.

Procédez de la façon suivante :

– le nombre complexe c est défini par les réels x et y, – choisir un nombre maximal n d'itérations,

– calculer f (z), f 2(z), f 3(z), … f n(z)

– si le module de f n(z) est inférieur à 2 alors on suppose qu'il n'y aura pas divergence,

– et on trace le point de coordonnées (x, y) … en bleu sur la figure ci-contre.

Les bornes du calcul de f n(z) étant petites (notées xmin et xmax, ymin et ymax), on utilise un facteur de grossissement pour l'affichage.

Etant données les valeurs xmin, xmax, ymin, ymax, ainsi que le facteur de grossissement et le nombre maximum d'itérations, tracez la fractale de Mandelbrot.

// dans tout l'algorithme, pour les calculs sur les complexes // le suffixe r indique l'axe horizontal

// le suffixe i indique l'axe vertical

// définir deux constantes pour les largeur et hauteur de l'écran graphique largeur ←

hauteur ←

// définir les dimensions de la fenêtre de calcul xmin ←

xmax ← ymin ← ymax ←

// définir le nombre maximum d'itérations et la valeur limite de calcul iters ←

limite ←

// initialisation du complexe c cr ←

ci ←

// taille du pixel sur l'écran graphique pixLarg ←(xmax-xmin)/largeur

pixLong ←(ymax-ymin)/hauteur // calculs

pour x de 0 à hauteur

zr0 ← xmin + x * pixLarg pour y de 0 à largeur

zi0 ← ymin + y*pixLong

zr ← zr0 // initialisation du complexe z zi ← zi0

modr ← zr*zr // calcul du module de z modi ← zi*zi

nbi ← 0 // compteur du nombre d'itérations effectuées tant que nbi < iters ET modr+modi < limite

zi ← 2*zr*zi + ci zr ← modr-modi +cr modr ← zr*zr

modi ← zi*zi nbi++

ftq

si nbi==iters alors // dessiner

tracer le point (x,y) fsi

fpour fpour

TD2-3- xmin=-2.0 xmax=1.0 ymin=-1.0 ymax=1.0 nbmax=100 facteur=250

Références

Documents relatifs

I;i: Rate Constan- ts for Proton Transfer Reactions of Aqueous Alkylaninoni~m .Ions ·... ampl e,

Problème : Résolution d’équations différentielles L’objectif de ce problème consiste en la résolution de deux équations différentielles.. Partie I : Calcul de primitives

This non-negative functional tF was shown to be lower semi-continuous on the set of Lipschitz functions with the 1: I topology and hence could be extended to

Si nous nous reportons aux r~sultats contenus dans notre travail relatif aux formes quadrilin6aires, nous verrons ais~ment que la condition A -~ o, entraine

◊ remarque : l'inductance est plus grande avec le noyau de fer feuilleté (aimantation induite) ; elle est un peu plus faible avec un noyau de métal non feuilleté (champ magnétique

• Pour le calcul des incertitudes sur cette relation théorique, même si on a utilisé des résistances théorique- ment égales, il faut tenir compte du fait qu'on a utilisé

parfaits fonc- tionnant en régime linéaire. L'ensemble, inséré dans un circuit par l'intermédiaire des deux bornes A et B, se comporte comme un dipôle soumis à une tension

[r]