0% ont trouvé ce document utile (0 vote)
7 vues4 pages

Résolution d'équation différentielle avec Python

Transféré par

briceassoua019
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues4 pages

Résolution d'équation différentielle avec Python

Transféré par

briceassoua019
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

Voici un programme Python bien élaboré qui résout l'équation différentielle donnée, calcule la hauteur

maximale d'eau dans la retenue, et affiche cette valeur directement sur le graphique. Le programme
utilise la méthode d'Euler pour résoudre l'équation différentielle et `matplotlib` pour tracer la courbe et
annoter la hauteur maximale.

```python

import numpy as np

import [Link] as plt

# Définir la fonction h'(t)

def dh_dt(t, h):

return t / h + 0.5 * h

# Méthode d'Euler

def euler_method(dh_dt, h0, t0, t_end, dt):

t_values = [Link](t0, t_end + dt, dt)

h_values = [Link](len(t_values))

h_values[0] = h0

for i in range(1, len(t_values)):

t = t_values[i-1]

h = h_values[i-1]

h_values[i] = h + dt * dh_dt(t, h)

return t_values, h_values

# Paramètres initiaux
h0 = 25 # Condition initiale h(0) = 25

t0 = 0 # Temps initial

t_end = 10 # Temps final (à ajuster selon le problème)

dt = 2 # Pas de temps

# Résolution de l'équation différentielle

t_values, h_values = euler_method(dh_dt, h0, t0, t_end, dt)

# Calcul de la hauteur maximale

h_max = [Link](h_values)

t_max = t_values[[Link](h_values)] # Temps correspondant à la hauteur maximale

# Affichage des résultats

[Link](figsize=(10, 6))

[Link](t_values, h_values, label='h(t)', color='blue', linewidth=2)

# Annoter la hauteur maximale sur le graphique

[Link](t_max, h_max, color='red', zorder=5) # Point rouge pour la hauteur maximale

[Link](f'Max: h = {h_max:.2f}', xy=(t_max, h_max), xytext=(t_max + 0.5, h_max + 1),

arrowprops=dict(facecolor='black', shrink=0.05), fontsize=12)

# Ajouter des labels et un titre

[Link]('Temps (t)', fontsize=14)

[Link]('Hauteur (h)', fontsize=14)

[Link]('Résolution de l\'équation différentielle par la méthode d\'Euler', fontsize=16)


[Link](fontsize=12)

[Link](True)

[Link]()

# Affichage de la hauteur maximale dans la console

print(f"La hauteur maximale d'eau dans la retenue est : {h_max:.2f}")

```

### Explication du programme :

1. **Fonction `dh_dt(t, h)`** :

- Cette fonction représente l'équation différentielle \( h'(t) = \frac{t}{h(t)} + \frac{1}{2}h(t) \).

2. **Méthode d'Euler** :

- La fonction `euler_method` résout l'équation différentielle en utilisant la méthode d'Euler. Elle


retourne les valeurs de temps `t_values` et les hauteurs correspondantes `h_values`.

3. **Calcul de la hauteur maximale** :

- `h_max = [Link](h_values)` calcule la hauteur maximale.

- `t_max = t_values[[Link](h_values)]` trouve le temps correspondant à cette hauteur maximale.

4. **Tracé du graphique** :

- Le graphique montre l'évolution de la hauteur d'eau en fonction du temps.

- La hauteur maximale est annotée sur le graphique avec une flèche et une étiquette.

5. **Affichage de la hauteur maximale** :


- La hauteur maximale est également affichée dans la console.

### Résultat attendu :

- Un graphique montrant la courbe de la hauteur d'eau en fonction du temps.

- Un point rouge indiquant la hauteur maximale, avec une annotation affichant la valeur exacte.

- La valeur de la hauteur maximale est également imprimée dans la console, par exemple :

```

La hauteur maximale d'eau dans la retenue est : 30.45

```

### Remarque :

- Vous pouvez ajuster `t_end` (temps final) et `dt` (pas de temps) en fonction des besoins du problème.

Vous aimerez peut-être aussi