Exercice : Calculs statistiques

Rappels pour la gestion des fichiers :

1
f=open('fichier.txt','w')

Explications : 'fichier.txt' désigne le nom du fichier. Le mode d’ouverture peut-être ’w’ pour « écriture » (wrtie), ’r’ pour « lecture » (read) ou ’a’ pour « ajout » (append).

1
f.readline()

Explication : lecture d’une ligne de l’objet fichier f

1
\n

Explication : caractère d’échappement : saut de ligne

1
c1.strip()

Explication : renvoie une chaîne sans les espaces et les caractères d’échappement (saut de ligne par exemple) en début et en fin de la chaîne de caractère c1

1
c1.strip(';')

Explication : sépare une chaîne de caractères (c1) en une liste de mots avec le séparateur ’ ;’

1
f.write('exemple')

Explication : écrit dans l’objet fichier f la chaîne de caractères ’exemple’

1
f.close()

Explication : ferme le fichier

Question

Ecrire un programme Python permettant de créer un fichier ’droite.txt’ contenant les éléments suivants :

10 : nombre de points du fichier

25 ;10.9 : abscisse et ordonnée du premier point

20 ; 9.3

15 ; 8.2

12 ; 7.5

9 ; 6.2

6 ; 5.8

3 ; 4.2

0 ; 3.9

-3 ; 2.8

-6 ; 2 : abscisse et ordonnée du dernier point

Solution

1
x=[25, 20, 15, 12, 9, 6, 3, 0, -3, -6]
2
y=[10.9, 9.3, 8.2, 7.5, 6.2, 5.8, 4.2, 3.9, 2.8, 2]
3
n=len(x)
4
5
f=open('droite.txt', 'w')    #création du fichier 'droite.txt' en écriture
6
f.write(str(n)+'\n')     # première ligne avec la longueur de la liste
7
for i in range(n) : 
8
  f.write(str(x[i])+';'+str(y[i]+'\n'))
9
f.close()                # fermeture du fichier

Question

Ecrire un programme Python permettant d’ouvrir un fichier .txt (par exemple ’droite.txt’) et de récupérer les abscisses et les ordonnées dans deux listes.

Solution

1
f=open('droite.txt', 'r')
2
n=int(f.readline())    # nombre de points
3
x=[]
4
y=[]
5
for i in range(n):
6
  ligne=f.readline()
7
  ligne2=ligne.strip()   # enlève les caractères d'échappement
8
  xchaine, ychaine=ligne2.split(';')
9
  x.append(float(xchaine)) # conversion de l'abscisse en type float
10
  y.append(float(ychaine))
11
f.close()

Question

On cherche à modéliser les n points expérimentaux \((x_1,y_1), (x_2, y_2) \,... \, (x_n, y_n)\) par une fonction polynôme du premier ordre, de la forme : \(y=ax+b\).

\(a=\dfrac{n\sum\limits_{i=1}^{n}x_i\,y_i-\Bigl(\sum\limits_{i=1}^n x_i \Bigr) \Bigl(\sum\limits_{i=1}^n y_i \Bigr)}{n\sum\limits_{i=1}^n {x_i}^2-\Bigl(\sum\limits_{i=1}^n x_i\Bigr)^2}\) et \(b=\bar y-a \bar x \)en notant \(\bar x\) la moyenne des \(x_i\) et \(\bar y\) la moyenne des \(y_i\).

Ecrire un programme Python permettant de calculer les coefficients \(a\) et \(b\) correspondant aux points expérimentaux du fichier ’droite.txt’.

Solution

1
sumx=0
2
sumy=0
3
sumprodxy=0
4
moy_x=0
5
moy_y=0
6
sumcarrex=0
7
for i in range(n):
8
  sumx=sumx+x[i]
9
  sumy=sumy+y[i]
10
  sumprodxy=sumprodxy+x[i]*y[i]
11
  moy_x=moy_x+x[i]
12
  moy_y=moy_y+y[i]
13
  sumcarrex+=x[i]**2
14
moy_x=moy_x/n
15
moy_y=moy_y/n
16
17
a=(n*sumprodxy-sumx*sumy)/(n*sumcarrex-sumx**2)
18
b=moy_y-a*moy_x

Question

Ecrire un programme Python permettant de représenter graphiquement la fonction \(y_{\text{modélisé}}=ax+b\).

Solution

1
import matplotlib.pyplot as plt
2
3
ymodelise=[a*elt+b for elt in x]
4
plt.plot(x, ymodelise)