0% ont trouvé ce document utile (0 vote)
3 vues3 pages

TP Python3

Transféré par

apenoueliel85
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)
3 vues3 pages

TP Python3

Transféré par

apenoueliel85
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

Formation Ingénieurs (GC, GE, GM)

Informatique pour l'Ingénieur  Python

Travail Pratique : Simulation Numérique avec


NumPy
Tableaux ND, Vectorisation et Algèbre Linéaire

Durée : 2 heures
Modalités de rendu : Un script Python (tp_numpy_NOM_Prenom.py) et un court compte-rendu
au format PDF contenant vos analyses et résultats.

Objectifs du TP
En accord avec le cours, ce TP vise à :
ˆ Manipuler des tableaux N-dimensionnels avec NumPy.

ˆ Comprendre et appliquer le concept de vectorisation pour optimiser les temps de calcul.


ˆ Modéliser un problème d'ingénierie sous la forme d'un système linéaire AX = B .

ˆ Résoudre ce système de manière stable et performante avec [Link].

1 Exercice 1 : La puissance de la Vectorisation (30 min)


En ingénierie, il est courant de devoir traiter des millions de données (n÷uds d'un maillage,
échantillons temporels).
Mise en situation : Nous allons générer deux vecteurs aléatoires de taille N = 106 .
ˆ Pour les GE : Il s'agit de 106 valeurs de Résistances R et de Courants I . On veut calculer
la puissance dissipée P = R · I 2 .
ˆ Pour les GC/GM : Il s'agit de 106 valeurs de Rigidités K et de Déplacements U . On veut
calculer l'énergie de déformation élastique E = 21 K · U 2 .

Travail demandé :

1. Importez la bibliothèque numpy et la bibliothèque time (pour mesurer le temps).


2. Créez deux tableaux 1D NumPy A et B contenant 106 valeurs aléatoires entre 1 et 10.
(Indice : utilisez [Link] ).
3. Méthode classique (Lente) : Créez un tableau vide C (avec [Link]) de même taille.
Utilisez une boucle for pour calculer la formule C[i] = A[i] × (B[i])2 pour chaque élément.
Mesurez et achez le temps d'exécution.
4. Méthode vectorisée (Rapide) : Calculez directement le tableau C en une seule ligne
grâce aux opérations vectorisées de NumPy (C = A × B 2 ). Mesurez et achez le temps
d'exécution.

1
5. Dans votre compte-rendu, calculez le rapport de vitesse (Temps boucle / Temps vectorisé)
et commentez l'importance de ce concept pour un ingénieur.

2 Exercice 2 : Résolution Multi-domaines AX = B (1h00)


Une grande majorité des problèmes physiques (MEF, circuits, structures) se ramènent à la
résolution d'un système linéaire. Considérons le système modélisé en cours par la matrice suivante
:
  
4 −1 0 15
A = −1 3 −1 , B =0 (1)
0 −1 2 10

Interprétation Physique selon votre spécialité


Génie Civil (GC) / Génie Mécanique (GM) : A est la matrice de rigidité d'une
poutre ou d'un treillis discrétisé à 3 n÷uds libres. B est le vecteur des forces appliquées
sur ces n÷uds. Le vecteur inconnu X représente les déplacements des n÷uds.
Génie Électrique (GE) : A est la matrice des conductances d'un réseau électrique à 3
n÷uds. B est le vecteur des courants injectés aux n÷uds. Le vecteur inconnu X représente
les potentiels (tensions) aux n÷uds.

Travail demandé :

1. Dénissez la matrice A (tableau 2D) et le vecteur B (tableau 1D) en utilisant [Link].


2. Achez la taille (shape) des matrices pour vérier vos dimensions.
3. Résolvez le système en utilisant la fonction recommandée dans le cours : [Link]().
Stockez le résultat dans une variable X_solve et achez-la en arrondissant à 2 décimales
([Link]).
4. Vérication : Calculez le produit matriciel A × X (utilisez l'opérateur @ ou [Link]())
et vériez que le résultat est bien égal au vecteur B .
5. Mauvaise pratique : Comme vu en cours, l'inversion de matrice est coûteuse. Calculez
l'inverse de A avec [Link](), puis calculez X en faisant A−1 · B . Stockez dans
X_inv. Vériez que X_solve et X_inv sont identiques. Notez dans le compte-rendu
pourquoi solve doit être privilégié.

3 Exercice 3 : Analyse paramétrique (30 min)


En tant qu'ingénieur, une fois le modèle numérique en place, on simule diérents scénarios de
"cas de charge".
Imaginez qu'une perturbation majeure survienne sur le n÷ud central (n÷ud 2) de notre système.
ˆ (GC/GM) : Une force soudaine de 50 N est appliquée sur le n÷ud 2.

ˆ (GE) : Une source de courant injecte 50 A au n÷ud 2.

2
Travail demandé :

1. Créez un nouveau vecteur Bnew = 15 50 10 .


T 

2. Résolvez le nouveau système AX = Bnew .


3. Comparez le nouveau vecteur X avec celui de l'Exercice 2. Dans votre compte-rendu,
expliquez physiquement ce qui s'est passé (Où le déplacement/potentiel est-il maximum ?
Comment les autres n÷uds ont-ils réagi à cette perturbation au centre ?).

Bon courage. N'oubliez pas de commenter votre code Python !

Vous aimerez peut-être aussi