L'interpréteur Python

Les bases :

Lorsque l'on lance python depuis le système d'exploitation on accède à l'interpéteur Python :

Console Python

Cette console s'utilise un peu comme une calculatrice. Dans ce notebook on utilisera les cellules de code afin de taper du code.

Afin d'exécuter une ligne de code il suffit de cliquer sur le bouton "play" à côté de la cellule correspondante.

In [2]:
2*5
Out[2]:
10

On peut ainsi taper des calculs, déclarer des variables et leur faire "subir" quelques opérations :

In [3]:
maVariable = 7
double = 2 * maVariable

double # permet d'afficher le contenu de la variable double
Out[3]:
14

Pour utiliser certains fonctions mathématiques, il faut auparavant les "importer" à partir du module math

In [4]:
from math import cos, pi # on importe la fonction cosinus, la valeur de pi 

cos(2*pi)
Out[4]:
1.0

Interagir avec l'interpréteur :

On peut poser des questions à l'utilisateur avec input() :

In [5]:
reponse = input("Comment t'appeles-tu ?")

"Bonjour " + reponse + " !"
Comment t'appeles-tu ?Nicolas
Out[5]:
'Bonjour Nicolas !'
In [6]:
x = float( input("Quelle est la valeur de x ? ") )
# le float permet de convertir la réponse en un nombre décimal
y = x**2

y
Quelle est la valeur de x ? 3
Out[6]:
9.0

Représentations de courbes :

Avant d'aller plus loin, installons les modules nécessaires :

In [7]:
pip install numpy matplotlib sympy
Requirement already satisfied: numpy in c:\programdata\anaconda3\lib\site-packages (1.16.2)
Requirement already satisfied: matplotlib in c:\programdata\anaconda3\lib\site-packages (3.0.3)
Requirement already satisfied: sympy in c:\programdata\anaconda3\lib\site-packages (1.3)
Requirement already satisfied: cycler>=0.10 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (0.10.0)
Requirement already satisfied: kiwisolver>=1.0.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (1.0.1)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (2.3.1)
Requirement already satisfied: python-dateutil>=2.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (2.8.0)
Requirement already satisfied: six in c:\programdata\anaconda3\lib\site-packages (from cycler>=0.10->matplotlib) (1.12.0)
Requirement already satisfied: setuptools in c:\programdata\anaconda3\lib\site-packages (from kiwisolver>=1.0.1->matplotlib) (40.8.0)
Note: you may need to restart the kernel to use updated packages.

On peut représenter graphiquement des fonctions rapidement :

In [15]:
import numpy as np
import matplotlib.pyplot as plt

abscisses = np.arange(-10, 5, 0.01) # cette fonction crée des valeurs entre -10 et 5 espacéées de 0.01 
ordonnees = abscisses *2 -3 # on applique la fonction x->2x - 3 aux valeurs précédentes

plt.plot(abscisses, ordonnees) # on représente les abscisses et les ordonnées
Out[15]:
[<matplotlib.lines.Line2D at 0x1c46e688358>]

Un exemple plus élaboré :

In [9]:
import numpy as np
import matplotlib.pyplot as plt

abscisses = np.arange(-2*pi, 2*pi, 0.01)

cosinus = np.cos(abscisses) # on applique la fonction x->cos(x) aux valeurs d'abscisses
sinus = np.sin(abscisses) # on applique la fonction x->sin(x) aux valeurs d'abscisses

plt.plot(abscisses, cosinus, 'b-') # on représente le cosinus par une ligne bleue ('b-')
plt.plot(abscisses, sinus , 'r-') # on représente le sinus par une ligne rouge ('r-')
Out[9]:
[<matplotlib.lines.Line2D at 0x1c46d336a58>]

Pourriez-vous représenter les fonctions $x\mapsto x$, $x\mapsto \sqrt{x}$ et $x\mapsto x^2$ pour les valeurs de $x$ comprises entre $0$ et $1$ ?

In [10]:
import numpy as np
import matplotlib.pyplot as plt

abscisses = np.arange(0, 1, 0.001)

x = abscisses
xcarre = abscisses * abscisses
xracine = np.sqrt(abscisses)

plt.plot(x, x, 'b-')
plt.plot(x, xcarre, 'r-')
plt.plot(x, xracine, 'g-')
Out[10]:
[<matplotlib.lines.Line2D at 0x1c46d2b7908>]

Calcul symbolique :

La bibliothèque sympy permet de faire du calcul symbolique (résoudre des équations, dériver...)

Les équations

In [11]:
from sympy import *

x = Symbol('x')

solve(2*x+3) # on résout l'équation 2x + 3 = 0 (le '=0' est sous-entendu)
Out[11]:
[-3/2]
In [12]:
x, y= symbols('x y')

solve([2*x-5*y+1, 3*x+2*y-8]) # on résout le système d'équations 2x-5y=-1 ; 3x+2y = 8
Out[12]:
{x: 2, y: 1}

Calcul différentiel

In [13]:
diff(x**2)
Out[13]:
2*x
In [14]:
integrate(x**2)
Out[14]:
x**3/3