import numpy as np
import pandas as pd
# Définition de la fonction f(t, h)
def f(t, h):
return t / h + 0.5 * h
# Méthode d'Euler
def methode_euler(t0, h0, dt, t_final):
# Initialisation des listes pour stocker les résultats
temps = [t0]
hauteurs = [h0]
# Initialisation des variables
t = t0
h = h0
# Boucle principale pour la méthode d'Euler
while t <= t_final:
# Calcul de f(t, h)
f_t_h = f(t, h)
# Mise à jour de h et t
if t + dt > t_final:
dt = t_final - t # Ajustement du pas de temps pour atteindre
t_final
h = h + dt * f_t_h
t = t + dt
# Stockage des résultats
[Link](t)
[Link](h)
# Création d'un DataFrame pour afficher les résultats
resultats = [Link]({"Temps (h)": temps, "Hauteur (m)":
hauteurs})
return resultats
# Paramètres initiaux
t0 = 0 # Temps initial (h)
h0 = 25 # Hauteur initiale (m)
dt = 2 # Pas de temps (h)
t_final = 11.45 # Temps final (h)
# Application de la méthode d'Euler
resultats = methode_euler(t0, h0, dt, t_final)
# Affichage des résultats
print(resultats)
# Affichage de la hauteur maximale à t = 11,45 h
hauteur_max = resultats["Hauteur (m)"].iloc[-1]
print(f"\nLa hauteur maximale d'eau à t = {t_final} h est :
{hauteur_max:.3f} m")