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'utiliserxetycomme variables indéterminées.
Manipulations simples¶
Exercice
expandpermet de développer une expression. Essayer avecexpand((x+y)**5).expandpermet 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)$.
factorpermet 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).simplifypermet 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
limitpermet 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
ooavecsympy. Calculer $\lim_{x\longrightarrow\infty} \frac{x}{\ln(x)}$ avec Python. diffpermet de calculer la dérivée d'une expression. Essayer par exemplediff(cos(x), x).- Les fonctions $\arccos$, $\arcsin$... existent dans
sympysous 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
simplifypour simplifier la dérivée obtenue) et en déduire que $\forall x > 0$, $\arctan(x) + \arctan(\frac{1}{x}) = \frac{\pi}{2}$. integratepermet 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)$...
apartpermet de développer une fraction en éléments simples. Essayerapart(1/(x*(x+1)))et vérifier le résultat.