Académique Documents
Professionnel Documents
Culture Documents
#dir(np)
In [2]: #réponse
[[4. 3. 3. 3. ]
[2. 4. 3. 3. ]
[2. 2. 4. 3.14159265]
In [4]: #réponse
#print(A.shape)
#np.shape(A)
print(A[0,0])
print(A[2,3])
print(A[3,3])
4.0
3.141592653589793
0.5
Remarque :
1. Afficher $V$ la sous matrice de $A$ formée par la deuxième colonne de $A$.
A[:,n:m] est une sous matrice de $A$ avec : represente toutes les lignes et
n:m represente les colonnes de $n$ à $m-1$.
V=A[:,1:2]
print(V)
[[3.]
[4.]
[2.]
[2.]]
1. Afficher $W$ la sous matrice de $A$ formée par la deuxième et la troisième colonne
de $A$.
W=A[:,1:3]
print(W)
[[3. 3.]
[4. 3.]
[2. 4.]
[2. 2.]]
In [8]: B=A.copy()
print(B)
[[4. 3. 3. 3. ]
[2. 4. 3. 3. ]
[2. 2. 4. 3.14159265]
[2. 2. 2. 0.5 ]]
Remarque
B[2,3]=np.e
print(B)
[[4. 3. 3. 3. ]
[2. 4. 3. 3. ]
[2. 2. 4. 2.71828183]
[2. 2. 2. 0.5 ]]
B[3,:]=[1,1,1,1]
print(B)
[[4. 3. 3. 3. ]
[2. 4. 3. 3. ]
[2. 2. 4. 2.71828183]
[1. 1. 1. 1. ]]
In [11]: print(np.diag(A))
[4. 4. 4. 0.5]
In [12]: print(np.diag(A,-1) )
#print(A)
[2. 2. 2.]
In [13]: print(np.diag(A,2) )
print(A)
[3. 3.]
[[4. 3. 3. 3. ]
[2. 4. 3. 3. ]
[2. 2. 4. 3.14159265]
[2. 2. 2. 0.5 ]]
[[4. 0. 0. 0. ]
[2. 4. 0. 0. ]
[2. 2. 4. 0. ]
[2. 2. 2. 0.5]]
[[4. 3. 3. 3. ]
[0. 4. 3. 3. ]
[0. 0. 4. 3.14159265]
[0. 0. 0. 0.5 ]]
-------------------------------------------------------------------------
--
<ipython-input-17-1e7670d91200> in <module>
In [ ]: A.dot(W)#A* W
array([[16. , 9. , 9. , 9. ],
Out[18]:
[ 4. , 16. , 9. , 9. ],
[ 4. , 4. , 16. , 9.8696044],
[ 4. , 4. , 4. , 0.25 ]])
print(A.transpose())
[[4. 2. 2. 2. ]
[3. 4. 2. 2. ]
[3. 3. 4. 2. ]
print(A.T)
[[4. 2. 2. 2. ]
[3. 4. 2. 2. ]
[3. 3. 4. 2. ]
In [21]: U= [-2,1,2]
C=np.diagflat(U)
print(C)
[[-2 0 0]
[ 0 1 0]
[ 0 0 2]]
1. Construire $D$ une matrice diagonale dont sa diagonale est celle de la matrice
$A$.
In [22]: D=np.diagflat(np.diag(A))
print(D)
[[4. 0. 0. 0. ]
[0. 4. 0. 0. ]
[0. 0. 4. 0. ]
[0. 0. 0. 0.5]]
Activité (asynchrone)
Exécuter et commenter
In [24]: #np.trace(A)
#np.sum(A)
#np.argmax(A,axis=1)
#print(np.triu(A,2))
#print(B/2)
#print(B-4)
#print(B*2)
#print(np.sqrt(B))
#print(-B)
Matrices particulières
1. Matrice identité:
I=np.identity(4)
print(I)
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
J= np.eye(3)
print(J)
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[0 0]
[0 0]
[0 0]]
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
In [29]: mat=np.array([[1,2,3,4],[2,3,0,6]])
print(mat)
Mat=mat.reshape(4,2)
print(Mat)
[[1 2 3 4]
[2 3 0 6]]
[[1 2]
[3 4]
[2 3]
[0 6]]
Remarque
$$M=\begin{pmatrix}
4 & -1 & -1 & 0 \\
-1 & 4 & 0 & -1 \\
-1 & 0 & 4 & -1 \\
0 & -1 & -1 &
4\\
\end{pmatrix}, \; X=\begin{pmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4\\
\end{pmatrix},\; \mbox{et}
\; b=\begin{pmatrix}
50 \\
30 \\
70 \\
50\\
\end{pmatrix},$$
M=5*np.eye(4)-np.ones((4,4))
[M[0,3],M[1,2],M[2,1],M[3,0]]=np.zeros(4)
b=np.array([50,30,70,50])
M,b
Out[12]:
[-1., 4., 0., -1.],
np.linalg.det(M)
192.0
Out[13]:
1. Résoudre le système
In [14]: # X=M^-1 b
X=np.linalg.inv(M).dot(b)
Remarque:
Parfois, il est utile d'identifier le type des élements de la matrice pour effectuer certaines
opérations.
Revenons à exercice 11 :
In [15]: #Problème
Mp=np.array([[4,-1,-1,0],[-1,4,0,-1],[-1,0,4,-1],[0,-1,-1,4]])
b=np.array([50,30,70,50])
np.linalg.inv(Mp).dot(b)
In [17]: #Solution
Ms=np.array([[4,-1,-1,0],[-1,4,0,-1],[-1,0,4,-1],[0,-1,-1,4]],float)
b=np.array([50,30,70,50])
np.linalg.inv(Ms).dot(b)
np.arange() et np.linspace
In [38]: #np.arange(2,8)
In [39]: #np.arange(8)
In [40]: #np.arange(2,8,2)
In [41]: #np.linspace(-1,1,0.2)
Exercice(11) : (synchrone)
Ecrire une fonction def_mat qui prend à l’entrée un entier $n≥2$ et affiche la
matrice $A$ définie par $A=(a_{ij})_{i,j}$ tel que
$$a_{ij}=\left \{
\begin{array}{rcl}
i+j+1 \quad \textrm{si} \quad i>j\\
i+j-1 \quad \textrm{si}
\quad i<j\\
i \quad \textrm{si } \quad i=j
\end{array}
\right.$$
In [20]: #Correction
import numpy as np
def def_mat(n):
a=np.zeros((n,n))
for i in np.arange(n):
for j in np.arange(n):
if i>j:
a[i,j]=i+j+1
elif i<j:
a[i,j]=i+j-1
else:
a[i,j]=i
return a
def_mat(2)
array([[0., 0.],
Out[20]:
[2., 1.]])
Pour tracer des lignes, nous devons utiliser la commande plot du module pyplot. Elle
peut ne prendre aucun
argument. En effet, si nous lui passons une liste [a, b, c] en argument, elle reliera le
points A(0, a) au
point B(1, b) et ce point B au point C(2, c). En fait, nous fournissons les ordonnées dans
une liste, et les
abscisses, elles, sont automatiquement générées et vont de 0 à len(liste) - 1. Ainsi, le
code suivant…
[<matplotlib.lines.Line2D at 0x1546f0484f0>]
Out[44]:
Permet d’obtenir la droite passant par les points A(0, 0), B(1, 1) et C(2, 2). Au contraire,
le code…
[<matplotlib.lines.Line2D at 0x1546f3f8f10>]
Out[47]:
permet d’obtenir les droites passants par les points A(0, 1), B(1, 0) et C(2, 2)
Cependant, on peut aussi passer deux listes en arguments à plot. La première liste
correspondra à la liste des
abscisses des points qu'on veule relier et la seconde à la liste de leurs ordonnées. Ainsi,
le code précédent
y = [1, 0, 2]
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x1546f45fa00>]
Out[48]:
Exercice (10)
y = [0, 1, 1, 0]
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x1546f4cb1c0>]
Out[49]:
[<matplotlib.lines.Line2D at 0x16bbfd51d60>]
Out[22]:
Activité
In [51]: x=np.arange(0,2*np.pi,0.01)#abcisses
y=np.sin(x) #ordonnées
plt.grid(True)
Références