
1 systeme = np . array ( [ [ 1 , 2 ] ,
2 [3 , −4 ]] )
3 val e ur = np . array ( [ [ 3 ] ,
4 [1]])
5 s ol = np . l i n a l g . so lv e ( systeme , va leu r )
6print("x=" , s o l [ 0 , 0 ] , "␣et␣y=" , s o l [ 1 , 0 ] )
En présence de frottements importants, on peut montrer que le mouvement du pendule est donné par
θ(t) = Aer1t+Ber2t
Si l’on lâche le pendule d’un angle θ0sans vitesse initiale, A et B sont alors solutions du système :
A+B=θ0
r1A+r2B= 0
On donne r1=−0,316 s−1et r2=−31,0s−1. Déterminer les valeurs numériques de A et B pour
θ0= 0,2rad.
3 Résolution d’équations avec SciPy et matplotlib
3.1 Cas d’une solution unique
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
ci-dessous résout l’équation (ln x)x= 3, soit (ln x)x−3=0.BIl est im-
portant lorsqu’on
utilise SciPy de
travailler avec les
fonctions usuelles
(sin,ln, etc.) de
NumPy ou de
SciPy, conçues
pour travailler avec
des tableaux. Il ne
faut surtout pas
utiliser celles de
la librairie math
vue dans un TP
précédent qui ne
sont pas conçues
pour travailler avec
des tableaux et
peuvent mener à
des résultats faux.
C’est pour cela
qu’on utilise from
scipy import *.
1 from sci py import ∗#Pour utiliser les fonctions mathématiques de scipy
2 from sci py . optimize import brentq #Pour utiliser directement brentq
3def f ( x ) :
4return log ( x)∗∗x−3
5 s o l = brentq ( f , 1 , 10 0)
6print("racine ␣ pour␣x=" , s o l )
L’instruction from scipy import * permet d’importer toutes les fonctions de SciPy, entre autres les
fonctions usuelles comme log, qui correspond au logarithme népérien (log10 correspond au logarithme
en base 10), ainsi que toutes les fonctions de la librairie NumPy qui est incluse dans SciPy.
La documentation de la fonction brentq sur le site internet de scipy précise son mode d’emploi.
D’après la documentation, quelle est la signification des trois arguments de la fonction brentq ?
Revenons au pendule, on veut déterminer l’instant tpour lequel θ(t)vaut θ0= 0,1rad. Dans le cas
général, l’équation θ0=Aer1t+Ber2tn’a pas de solution analytique : on doit la résoudre numériquement.
Adapter le code proposé pour déterminer l’instant pour lequel θ(t)vaut θ0= 0,1rad. (Utiliser les
valeurs de A et B déterminées précédemment).
3.2 Cas de solutions multiples
Quand une équation a plusieurs solutions sur un domaine donné, brentq n’en retourne qu’une seule,
qui dépend des paramètres de l’algorithme de résolution. Pour déterminer les différentes solutions d’une
équation, on peut s’appuyer sur une étude graphique de la fonction associée.
Le code ci-dessous trace l’allure de sin x+x2pour x∈[0,2] :
1 from sci py import ∗
2 import m at p l ot l i b . pyp lo t as p l t #Permet de tracer des graphes
3 x = l i n s p a c e ( 0 , 2 , 50 )
4 y = s in ( x) + x∗∗2
5 p l t . p l ot ( x , y )
6 p l t . show ( )
Revenons au pendule, si l’amortissement n’est pas trop important, il oscille et son mouvement est de
la forme θ(t) = θme−t/τ cos(ωt +ϕ). On s’intéresse à un cas particulier où θm= 0,2rad, τ= 3 s,
ω= 3 rad ·s−1et ϕ= 0.
2 TP Informatique - Python
Lycée Montesquieu