Lien vers le repository GitHub du TP : https://classroom.github.com/a/8UyWSW6k
Reproduire ces jolies règles de multiplication que l’on trouve dans le Talkhys, un traité d’arithmétique d’Ibn Albanna, mathématicien marocain de la première moitié du XIIIe siècle (code à écrire dans exo_1.py
)
1 × 1 = 1
11 × 11 = 121
111 × 111 = 12321
1111 × 1111 = 1234321
11111 × 11111 = 123454321
111111 × 111111 = 12345654321
1111111 × 1111111 = 1234567654321
11111111 × 11111111 = 123456787654321
111111111 × 111111111 = 12345678987654321
Une liste peut être utilisée comme une représentation simple d’un polynôme, $P(x)$, où les éléments sont les coefficients des puissances de $x$ successives et les indices sont les puissances elles-mêmes. Ainsi le polynôme $P(x)=3+6x+2x^3$ sera représenté par la liste [3,6,0,2]
.
Pourquoi la tentative suivante pour dériver un polynôme échoue-t-elle (explication à fournir dans exo_2.md
) ? Corriger exo_2.py
en utilisant le moins de caractères possible.
P = [3, 6, 0, 2]
dPdx = []
for i, c in enumerate(P[1:]):
dPdx.append(i*c)
dPdx
[0, 0, 4]
Utiliser une boucle for
pour estimer π à partir des 20 premiers termes de la série de Madhava-Leibniz : $\pi=\sqrt{12}\left(1-\frac{1}{3\cdot 3}+\frac{1}{5\cdot 3^2}-\frac{1}{7\cdot 3^3}+\cdots\right)$
Code à écrire dans exo_3.py
.
Trier une liste de tuples les range dans l’ordre des premiers éléments de chaque tuple. Si deux premiers éléments sont identiques, on compare les deuxièmes, etc.
a = (3,1), (2,0), (1,4), (1,-1), (0,2)
a = list(a)
sorted(a)
[(0, 2), (1, -1), (1, 4), (2, 0), (3, 1)]
Cela suggère une méthode utilisant zip
pour trier une liste en fonction des éléments d’une autre.
Mettre au point et utiliser cette méthode sur les données suivantes donnant le nombre d’heures d’ensoleillement pendant l’année 2018 dans différentes villes afin de trier ces villes de la plus ensoleillée à la moins ensoleillée (les données sont déjà écrites dans exo_4.py
).
Bordeaux | Brest | Limoges | Lyon | Marseille | Nantes |
---|---|---|---|---|---|
2031 | 1676 | 1932 | 2145 | 2773 | 2101 |
Nice | Paris | Pau | La Rochelle | Strasbourg | Tours |
2504 | 1995 | 1821 | 2424 | 2124 | 2050 |
La loi de Benford prévoit la distribution des fréquences du premier chiffre des nombres présents dans divers ensembles de données. Cette distribution n’est pas uniforme : le chiffre 1 est plus souvent en première position que le 2, le 2 que le 3, et ainsi de suite.Cette loi peut par exemple se vérifier sur les prix dans un supermarché et a déjà été utilisée pour déceler des fraudes fiscales.
La probabilité pour que le chiffre $d$ soit en première position est donnée par la loi suivante : $P(d)=\log_{10}\left(\frac{d+1}{d}\right)$ La loi est d’autant mieux vérifiée que le jeu de données couvre plusieurs ordres de grandeur.
Démontrer à l’aide d’un programme (à écrire dans exo_5.py
) que les premiers chiffres des 500 premiers éléments de la suite de Fibonacci suivent bien la loi.
Aide : pour récupérer le premier chiffre, on pourra transformer les éléments de la suite en chaîne de caractères puis transformer le premier caractère en entier avec int()
.