[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
34 vues12 pages

TP1 Python

Ce document présente plusieurs exercices d'initiation à Python avec des exemples de manipulation de vecteurs, matrices et courbes. Il montre comment importer des modules, définir et manipuler des vecteurs et matrices numpy, et tracer des courbes avec matplotlib.

Transféré par

khawlasalim003
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
0% ont trouvé ce document utile (0 vote)
34 vues12 pages

TP1 Python

Ce document présente plusieurs exercices d'initiation à Python avec des exemples de manipulation de vecteurs, matrices et courbes. Il montre comment importer des modules, définir et manipuler des vecteurs et matrices numpy, et tracer des courbes avec matplotlib.

Transféré par

khawlasalim003
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/ 12

TP1

March 14, 2022

Initiation à Python
March 14, 2022

1 1 TP1: Exercices d’initiation à Python


il y a différents types de modules :
• ceux qui sont inclus dans la version de Python comme random ou math,
• ceux que l’on peut rajouter comme numpy ou matplotlib,
• et ceux que l’on peut faire soi-même (il s’agit dans les cas simples d’un fichier Python con-
tenant un ensemble de fonctions).

il y a deux façons pour importer un module. Voyons cela en prenant comme exemple
le module math.

la première façon
[7]: from math import cos
cos(0)

[7]: 1.0

[8]: sin(0)

---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-8-afbcc558f753> in <module>
----> 1 sin(0)

NameError: name 'sin' is not defined

Le message d’erreur signifie simplement que l’on n’a pas importé la fonction sin. Donc si on
recommence

[10]: from math import cos, sin

[11]: sin(0)

1
[11]: 0.0

Et si on veut que toutes les fonctions du module soient importées, on peut procéder comme on l’a
fait plus haut en utilisant l’étoile *.

[14]: from math import *


sqrt(4)

[14]: 2.0

la deuxième façon
[15]: import math
math.sqrt(4)

[15]: 2.0

Bien que cette deuxième méthode paraisse plus lourde à écrire, elle peut avoir certains avantages

1.1 1.1 Exercice1 (Vecteurs et Courbes)


a) Définir la variable x = π4 , et calculer y1 = sin(x) et y2 = cos(x), puis z = tan(x) à
partir de y1 et y2 .
[5]: import math # C’est un module qui permet d’avoir accès aux fonctions␣
,→mathématiques

x=math.pi/4
y1=math.sin(x)
print("y1=",y1)
y2=math.cos(x)
print("y2=",y2)
z=y1/y2
print("z =",z)

y1= 0.7071067811865476
y2= 0.7071067811865476
z = 1.0

b) Définir la variable x = [ π6 , π4 , π3 ], et calculer y1 = sin(x) et y2 = cos(x).

Calculer alors z = tan(x) en utilisant exclusivement les vecteurs y1 et y2 précédents.


[16]: import numpy as np

[42]: x=[np.pi/6, np.pi/4, np.pi/3] # liste


x=np.array(x) # convertit la liste x en tableau np.array

print("x =",x)
y1=np.sin(x) # Calcule chaque y pour chaque valeur dans x.
print("y1=",y1)
y2=np.cos(x)

2
print("y2=",y2)
z=y1/y2
print("z =",z)

x = [0.52359878 0.78539816 1.04719755]


y1= [0.5 0.70710678 0.8660254 ]
y2= [0.8660254 0.70710678 0.5 ]
z = [0.57735027 1. 1.73205081]

c) Définir la variable x = [0 : 0.1 : 2]. Combien y a t-il de valeurs dans ce vecteur?


Affcher la courbe du sinus.
[68]: #np.arange(m,n) # [m, m+1, m+2, ..., n-1]
np.arange(2,7)

[68]: array([2, 3, 4, 5, 6])

[47]: x=np.arange(0,2*np.pi,0.1) # [0, 0.1, 0.2, ..., 2*pi]


x

[47]: array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2,
1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5,
2.6, 2.7, 2.8, 2.9, 3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8,
3.9, 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1,
5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6. , 6.1, 6.2])

[48]: len(x)

[48]: 63

[49]: import matplotlib.pyplot as plt # La bibliothèque matplotlib.pyplot permet de␣


