PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 1 PARTIE I

PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 1 PARTIE III : INGENIERIE NUMERIQUE ET SIMULATION Le langage Python seul ne sait pas faire grand chose dans le domaine mathématique, comme tracer une fonction, calculer des valeurs de fonctions usuelles, réaliser des opérations matricielles,... Cependant, de nombreux modules ont été développés pour pallier ce manque, parmi lesquels in convient de citer :  scipy  numpy  matplotlib A noter que le module pylab intègre ces trois modules et ipython. L’objectif de ce document n’est bien entendu pas d’être exhaustif sur ce qu’il est possible de faire avec python et ces modules, mais juste de donner quelques points d’entrée sur ces librairies et de proposer des illustrations par l’exemple de leur utilisation. Dans la mesure du possible, les exemples collent "pas trop loin" du programme officiel de maths PCSI. I) FONCTIONS UTILES DE NUMPY : 1) Tableaux numpy : La fonction array prend en argument une liste et renvoie un tableau numpy ayant les mêmes éléments. En cas de liste de listes, l’opérateur s’applique récursivement à chaque sous–liste : la valeur de retour est donc un tableau de tableaux. Dans toute la suite on supposera qu’on a effectué : Exemple : Console python >>>import numpy as np Console python >>> np.array([1, 2, 3]) # Un tableau d’entiers array([1, 2, 3]) >>> np.array([1, 2, 3.0]) # On impose implicitement les flottants array([ 1., 2., 3.]) >>> np.array([[1, 2], [3, 4]]) # Plus d’une dimensions array([[1, 2], [3, 4]]) PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 2 arange, reshape : Exemple : Utilisation de matrix : La classe des matrices, permet de faire du calcul matriciel Remarque : Pour une matrice numpy m, il est possible d’accéder directement à l’élément de ligne i et de colonne j avec la syntaxe m[i,j] (alors qu’avec une matrice python “classique” il faudrait écrire m[i][j]). Console python >>> np.arange(1,6,2) # Même comportement que range, mais renvoie un array array([1, 3, 5]) >>> a = np.arange(25) # Tableau 1D à 25 éléments >>> a.reshape((5,5)) # Changé en tableau 2D à 5*5 éléments 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]]) Console python >>> A = np.matrix(np.arange(9).reshape((3,3))) >>> A # La matrice A matrix([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> A**2 # Son carré matriciel matrix([[ 15, 18, 21], [ 42, 54, 66], [ 69, 90, 111]]) >>> A.transpose() # Sa transposée matrix([[0, 3, 6], [1, 4, 7], [2, 5, 8]]) >>> A*A.transpose() # Le produit matriciel avec la transposée matrix([[ 5, 14, 23], [ 14, 50, 86], [ 23, 86, 149]]) PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 3 Exemple : Ones et eye : ones(n) : crée un tableau de longueur n contenant uniquement des 1. ones((p,q)) : crée une matrice numpy avec p lignes et q colonnes composée uniquement de 1. La fonction eye(n) renvoie la matrice identité de taille n. Exemple : Opérations sur les tableaux numpy : Les opérations usuelles (addition, soustraction, multiplication, division) s’appliquent aux tableaux Numpy en opérant coefficient par coefficient. Exemple : Console python >>> a = [[2,3],[1,8]] >>> b = np.array (a) >>> b[1] # Ligne d’indice 1 array([1, 8]) >>> b[:,0] # Colonne d’indice 0 array([2, 1]) >>> b[:,-1] # Dernière colonne array([3, 8]) >>> b[1,0] # Elément ligne 1 colonne 0 1 Console python >>> np.ones(2) array([ 1., 1.]) >>> np.ones((2,3)) array([[ 1., 1., 1.], [ 1., 1., 1.]]) >>> np.eye(2) array([[ 1., 0.], [ 0., 1.]]) Console python >>> a=np.array([[1,4],[1,2]]) >>> b=np.ones((2,2)) >>> a*b array([[ 1., 4.], [ 1., 2.]]) >>> a/b # Au sens matriciel usuel b n’est pas inversible array([[ 1., 4.], [ 1., 2.]]) >>> a**2 array([[ 1, 16], [ 1, 4]]) PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 4 Remarque : Chaque fonction mathématique usuelle possède une fonction Numpy qui lui est homonyme et qui calcule la même chose sur les objets de type float. Par exemple il existe math.sin et np.sin. L’avantage des fonctions numpy f, c’est que si a est un tableau numpy a = array[a0, . . . , an-1], l’appel f(a) renvoie le tableau array[f(a0), . . . , f(an-1)]. Ce mécanisme s’applique aussi aux matrices. Exemple : Produit matriciel : dot(A,B) : le produit matriciel A.B Exemple : Résolution d’un système de Cramer : solve(A,B) : le vecteur X solution de A.X = B Exemple : Résolution de : Console python >>> import numpy as np >>> x=np.array([3,4]) >>> np.exp(x) array([ 20.08553692, 54.59815003]) >>> import math >>> math.exp(x) TypeError: only length-1 arrays can be converted to Python scalars Console python >>> from numpy.linalg import dot >>> dot ([[1,2],[3,4]], np.eye(2)) # Syntaxe correcte du produit matriciel array([[ 1., 2.], [ 3., 4.]]) >>> [[1,2],[3,4]] * np.eye(2) # Faux (produit terme a terme) array([[ 1., 0.], [ 0., 4.]]) Console python >>> from numpy.linalg import solve >>> solve ([[1,2],[3,4]], [2,8]) array([ 4., -1.])    = + = + 8 4 3 2 2 y x y x PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 5 Déterminant : det(A) : le déterminant de A Exemple : Trace : trace (A) : la trace de A. Exemple : Inverse d’une matrice : inv(A) : l’inverse de A (A-1) Exemple : Puissance d’une matrice : matrix_power(A,n) : A à la puissance n (An). Exemple : Console python >>> from numpy.linalg import det >>> det ([[1,2],[3,4]]) -2.0000000000000004 Console python >>> from numpy import trace >>> trace([[1,2],[3,4]]) 5 Console python >>> from numpy.linalg import inv >>> inv([[1,2],[3,4]]) array([[-2. , 1. ], [ 1.5, -0.5]]) Console python >>> from numpy.linalg import matrix_power >>> matrix_power ([[1,2],[3,4]], -2) array([[ 5.5 , -2.5 ], [-3.75, 1.75]]) PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 6 Transposée d’une matrice : transpose (A) : la transposée de A (tA) Exemple : Conversion de radians en dégrées et vice versa : rad2deg() : conversion de radians en dégrées. deg2rad() : conversion de dégrées en radians. Exemple : Résolution d’un système d’équations(avec la méthode de Gauss) Soit AX=B une équation désignant un système linéaire de n inconnus ) Saisie de A b) Saisie de B c) Transformation de la matrice AB en une matrice triangulaire d) Déduction de la matrice X Console python >>> from numpy import transpose >>> transpose([[1,2],[3,4]]) array([[1, 3], [2, 4]]) Console python >>>import numpy as np >>> np.deg2rad(180) 3.1415926535897931 PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 7 Console python from numpy import * n=int(input("Donnez le nombre d'inconnus?")) A=zeros((n,n)) B=zeros((n,1)) X=zeros((n,1)) AB=zeros((n,n+1)) copie=zeros(n+1) print("Saisie de la matrice A?") for i in range(0,n): print("Equation N°"+str(i+1)) print(" Saisir les coefficients?") for j in range(0,n): A[i][j]=float(input("Coef. de x"+str(j+1)+":")) B[i][0]=float(input(" Saisir b"+str(i+1)+":")) print(A) print(B) #Construction du système AB (fomé de A et B) for i in range(0,n): for j in range(0,n): AB[i][j]=A[i][j] for i in range(0,n): AB[i][n]=B[i][0] print(AB) #Triangularisation de AB for j in range(0,n-1):#colonnes for i in range(j+1,n):#lignes for k in range(0,n+1): copie[k]=AB[j][j]*AB[i][k]-AB[i][j]*AB[j][k] for k in range(0,n+1): AB[i][k]=copie[k] print("AB triangularisée") print(AB) X[n-1][0]=AB[n-1][n]/AB[n-1][n-1] i=n-2 while i>=0: s=0 for j in range(i+1,n): s=s+AB[i][j]*X[j][0] X[i][0]=(AB[i][n]-s)/AB[i][i] i=i-1 print("Solutions") print(X) PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 8 Les fonctions trigonométriques de base : cos(), sin() et tan(). Exemple : Les fonctions inverses de cos, sin et tan : arccos(), arcsin() et arctan(). Exemple : Arrondir une valeur : ceil() : arrondi au plus petit entier supérieur ; floor() : arrondi au plus grand entier inférieur ; round(3.49) : arrondi au plus proche entier. Exemple : Console python >>>import numpy as np >>>A=np.array([[1,2],[3,4]]) >>>A array([[1, 2], [3, 4]]) >>>np.cos(A) array([[ 0.54030231, -0.41614684], [-0.9899925 , -0.65364362]]) Console python >>>import numpy as np >>>B=np.array([[0.54030231,-0.41614684],[-0.9899925,-0.65364362]]) >>>np.arcsin(B) array([[ 0.57079633, -0.42920368], [-1.4292037 , -0.71238898]]) Console python >>>import numpy as np >>>np.ceil(3.01) 4.0 >>>np.floor(3.99) 3.0 >>>np.round(3.49) 3.0 PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 9 Trier les éléments : sort(). Exemple : La somme des éléments d’un tableau : sum(). Exemple : La variance des éléments d’un tableau : var(). Exemple : L’écart-type des éléments d’un tableau : std(). Exemple : Console python >>>import numpy as np >>>C=np.array([10, 2, 72, 35, 4, 123, 8]) >>>C.sort() #np.sort(C) Console python >>>import numpy as np >>>C.sum() #sum(C) 254 Console python >>>import numpy as np >>>C.var() #np.var(C) 1786.4897959183675 Console python >>>import numpy as np >>>C.std() #np.std(C) 42.266887700874868 PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 10 La valeur maximale : max(). Exemple : La valeur minimale : min(). Exemple : La moyenne : mean(). Exemple : Console python >>>import numpy as np >>>C.max() #max(C) 123 Console python >>>import numpy as np >>>C.min() #min(C) 2 Console python >>>import numpy as np >>>C.mean() #np.mean(C) 36.285714285714285 PCSI/CPGE-Dakhla Ingénierie Numérique et Simulation © M.Y . ELMARZAK 11 A) RESOLUTION D'EQUATION ALGEBRIQUE : 1) Résolution approchée d’une équation : Dans la mesure où on ne sait pas résoudre de manière exacte toutes les équations numériques que l’on peut être amené à rencontrer, il est légitime de mettre au point des démarches uploads/Marketing/ ingenierie-numerique-et-simulation.pdf

  • 19
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Oct 24, 2021
  • Catégorie Marketing
  • Langue French
  • Taille du fichier 0.3244MB