Résoudre les équations différentielles partielles avec Numpy et Scipy : une approche étape par étape

Les équations différentielles partielles (EDP) sont fondamentales pour modéliser divers phénomènes physiques, tels que le transfert de chaleur, la propagation des vagues et la dynamique des fluides. L'utilisation de bibliothèques Python comme NumPy et SciPy simplifie le processus de résolution numérique de ces équations.

Régler le problème

Commencez par définir le PDE et le domaine. Par exemple, considérez l'équation de chaleur unidimensionnelle:

,u/ ,t = α ,2u/ ,x2

Préciser les conditions initiales, les conditions limites et les paramètres tels que la diffusion thermique α.

Discrétisation du domaine

Divisez le domaine spatial en points discrets à l'aide de tableaux NumPy. Par exemple, créez une grille de points :

importer numpy sous forme de np

x = np.linspace(0, 1, 100)

Réglez l'étape temporelle et le temps total de simulation pour contrôler la stabilité et la précision numériques.

Mise en œuvre de la méthode numérique

Pour l'équation thermique, un schéma explicite met à jour la température à chaque point:

u new = u + r * (u[i+1] - 2*u[i] + u[i-1])

r est un paramètre de stabilité calculé comme α * dt / dx2.

Exécution de la simulation

Il faut passer au fil des étapes, mettre à jour le tableau de solutions à chaque itération. Utilisez les opérations NumPy pour l'efficacité :

pour n dans la plage(s) :[

[1:-1] = u[1:-1] + r * (u[2:] - 2*u[1:-1] + u[:-2)]

Appliquer les conditions de limite après chaque mise à jour pour maintenir les contraintes de problème.

Visualisation des résultats

Utilisez des bibliothèques comme Matplotlib pour visualiser la distribution de température au fil du temps. Placez les états initiaux et finaux pour observer le processus de diffusion.

Exemple de code :

importer matplotlib.pyplot sous forme de plt

plt.plot(x, u)