100% ont trouvé ce document utile (1 vote)
211 vues3 pages

TP Python Numpy

Transféré par

Abdelghani Ghazdali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
211 vues3 pages

TP Python Numpy

Transféré par

Abdelghani Ghazdali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 3

TP2 : Numpy et entrées/sorties

I Numpy
Consulter la documentation de Numpy (rubrique N-dimensional array) afin de répondre
aux exercices suivants.

Exercice 1 :
Créer un ndarray de taille 10 dont tous les éléments sont nuls sauf la cinquième valeur
qui vaut 1.

Exercice 2 :
Créer un ndarray contenant les entiers de 50 à 99.

Exercice 3 :
Inverser le ndarray vecteur des 100 premiers nombres entiers.

Exercice 4 :
Créer un ndarray de taille 10x10 contenant des valeurs aléatoires tirées uniformément
et trouver les valeurs minimales et maximales.

Exercice 5 :
Créer l’array suivant par la programmation (sans rentrer les données à la main !)

1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
Créer ensuite un autre array issu du premier contenant les lignes 3 et 4.

II Trois problèmes

Exercice 6 : Suite de Syracuse


On considère un nombre entier naturel non nul u0 . S’il est pair, on le divise par 2 ; s’il
est impair, on le multiplie par 3 et on ajoute 1. On obtient une suite (un )n∈N définie par
( un
si un pair ;
u0 ∈ N, un+1 = 2
3un + 1 si un impair.
1. Écrire un algorithme qui demande en entrée la valeur u0 et un nombre entier n, puis
calcule et retourne un ndarray de dimension 1 composé des termes u0 , u1 , . . . , un .
La conjecture de Syracuse affirme que pour tout u0 il existe un indice n tel que un = 1.
2. Reprendre l’algorithme précédent pour créer une fonction vol ayant pour para-
mètre a qui retourne l’array L composé de tous les termes u0 , u1 , . . . , un , où u0 = a
et n est le premier entier tel que un = 1.
La liste vol(a) est le vol de la suite. Le temps de vol est le plus petit entier n tel que
un = 1. L’altitude est le plus grand terme de L.
3. Écrire une fonction nommée Tvol ayant pour paramètre a qui retourne pour la
suite avec u0 = a, son vol et son temps de vol.
4. Représenter graphiquement le nuage de points (k, uk ) pour k allant de 0 jusqu’au
temps de vol.
5. Déterminer le plus grand temps de vol de Sn pour n ≤ 100000.

Exercice 7 : Loi uniforme


Les premiers algorithmes de simulation de la loi uniforme étaient basés sur la congruence
(Lehmer, 1950). Le principe est le suivant :
— Utiliser trois paramètres entiers a, c et m et une valeur initiale y0 (appelée seed) ;
— Créer une suite d’entiers

yn+1 = (ayn + c) mod m

compris entre 0 et m ;
— Ramener les valeurs entre 0 et 1 : xn = yn /m.

1. Écrire une fonction Python ayant pour paramètres N ∈ N, a, c, m et y0 , qui


renvoie la liste des N premières réalisations de yi et de xi .
2. La tester avec a = 13, c = 0, m = 31 et y0 = 1. Tracer le nuage de points (xi , xi+1 ),
i = 0, . . . , N − 1. Que remarque-t-on ?

Dans les années 60, sur IBM, Scientific Subroutine Package (SSP) utilisait a = 65539,
c = 0, et m = 232 .
3. Tracer le nuage de points (xi , xi+1 ), i = 0, . . . , N − 1 et la fonction de répartition
empirique des xi . Que pensez-vous de la qualité de la simulation de la loi uniforme ?
4. Vérifier que xk+2 − 6xk+1 + 9xk sont tous entiers. Ainsi

−6 < xk+2 − 6xk+1 + 9xk < 10.

Quel problème cela implique-t-il pour les simulations ?


5. Pour visualiser cet effet, recopier le code
from m p l _ t o o l k i t s . mplot3d import Axes3D
f i g=p l t . f i g u r e ( 2 )
ax = f i g . add_subplot ( 1 1 1 , p r o j e c t i o n= ’ 3d ’ , e l e v = 1 0 , azim =
5 8)
ax . s c a t t e r ( x [ : N−2] , x [ 1 : N−1] , x [ 2 : ] )
À partir des années 1990, l’algorithme appelé “standard minimal” choisit : a = 75 =
16807, c = 0, m = 231 − 1 = 2147483647.
6. Reprendre la question 3 avec ces chiffres.
7. Utiliser la fonction kstest du module scipy.stats pour tester si les simulations
suivent bien la loi uniforme.

Exercice 8 : Matrice et image


Le module numpy permet de gérer les matrices via numpy.array.
 
−2 5
1. Définir la matrice T = .
9 0
2. Calculer sa transposée, son déterminant et son inverse.
3. Le code suivant permet de récupérer une image
from s c i p y import misc
Image=misc . a s c e n t ( )

Quelle est la taille de cette image (utiliser shape) ?


4. Visualiser la avec la commande imshow de matplotlib.pyplot.
5. Calculer la transposée de Image et visualiser la.

Vous aimerez peut-être aussi