# Simulation de la décharge d'un condensateur dans un circuit RC
# Méthode d'Euler explicite

import numpy as np      # Pour les tableaux et les calculs
import matplotlib.pyplot as plt  # Pour tracer les courbes

# --- Paramètres physiques ---
R = 10000       # Résistance en ohms (Ω)
C = 100e-6       # Capacité en farads (F)
E = 5.0         # Tension initiale du condensateur en volts (V)

# --- Paramètres numériques ---
dt = 0.1        # Pas de temps en secondes
t_max = 2        # Durée totale de la simulation en secondes

# --- Initialisation ---
n_points = int(t_max / dt)  # Nombre de points de calcul
t = np.linspace(0, t_max, n_points)  # Tableau des temps
U = np.zeros(n_points)               # Tableau des tensions
U[0] = E                            # Condition initiale

# --- Méthode d'Euler ---

# Calcul de u1 à partir de la condition initiale
U[1]=                               # A Compléter

# Calcul des tensions au temps successifs 
for k in range(1,n_points - 1,1):
    U[k + 1] =                      # A Compléter

# --- Solution théorique pour comparaison ---
#U_theo = E * np.exp(-t / (R * C))

# --- Affichage des résultats ---
plt.figure(figsize=(8,5))
plt.plot(t, U, 'rx', label="Méthode d'Euler")
#plt.plot(t, U_theo, 'b--', label="Solution théorique")
plt.title("Décharge d'un condensateur (Circuit RC)")
plt.xlabel("Temps (s)")
plt.ylabel("Tension (V)")
plt.grid()
plt.legend()
plt.show()