,→produire des graphes.

[52]: y = np.sin(x) # Calcule chaque y pour chaque vqleur dans x.


plt.figure() # Ouverture d'une nouvelle fenêtre graphique
plt.plot(x, y) # Construction du graphe en mémoire
plt.title("Graphe de la fonction sin") # Titre du graphe
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.show() # Affichage du graphe

3
[53]: x1=np.arange(0, 2*np.pi, 0.7)
y1=np.sin(x1)
plt.figure()
plt.plot(x1,y1)

[53]: [<matplotlib.lines.Line2D at 0x274a79fa610>]

4
1.2 1.2 Exercice 2 (Manipulation de matrices)
a) Définir le vecteur V = [0, 1, 2, ..., 49, 50]. Quelle est la taille de ce vecteur?

Définir le vecteur W contenant le cinq premiers éléments de de V , et le vecteur X


contenant

les cinq premiers et les cinq derniers éléments.

Définir ensuite le vecteur Z = [0, 2, 4, ..., 48, 50] à partir de V .


[64]: V=np.arange(0,50+1)
V

[64]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,


17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])

[65]: len(V) # la taille de ce vecteur

[65]: 51

[55]: W=V[0:5]
W

[55]: array([0, 1, 2, 3, 4])

5
[57]: X=np.append(W, V[-5:])
X

[57]: array([ 0, 1, 2, 3, 4, 46, 47, 48, 49, 50])

[62]: Z=V[1:-1:2]

[63]: Z

[63]: array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33,
35, 37, 39, 41, 43, 45, 47, 49])

b) Définir la matrice
 
1 2 3 4 5 6 7 8 9 10
M =  11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30

Extraire de cette matrice la matrice


 
1 2
N =  11 12 
21 22

et la matrice  
8 9 10
P =  18 19 20 
28 29 30
puis la matrice ( )
3 7
Q=
23 27
Extraite de la matrice M la matrice R obtenue en prenant dans la matrice M une colonne sur 2 .

[74]: M=np.arange(1,31)
M

[74]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30])

[75]: M=M.reshape(3,10)
M

[75]: array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],


[11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[21, 22, 23, 24, 25, 26, 27, 28, 29, 30]])

[77]: N=M[:3,:2]
N

6
[77]: array([[ 1, 2],
[11, 12],
[21, 22]])

[79]: P=M[:,-3:]
P

[79]: array([[ 8, 9, 10],


[18, 19, 20],
[28, 29, 30]])

[95]: rows = np.array([[0, 0],


[2, 2]])
cols = np.array([[2, 6],
[2, 6]])
Q=M[rows,cols]
Q

[95]: array([[ 3, 7],


[23, 27]])

[96]: R=M[:,:-1:2]
R

[96]: array([[ 1, 3, 5, 7, 9],


[11, 13, 15, 17, 19],
[21, 23, 25, 27, 29]])

c) Définir la matrice M = [2, ..., 100] et $ N = [-1, -3, -5 . . ., -99]$, puis le vecteur
P = [−1, 2, −3, 4, −5, 8, ..., −99, 100].
[118]: M=np.arange(2,101,2)
M=M.reshape(-1,1)
M

[118]: array([[ 2],


[ 4],
[ 6],
[ 8],
[ 10],
[ 12],
[ 14],
[ 16],
[ 18],
[ 20],
[ 22],
[ 24],
[ 26],

7
[ 28],
[ 30],
[ 32],
[ 34],
[ 36],
[ 38],
[ 40],
[ 42],
[ 44],
[ 46],
[ 48],
[ 50],
[ 52],
[ 54],
[ 56],
[ 58],
[ 60],
[ 62],
[ 64],
[ 66],
[ 68],
[ 70],
[ 72],
[ 74],
[ 76],
[ 78],
[ 80],
[ 82],
[ 84],
[ 86],
[ 88],
[ 90],
[ 92],
[ 94],
[ 96],
[ 98],
[100]])

[117]: N=np.arange(-1,-100,-2)
N=N.reshape(-1,1)
N

