Génie chimique & Matériaux
Comment modéliser et simuler les systèmes d'ingénierie en utilisant Numpy Scipy
Table of Contents
La modélisation et la simulation des systèmes d'ingénierie sont des tâches essentielles dans l'analyse technique. L'utilisation de bibliothèques Python comme NumPy et SciPy simplifie ces processus en fournissant des outils puissants pour le calcul numérique et l'analyse système.
Mise en place de l'environnement
Pour commencer, installez les bibliothèques nécessaires si elles ne sont pas déjà disponibles. Utilisez les commandes pip pour installer NumPy et SciPy :
pip installer numpy scipy
Systèmes d'ingénierie de modélisation
Les systèmes d'ingénierie peuvent souvent être représentés à l'aide de modèles mathématiques tels que les équations différentielles ou les fonctions de transfert. NumPy fournit des outils pour créer des matrices et des vecteurs, tandis que SciPy offre des fonctions pour résoudre des équations et simuler les réponses du système.
Par exemple, un simple système de masse-spring-damper peut être modélisé avec l'équation différentielle:
m * x'' + c * x' + k * x = 0
Systèmes de simulation
Le module d'intégration de SciPy permet de résoudre numériquement les équations différentielles. La fonction 'solve ivp' est couramment utilisée à cette fin. Voici un exemple de simulation du système masse-spring-damper:
Définir le système comme une fonction:
importer numpy sous forme de np
de scipy.integre import resouvent ivp
def masse spring damper(t, y, c, k):[
retour [y[1], - (c / m) * y[1] - (k / m) * y[0]]
Définir les conditions et paramètres initiaux:
conditions initiales = [x0, v0]
t span = [0, 10]
Appelez le solveur :
solution = resouv ivp(mass spring damper, t span, conditions initiales, args=(c, k))[
Analyse des résultats
Après simulation, analysez les résultats en traçant la réponse du système au fil du temps. Utilisez des bibliothèques comme Matplotlib pour visualiser les données :
importer matplotlib.pyplot sous forme de plt
plt.plot(solution.t, solution.y[0])
plt.xlabel('Time (s)')
plt.ylabel('Displacement')[
plt.show()