Année Universitaire : 2023-2024
Département Génie Electrique
Filière : GTE – S2
TP4: PROGRAMMATION PYTHON
Exercice 1: Résolution numérique de systèmes d’équations linéaires avec NumPy
1. Ecrire un code qui résout le système d’équations suivant
………………………………………………
𝑥 + 2𝑦 = 3 ……………………………………………………
{
3𝑥 − 4𝑦 = 1
……………………………………………………
2. Dans le cas d’un pendule simple, on montre que l’équation du mouvement est donné par
𝜃(𝑡) = 𝐴𝑒 𝑟1 𝑡 + 𝐵𝑒 𝑟2 𝑡
Si on lâche le pendule d’un angle 𝜃0 sans vitesse initiale, 𝐴 et 𝐵 sont alors solutions du système
d’équations suivant :
𝐴 + 𝐵 = 𝜃0
{
𝑟1 𝐴 + 𝑟2 𝐵 = 0
On donne 𝑟1 = −0, 316 𝑠 −1 et 𝑟2 = −31,0 𝑠 −1 , déterminer les valeurs numériques de A et B pour 𝜃0 =
0,2 𝑟𝑎𝑑.
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
Exercice 2: Résolution approchée d’équations avec SciPy
La fonction brentq contenue dans la librairie SciPy permet de déterminer numériquement les racines d’une
équation quelconque, on peut s’en servir pour résoudre une équation de la forme f(x) = 0. Le code suivant
permet de résoudre l’équation :
(ln 𝑥)𝑥 − 3 = 0
import numpy as np
from scipy.optimize import fsolve ………………………………………………
def f(x): ……………………………………………………
return np.log(x)**x-3
……………………………………………………
sol=fsolve(f,1)
print ( "racine pour x=",sol,f(sol))
Dans le cas du pendule simple dont l’équation du mouvement est donnée dans l’exercice 1, on veut
déterminer l’instant t pour lequel θ(t) vaut 𝜃0 = 0, 1 rad. L’équation
𝐴𝑒 𝑟1 𝑡 + 𝐵𝑒 𝑟2 𝑡 = 𝜃0
n’a pas de solution analytique. Adapter le code précédent pour déterminer l’instant pour lequel θ(t) vaut
𝜃0 = 0, 1 rad. (Utiliser les valeurs de A et B déterminées dans l’exercice précédent). Retrouver le résultat
avec la fonction root de scipy.optimize
Exercice 3: Résolution approchées d’équations différentielles du premier ordre avec SciPy
SciPy permet d’intégrer (de résoudre) numériquement des équations différentielles.
Le code ci-dessous permet de résoudre l’équation différentielle du premier ordre suivante :
𝑥 ′ = 𝑥. 𝑡
{
𝑥(𝑡 = 0) = 1
1. Adapter le code précédent pour résoudre l’équation différentielle du premier ordre
suivante :
𝑦 ′ = 𝑦 sin 𝑦 + sin 𝑥
Avec 𝑦(𝑥 = 0) = 2
Tracer l’évolution de 𝑦 en fonction de 𝑥
import numpy as np
from scipy.integrate import odeint # ………………………………………………
import matplotlib.pyplot as plt
def deriv(x,t): ……………………………………………………
return x*t
#Choix de l’intervalle d’intégration ……………………………………………………
t0=0
tmax,npoints=1.1,1000
t=np.linspace(t0,tmax,npoints)
#Condition initiale
x0=1
solution= odeint(deriv,x0,t)
plt.plot(t,x)
plt.show ()
2. Adapter le code de la question 1 pour tracer l’évolution de la vitesse d’une bille sur les 4
premières secondes de sa chute sachant que sa vitesse 𝑣 vérifie l’équation différentielle
suivante:
𝑑𝑣 𝛼
= 𝑔 − 𝑣2
𝑑𝑡 𝑚
Avec 𝛼 = 3 × 102 𝑘𝑔. 𝑚−1 et 𝑚 = 2 × 10−2 𝑘𝑔
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
Exercice 4: Calcul approché d’intégrales avec SciPy
Dans le programme ci-dessous, on utlise la fonction quad contenue dans la librairie SciPy
pour déterminer numériquement l’intégrale:
4
𝐼 = ∫ 𝑥 2 𝑑𝑥
0
from scipy.integrate import quad ………………………………………………
def f(x):
……………………………………………………
return x**2
……………………………………………………
I,erreur=quad(f,0,4)
print (‘I=’,I)
On se propose de la calculer numériquement avec python la valeur théorique de la période T
du pendule donnée par:
2√2 𝜃0 𝑑𝜃
𝑇= ∫
𝜔0 𝜃=0 √cos 𝜃 − cos 𝜃0
−1
On pourra prendre 𝜔0 = 3 𝑟𝑎𝑑. 𝑠 .
Adapter le programme precedent pour calculer la valeur de la période T des oscillations pour
𝜃0 = 0, 1 rad et 𝜃0 = 3 rad.
2𝜋
Comparer les résultats obtenus aux valeurs qu’on obtient pour le cas linéarisé: 𝑇 = 𝜔
0
……………………………………………………………………………………………………………………………………