[117]: array([[ -1],


[ -3],
[ -5],
[ -7],
[ -9],

8
[-11],
[-13],
[-15],
[-17],
[-19],
[-21],
[-23],
[-25],
[-27],
[-29],
[-31],
[-33],
[-35],
[-37],
[-39],
[-41],
[-43],
[-45],
[-47],
[-49],
[-51],
[-53],
[-55],
[-57],
[-59],
[-61],
[-63],
[-65],
[-67],
[-69],
[-71],
[-73],
[-75],
[-77],
[-79],
[-81],
[-83],
[-85],
[-87],
[-89],
[-91],
[-93],
[-95],
[-97],
[-99]])

9
[125]: P=np.concatenate((N,M),axis=1) # ou np.hstack
P

[125]: array([[ -1, 2],


[ -3, 4],
[ -5, 6],
[ -7, 8],
[ -9, 10],
[-11, 12],
[-13, 14],
[-15, 16],
[-17, 18],
[-19, 20],
[-21, 22],
[-23, 24],
[-25, 26],
[-27, 28],
[-29, 30],
[-31, 32],
[-33, 34],
[-35, 36],
[-37, 38],
[-39, 40],
[-41, 42],
[-43, 44],
[-45, 46],
[-47, 48],
[-49, 50],
[-51, 52],
[-53, 54],
[-55, 56],
[-57, 58],
[-59, 60],
[-61, 62],
[-63, 64],
[-65, 66],
[-67, 68],
[-69, 70],
[-71, 72],
[-73, 74],
[-75, 76],
[-77, 78],
[-79, 80],
[-81, 82],
[-83, 84],
[-85, 86],
[-87, 88],

10
[-89, 90],
[-91, 92],
[-93, 94],
[-95, 96],
[-97, 98],
[-99, 100]])

[126]: P.reshape(1,-1)

[126]: array([[ -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13,
14, -15, 16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26,
-27, 28, -29, 30, -31, 32, -33, 34, -35, 36, -37, 38, -39,
40, -41, 42, -43, 44, -45, 46, -47, 48, -49, 50, -51, 52,
-53, 54, -55, 56, -57, 58, -59, 60, -61, 62, -63, 64, -65,
66, -67, 68, -69, 70, -71, 72, -73, 74, -75, 76, -77, 78,
-79, 80, -81, 82, -83, 84, -85, 86, -87, 88, -89, 90, -91,
92, -93, 94, -95, 96, -97, 98, -99, 100]])

d) Définir une matrice M aléatoire à 3 lignes et 7 colonnes. Combien de nombres dans


cette matrice sont plus grands que 0.5? que 0.8? où sont-ils situés?

Construire alors la matrice P obtenue à partir de la matrice M en remplaçant tous


les nombres de M inférieurs à 0.4 par 0, et ceux supérieurs à 0.4 par 1. Construire de
même la matrice Q obtenue à partir de la matrice M en remplaçant tous les nombres
de M inférieurs à 0.5 par -3 et tous les nombres supérieurs à 0.5 par 14.
[148]: M=np.random.rand(3,7)
M

[148]: array([[0.85760989, 0.35312851, 0.5182001 , 0.81181858, 0.40200124,


0.81220015, 0.3590656 ],
[0.3830702 , 0.47633881, 0.16761232, 0.30072278, 0.58410557,
0.82327631, 0.80662026],
[0.48032694, 0.89422069, 0.59782556, 0.99506199, 0.68644816,
0.0630271 , 0.21237061]])

[149]: len(np.where(M>=0.5)[0])

[149]: 11

[150]: len(np.where(M>=0.8)[0])

[150]: 7

[151]: rows,cols=np.where(M>=0.5)
rows

[151]: array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2], dtype=int64)

11
[152]: cols

[152]: array([0, 2, 3, 5, 4, 5, 6, 1, 2, 3, 4], dtype=int64)

[153]: rows,cols=np.where(M>=0.8)

[154]: P=M;
rows,cols=np.where(M>=0.4);
P[rows,cols]=1

rows,cols=np.where(M<0.4);
P[rows,cols]=0
P

[154]: array([[1., 0., 1., 1., 1., 1., 0.],


[0., 1., 0., 0., 1., 1., 1.],
[1., 1., 1., 1., 1., 0., 0.]])

[ ]:

[ ]:

12

Vous aimerez peut-être aussi