TP 3 : Modules et packages en Python
Un module est un fichier Python qui contient des définitions de fonctions et variables, réunies autour d'un même thème. Un package réunit plusieurs modules.
Une des forces de Python et son grand nombre de modules disponibles, et notamment dans les domaines scientifiques.
Par exemple, math
est un module qui existe déjà lorsque vous installez Python et qui permet d'utiliser des fonctions mathématiques. Pour pouvoir l'utiliser, il faut l'importer :
import math
Ensuite, on peut utiliser les fonctions de math
en les préfixant par math
(ce qui sert à distinguer une fonction de math
avec une fonction de l'utilisateur qui aurait le même nom) :
math.exp(1) # fonction exponentielle
2.718281828459045
scipy.integrate
permet d'intégrer des fonctions.
from scipy import integrate
def f(x): # la fonction qu'on va intégrer
return x
integrate.quad(f, 1, 2)
(1.5, 1.6653345369377348e-14)
scipy.integrate.quad(f, a, b)
donne la valeur de $\int_a^b f(x) dx$, avec une estimation de l'erreur sur le résultat.
Ainsi, sur l'exemple ci-dessus, on apprend que $\int_1^2 xdx = 1.5 ~(= \frac{3}{2})$
Exercice
Calculer avec SciPy la valeur de $\int_1^2 \frac{1}{x}dx$ et retrouver le résultat en utilisant math.ln
.
Solution
def f(x):
return 1/x
print(integrate.quad(f, 1, 2))
math.log(2)
(0.6931471805599454, 7.695479593116622e-15)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-3-14d72a1a305b> in <module> 3 4 print(integrate.quad(f, 1, 2)) ----> 5 math.log(2) NameError: name 'math' is not defined
Statistiques¶
scipy.stats
permet d'utiliser des fonctions statistiques. Par exemple, la loi normale :
from scipy import stats
gaussienne = stats.norm()
gaussienne.stats() # renvoie moyenne et variance
(array(0.), array(1.))
Exercice
Réécrire des fonctions moyenne
et variance
pour calculer la moyenne et la variance d'une liste de nombres.
SymPy¶
On étudie dans cette partie le module sympy
, qui permet de faire du calcul formel.
Exercice
- Importer
sympy
. - Écrire
from sympy.abc import x, y
. Ceci permet ensuite d'utiliserx
ety
comme variables indéterminées.
Manipulations simples¶
Exercice
expand
permet de développer une expression. Essayer avecexpand((x+y)**5)
.expand
permet aussi de développer une expression trigonométrique en utilisant l'optiontrig = True
. Essayer avecexpand(cos(2*x), trig = True)
et vérifier la réponse mathématiquement (les fonctions classiquescos
,sin
,tan
,ln
,exp
... sont définies danssympy
).- Retrouver aussi les formules pour $\cos(x+y)$ et $\sin(x+y)$.
factor
permet de factoriser une expression. Factoriser $x^3 - x^2 + x - 1$ à la main en trouvant une racine évidente, puis vérifier en écrivantfactor(x**3 - x**2 + x - 1)
.simplify
permet de simplifier une expression, par exemple en mettant au même dénominateur. Essayer avecsimplify(5*x/(2*x**3) + 4/(3*x))
et vérifier la réponse.
Limites, dérivées¶
Exercice
limit
permet de calculer une limite. Par exemple,limit(sin(x)/x, x, 0)
calcule $\lim_{x\longrightarrow0} \frac{\sin(x)}{x}$. Essayer et vérifier le résultat mathématiquement.- Calculer $\lim_{x\longrightarrow0} x^x$ mathématiquement et vérifier avec Python.
- $\infty$ est représenté par
oo
avecsympy
. Calculer $\lim_{x\longrightarrow\infty} \frac{x}{\ln(x)}$ avec Python. diff
permet de calculer la dérivée d'une expression. Essayer par exemplediff(cos(x), x)
.- Les fonctions $\arccos$, $\arcsin$... existent dans
sympy
sous les nomsacos
,asin
. Retrouver les dérivées de $\arccos$ et $\arcsin$ avec Python. - Calculer la dérivée de $x \longmapsto \arctan(x) + \arctan(\frac{1}{x})$ avec Python (on pourra utiliser
simplify
pour simplifier la dérivée obtenue) et en déduire que $\forall x > 0$, $\arctan(x) + \arctan(\frac{1}{x}) = \frac{\pi}{2}$. integrate
permet de trouver une primitive d'une expression. Essayer par exempleintegrate(1/x, x)
.- Trouver une primitive de $\ln$, de $\frac{1}{x\ln(x)}$, de $x \exp(x)$.
- On peut aussi calculer une intégrale avec
integrate
, en précisant les bornes. Par exemple, $\int_{-1}^1 x^2 \sin(x)dx$ se calcule en écrivantintegrate(x**2 * sin(x), (x, -1, 1))
. Essayer puis expliquer comment on aurait pu trouver immédiatement ce résultat. - Calculer $\int_{-\infty}^{\infty} e^{-x^2} dx$ (intégrale de Gauss).
Résolution d'équations¶
Exercice
- On peut résoudre une équation du type $f(x) = 0$ en écrivant
solve(f(x), x)
, qui renvoie la liste des solutions. Par exemple, on peut écriresolve(x**2 - x - 1, x)
pour résoudre $x^2 - x - 1 = 0$. Essayer et retrouver le résultat mathématiquement. - On peut aussi résoudre des systèmes d'équations linéaires à plusieurs inconnues. Par exemple, \
solve([x + 5*y - 2, -3*x + 6*y - 15], [x, y])
permet de résoudre le système: $$x + 5y - 2 = 0$$ $$-3x + 6y - 15 = 0$$ Vérifier à la main la solution renvoyée par Python.
Séries¶
series
permet de trouver le developpement limité d'une fonction. Par exemple, series(cos(x), x, 0, 8)
donne le développement limité en 0 de $\cos$, à l'ordre 8.
Exercice
- Retrouver les développements limités en 0 usuels: $\ln(1+x)$, $\sqrt{1+x}$, $\tan(x)$...
apart
permet de développer une fraction en éléments simples. Essayerapart(1/(x*(x+1)))
et vérifier le résultat.