COURS/TP5 : bibliothèques et fonctions usuelles

Introduction

Un des points forts du langage de programmation Python est le nombre de bibliothèques existantes permettant ainsi de créer de nouveaux programmes de manière plus confortable. Par exemple, il n'est pas nécessaire d'écrire des fonctions usuelles comme exponentielle, logarithme : elles sont présentes dans la bibliothèque numpy. Pour tracer un graphique, on fera appel à bibliothèque numpy.

Importation de bibliothèques

Une bibliothèque Python peut être vue comme un fichier contenant de nombreuses fonctions utilisables. La syntaxe est la suivante :

import nom_bibliotheque

parfois, le nom de la bibliothèque est un peu long. On peut alors lui donner un alias. Cela s'écrit ainsi :

import nom_bibliotheque as alias

Dans le programme, il suffit alors de manipuler l'alias plutôt que le nom entier de la bibliothèque.

Par exemple :

In [11]:
import numpy # importation de la bibliothèque numpy
numpy.exp # fonction exponentielle présente dans numpy
Out[11]:
<ufunc 'exp'>
In [12]:
import numpy as np # le nom numpy est trop long ! on lui donne l'alias de np
np.log #fonction ln présente dans numpy
Out[12]:
<ufunc 'log'>

Manipulation d'une bibliothèque

Pour utiliser une fonction de la biliothèque, on procède ainsi :

  • on commmence par importer la bibliothèque contenant la fonction,
  • puis on fait appel à cette fonction.

Une fois qu'une bibliothèque est importée, il est possible d'utiliser toutes les fonctions de celle-ci. Par exemple :

In [6]:
import numpy as np

print(np.exp(10))
print(np.sin(np.pi))
22026.465794806718
1.2246467991473532e-16

Il est difficile (et non nécessaire) de connaître toutes les fonctions d'une bibliothèque. Pour faire appel à une fonction particulière, il est possible de consulter la documentation en ligne pour la bibliothèque correspondante. On peut aussi utiliser l'aide Python ainsi :

nom_commande?

ceci permet de voir l'aide d'une fonction en particulier également Par exemple :

In [ ]:
numpy?
np.exp?

Il est également possible de trouver une fonction à l'aide d'initiales et de lire les fonctions apparaissant dans une fenêtre.

In [ ]:
 

Fonctions usuelles en Python

On pourra retrouver les différentes fonctions usuelles dans la bibliothèque numpy.

In [ ]:
import numpy as np
np.exp
np.log
np.sin
np.cos
np.tan
np.arcsin
np.arccos
np.arctan
np.abs
np.floor

On peut alors utiliser ces fonctions pour en créer des nouvelles. Par exemple, si on veut implémenter la fonction $f:x\mapsto \arctan(\exp(x))$ on procède ainsi :

In [13]:
def f_n(x) :
    return np.arctan(np.exp(x))

Tracé de graphe

Pour tracer un graphe, on utilise la bibliothèque matplotlib.pyplot. On peut par exemple procéder ainsi pour la fonction $f_n$.

In [17]:
import matplotlib.pyplot as plt
L = [i/100 for i in range(101)] # création d'une liste de points du segment [0,1]
M = [f_n(x) for x in L]         # création de la liste des images par f de la fonction précédente
plt.plot(L,M)                   # tracé à l'aide de la fonction plot.
Out[17]:
[<matplotlib.lines.Line2D at 0x7fe6099ccc10>]

Exercices

Exercice 1

Écrire une fonction intervalle(a,b,n) prenant en arguments deux réels $a<b$ et un entier naturel $n$ et qui renvoit une liste de $n$ points $a_0=a<a_1<\cdots <a_{n-1}=b$ uniformément répartis sur le segment $[a,b]$. On ne fera pas appel à une bibliothèque.

Il existe une fonction dans la bibliothèque numpy correspondant à cette fonction. Retrouvez la fonction.

Exercice 2

Écrire des fonctions Python correspondant aux fonctions suivantes :

  • $f:x\mapsto \frac{e^x +e^{-x}}{2}$
  • $g:x \mapsto x+\sin(x)$
  • $h:x \mapsto \arctan(x)^2 + e^x$

Tracer le graphe de ces fonctions sur le segment $[0,1]$ puis sur le segment $[-2,2]$. On prendra pour le premier segment $50$ points pour le deuxième $100$ points.

Exercice 3 (math-info)

On veut trouver la plus grande valeur de $\sqrt[n]{n}$ pour $n\in \mathbb{N}^{\star}$.

  • Tracer le graphe de la fonction $f : x \mapsto e^{\frac{\ln(x)}{x}}$ sur le segment $[1,10]$.

  • Quelle valeur de $n$ pouvez-vous conjecturer ?

  • Étudier les variations de la fonction $f$. En déduire la valeur du $n$ demandée.

Exercice 4 (approximation de réels)

Étant donnée une fonction continue d'une variable réelle $f$, pour trouver une approximation d'une solution de l'équation $f(x)=0$ il est courant d'utiliser la dichotomie. Pour cela, on trouve un intervalle $[a,b]$ où l'on a $f(a)<0$ et $f(b)>0$.On pose alors $c=\frac{a+b}{2}$. On calcule $f(c)$ si $f(c)>0$ on répète l'opération sur le segment $[a,c]$. Sinon, on considère le segment $[c,b]$.

À l'aide du principe de dichotomie, écrire une fonction approx(epsilon) qui prend en argument un réel strictement positif $\epsilon$ et qui renvoit un segment une liste de réels $[a,b]$ avec $0\leq b-a\leq \epsilon$ et vérifiant $a\leq \sqrt{2} \leq b$.

Indication : on pourra utiliser la fonction $f:x \mapsto x^2 -2$.

Exercice 5

On considère la suite définie par : $u_0>0$ et $\forall n \in \mathbb{N}, u_{n+1}=\frac{1}{1+(u_n)}$.

  • Écrire une fonction suite(u0,n) qui prend en arguments un réel $u_0>0$ et un entier naturel $n$ et qui renvoit la valeur de $u_n$.

  • Conjecturer des propriétés sur la suite $(u_n)_{n\in \mathbb{N}}$ (par ex : bornée ? convergente ?).

Exercice 6

Écrire une fonction trace(a) prenant en argument un réel $a$ et qui trace le graphe de la fonction $f: x \mapsto \exp(\sin(x))$ sur le segment $[a-1,a+1]$ ainsi que le graphe de la tangente à $C_f$ au point $(a,f(a))$. On placera les deux graphes sur une même fenêtre.

Exercice 7

À l'aide de fonction Python, conjecturer une limite en $+\infty$ pour les fonctions suivantes :

  • $f_1 : x \mapsto \frac{e^x + 3}{x^5} $
  • $f_2 : x \mapsto \frac{\ln(x)^3 +2}{x^2+1}$
  • $f_3: x \mapsto \frac{\sqrt{x^2+x+1}}{3x+2}$
  • $f_4 : x \mapsto \sqrt{x^2+1}-\sqrt{x^2-1}$

Calculer ces limites mathématiquement.

In [ ]: