# -*- coding: utf-8 -*-
#==============================================================================
# DM 7 PCSI Carnot - Régime transitoire d'ordre 2
#==============================================================================

# Importation des modules nécessaires
import numpy as np
import matplotlib.pyplot as plt

# Script à compléter. Inutile de le lancer sans avoir complété !

# Données
E = 
u0 =
r1 = 
r2 = 
l = 8e-3 # Éviter 8*10**(-3), bien moins précis. 8e-3 est un simple nombre
c = 

# Constantes définies dans le sujet et permettant de réaliser le tracé
Q = np.sqrt()/()
omega0 = ...
tau = 2*Q/omega0
omegap = omega0/(2*Q) * np.sqrt(...)
up0 = 1/(r1*c) * ( r2/(r1+r2)*E - u0 )
ufinal = ...*E
# Affichage
print("Q      =",round(Q,2))
print("omega0 =",int(omega0),'rad/s')
print("tau    =",round(1000*tau,3),'ms')
print("omegap =",int(omegap),'rad/s')
print("taup   =",round(1000*.../omegap,3),'ms')
print("up0    =",round(up0/1000,3),'V/ms')
print("ufinal =",round(ufinal,3),'V')

# Constantes d'intégration
A = u0-ufinal
B = ( up0 + A/tau ) / omegap

# Fonctions temporelles
def enveloppe(t):
    return np.exp(-t/tau)
def u(t):
    return ufinal + enveloppe(t) * ( A*np.cos(omegap*t) + B*np.sin(...) )

# Tracé de l'évolution du système
t = np.linspace(0, ..., 2001) # de 0 à 5*tau, 2001 points : dt = 5*tau/2000
plt.plot(1000*t, ...) # temps en abscisses en millisecondes
plt.xlabel('Temps (ms)')
plt.ylabel('Tension u_c (V)')
plt.grid()
# Enveloppe exponentielle
plt.plot(1000*t, ufinal + np.sqrt(A**2+B**2) * enveloppe(t), 'r--')
plt.plot(..., ufinal - np.sqrt(A**2+B**2) * ..., 'r--')
plt.show()
