Outils pour utilisateurs

Outils du site


itc:tps:tp1:exercice1

Calcul de la moyenne d'une liste de nombre

Exercice 1 du TP1

On suppose que l'on a une liste L, de longueur n = len(L) > 0, de nombres.

Question 1

Écrire une fonction moyenne qui

  • prend en argument une telle liste,
  • renvoie en retour la moyenne

$$m = \frac{1}{n} \sum_{i=0}^{n-1} \text{L}[i]$$

La tester sur quelques exemples.

Bien tester les fonctions

Quand on teste rapidement, la première idée qui vient est de passer par une vérification visuelle à l'aide d'un print. On fait quelque chose comme :

# test de la fonction moyenne
L = [4, 12, 17, 9, 3]
m = moyenne(L)
print(m)

Et on est content si le programme affiche le 9 attendu. Mais supposez que vous ayez toute une série de test à faire. Alors votre programme affichera toute un tas de résultats et vous aurez dû mal à vous y retrouver…

Une meilleure façon de faire est d'anticiper que la moyenne pour L = [4, 12, 17, 9, 3] est 9 et donc d'écrire quelque chose comme “la moyenne de L devrait être 9” ce qui se traduira ainsi :

# test de la fonction moyenne
L = [4, 12, 17, 9, 3]
assert moyenne(L) == 9

Ainsi, si le programme est juste, il n'y aura aucun message. Si moyenne ne donne pas le résultat attendu, on aura une AssertionError indiquant que l'égalité demandée n'est pas satisfaite.

Définition assertion : Proposition, de forme affirmative ou négative, qu'on avance et qu'on donne comme vraie.

coût temporel de la fonction

Préciser le nombre d’opérations (additions et division) nécessaires pour faire ce calcul en fonction de la taille de L – c'est à dire le nombre d'élément de L, soit encore n = len(L).

Question 2

On rappelle que la variance de la liste L considérée comme une série statistique est la moyenne des carrés des écarts à la moyenne, c’est-à-dire

$$V = \frac{1}{n} \sum_{i=0}^{n-1} (\text{L}[i] - m)^2$$

Un théorème dit que V est aussi égal à la moyenne des carrés des éléments de L moins le carré de la moyenne de L, ce que l'on peut écrire :

$$V = \frac{1}{n}\left(\sum_{i=0}^{n-1} \text{L}[i]^2 \right) - m^2$$

Placez vous à la suite du fichier programme précédent !

En supposant que la fonction moyenne est déjà écrite donc utilisable, écrire deux fonctions variance1 et variance2 qui pour une liste de nombres retourne sa variance en utilisant chacune des deux caractérisations de la variance données ci-dessus.

Vous pouvez utiliser des tableaux en compréhension. Par exemple, si T est un tableau, on peut produire un tableau avec les doubles en une ligne simple :

T =  [4, 12, 7, 5]
doubles = [2*item for item in T]

Cette notation ressemble à celle utiliser en mathématique pour les ensembles, on écrirait $doubles = \left\lbrace 2\,x ,x \in T\right\rbrace$.

Coût temporel de la fonction

Préciser le nombre d’opérations élémentaires nécessaires pour une liste de longueur n pour chacune des deux fonctions

itc/tps/tp1/exercice1.txt · Dernière modification : de goupillwiki