Possibilités d’un carnet Jupyter#
Cette cellule contient une note pour le présentateur. Elle sera affichée dnas une secondes fenêtre lorsque ce carnet est utilisé comme diaporama.
Objectifs de ce carnet#
Mettre en avant les principales possibilités d’un carnet Jupyter.
Voir comment chaque aspect d’un carnet est pris en compte en convertissant le carnet.
Melange texte, formule, code et résultats#
On cherche à déterminer si l’équation \(a.x^2 + b.x + c = 0\) admet des solutions réelles pour \(x\) sachant que \(a, b, c \in \mathbb{R}\) sont trois constantes réelles.
def nombre_solutions_reelles(a, b, c):
delta = b**2 - 4*a*c
if delta > 0:
return 2 # 2 solutions réelles
elif delta == 0:
return 1 # 1 solution réelle (double)
else:
return 0 # pas de solution réelle
nombre_solutions_reelles(2, 1, -1)
2
Tableau et images#
Format SVG |
format PNG |
|
|---|---|---|
Fichier local |
|
|
Fichier distant |
|
|
Lecture d’un fichier CSV en ligne#
import pandas
url = "https://data.iledefrance-mobilites.fr/api/explore/v2.1/catalog/"
url += "datasets/emplacement-des-gares-idf-data-generalisee/exports/csv"
# Lecture du tableau de données en ligne
df = pandas.read_csv(url, sep=";")
# Réduction du tableau à une sélection de 4 colonnes
df = df[["nom_long","exploitant","x","y"]]
df.head(3) # affiche les 3 premières lignes du tableau
| nom_long | exploitant | x | y | |
|---|---|---|---|---|
| 0 | Vaires-Torcy | SNCF | 673418.2649 | 6.863970e+06 |
| 1 | Lognes | RATP | 673078.4318 | 6.859970e+06 |
| 2 | Torcy | RATP | 674687.4504 | 6.860010e+06 |
Interaction avec l’utilisateur#
Le module ipywidgets permet la saisie « graphique » de donnée et le recalcule automatique d’une fonction Python, ici affiche_somme_de_2_carres()
import ipywidgets
def affiche_somme_de_2_carres(a=1, b=1):
"""Calcule et affiche la somme de 2 nombre au carrée."""
f_string = "a² + b² = {:.1f} pour a = {:.1f} et b = {:.1f}"
print(f_string.format(a**2 + b**2, a, b))
ipywidgets.interact(
affiche_somme_de_2_carres,
a=(-5.0,5.0,0.1),
b=(-5.0,5.0,0.1),
)
<function __main__.affiche_somme_de_2_carres(a=1, b=1)>
Il est égualement possible d’utiliser un décorateur de fonction @ pour un code plus compact.
import ipywidgets
@ipywidgets.interact(a=(-5.0,5.0,0.1), b=(-5.0,5.0,0.1))
def affiche_somme_de_2_carres(a=1, b=1):
"""Calcule et affiche la somme de 2 nombre au carrée."""
f_string = "a² + b² = {:.1f} pour a = {:.1f} et b = {:.1f}"
print(f_string.format(a**2 + b**2, a, b))
Interaction avec l’utilisateur (2)#
La fonction trace une elipse dont l’utilisateur choisit de façon interactive le ratio entre son grand axe et son petit axe, et son l’angle par rapport à l’horizontale.
Importation des modules Python nécessaires
import ipywidgets
import matplotlib.pyplot as plt
import numpy as np
Fonction pour générer les points d’une ellipse
def genere_ellipse(ratio, angle):
"""Génere des points répartis sur une ellipse.
Parameters
----------
ratio : float
Rapport entre le grand axe et le petit axe.
angle : float
Angle entre Ox et le grand axe.
Returns
-------
x : list
Liste de l'abscisse des points.
y : list
Liste de l'ordonnée des points.
"""
t = np.linspace(0, 2 * np.pi, 100)
x = ratio * np.cos(t) * np.cos(angle) - 1/ratio * np.sin(t) * np.sin(angle)
y = ratio * np.cos(t) * np.sin(angle) + 1/ratio * np.sin(t) * np.cos(angle)
return x, y
Fonction qui trace des points sur une figure avec la bibliothèque matplotlib
def trace_points(x, y):
"""Trace les points (x, y)."""
fig, ax = plt.subplots()
ax.plot(x, y, lw=2)
ax.set_aspect('equal')
ax.set_xlim([-2, 2])
ax.set_ylim([-2, 2])
Fonction qui trace des points d’une ellipse
@ipywidgets.interact(ratio=(0.5,2.0,0.1), angle=(-3.34/2,3.14/2,0.1))
def trace_ellipse(ratio, angle):
trace_points(*genere_ellipse(ratio, angle))
