0% ont trouvé ce document utile (0 vote)
41 vues8 pages

11 Modelisation

Transféré par

Beur AMV- 상단
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues8 pages

11 Modelisation

Transféré par

Beur AMV- 상단
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Les modélisations

Code sous licence creative commun CC BY-NC-SA BY Gaëlle Rebolini


Dans ce tutoriel, on apprendra à modéliser un nuage de points.
Reprenons l’exemple de la loi d’Ohm (Tutoriel sur le tracé d’un graphique 1re partie) et modélisons la courbe
obtenue.
Affichons la courbe obtenue avant modélisation :
In [1]:
import numpy as np
import [Link] as plt
%matplotlib inline

# tableaux numpy impératifs pour réaliser le calcul (vectorisé) de


# la tension modélisée Umodel lors de la modélisation ultérieure

I=[Link]([0,25e-3,50e-3,75e-3,100e-3,125e-3])
U=[Link]([0,1.8,3.3,5.2,6.8,8.5])

fig = [Link](figsize=(12,10))
[Link](I,U,'r+',label='U=f(I)')
[Link]()
[Link]("intensité I (A)")
[Link]("tension U (V)")
[Link]()
[Link]("Caractéristique Intensité-Tension dun dipôle ohmique")
[Link]()

1
Première partie : Modélisation à l’aide de la fonction polyfit de la bibliothèque numpy

Si le nuage de points est modélisable par une fonction polynomiale, on peut utiliser la fonction [Link]( x , y ,
deg) de la bibliothèque numpy as np.
Le paramètre deg correspond au degré du polynôme.
La fonction polyfit retourne un tableau numpy à une dimension de coefficients p qui minimisent l’erreur à l’aide
de la méthode des moindres carrés dans l’ordre : deg , deg-1 ,. . . 0
P( x ) = p[0] × x deg + p[1] × x deg−1 ... + p[deg]
D’autres paramètres existent. Pour plus d’informations :
[Link]
Dans le cadre du programme de physique-chimie au lycée, on a besoin au plus de polynômes du second degré.
• Pour un polynôme de degré 2 : P( x ) = p[0] × x2 + p[1] × x + p[2]
• Pour un polynôme de degré 1 : P( x ) = p[0] × x + p[1]

2
• Pour un polynôme de degré 0 : P( x ) = p[0]
Modélisons maintenant la courbe obtenue par une droite (polynôme de degré 1) et affichons les coefficients :
In [2]:
coeff=[Link](I, U,1)
print(coeff[0],coeff[1])

67.88571428571427 0.023809523809522625
Avec une décimale :
In [3]:
print ('{0:.1f}'.format(coeff[0]),'{0:.1f}'.format(coeff[1]))

67.9 0.0
Créons l’équation de la droite modélisée grâce à ces coefficients et affichons cette équation ainsi que son tableau
de valeurs :
In [4]:
Umodel = coeff[0]*I+coeff[1]
print('U={0:.1f}'.format(coeff[0]),'xI+{0:.1f}'.format(coeff[1]))
print(Umodel)

U=67.9 xI+0.0
[0.02380952 1.72095238 3.41809524 5.1152381 6.81238095 8.50952381]
Affichons maintenant les points expérimentaux et la droite modélisée sur le même graphique :
NOTE CODAGE : ‘r+’ à la ligne 2 permet d’afficher un + rouge pour chaque point expérimental alors que ‘b-’
à la ligne 3 permet de relier les points modélisés par des segments de droite bleus.
In [5]:
fig = [Link](figsize=(12,10))
[Link](U,I,'r+',label='U=f(I)')
[Link](Umodel,I,'b-',label='modèle linéaire')
[Link]()
[Link]("intensité I (A)")
[Link]("tension U (V)")
[Link]()
[Link]("Caractéristique Intensité-Tension dun dipôle ohmique")
[Link]()

3
Voici le programme dans sa totalité afin d’y voir un peu plus clair !
In [6]:
import numpy as np
import [Link] as plt
%matplotlib inline

I=[Link]([0,25e-3,50e-3,75e-3,100e-3,125e-3])
U=[Link]([0,1.8,3.3,5.2,6.8,8.5])

coeff=[Link](I, U,1)
Umodel = coeff[0]*I+coeff[1]
print('U={0:.1f}'.format(coeff[0]),'xI+{0:.1f}'.format(coeff[1]))

fig = [Link](figsize=(12,10))
[Link](U,I,'r+',label='U=f(I)')
[Link](Umodel,I,'b-',label='modèle linéaire')
[Link]()
[Link]("intensité I (A)")

4
[Link]("tension U (V)")
[Link]()
[Link]("Caractéristique Intensité-Tension dun dipôle ohmique")
[Link]()

U=67.9 xI+0.0

Deuxième partie : Modélisation à l’aide de la fonction linregress du module stats de la bibliothèque


scipy

Afin de réaliser une régression linéaire, il est aussi possible d’utiliser la fonction linregress issue du module stats
de la bibliothèque scipy :
slope, intercept, r_value, p_value, std_error = [Link](x,y).
Cette fonction est un plus ardue d’utilisation pour des débutants mais permet d’obtenir la valeur du coefficient
de corrélation. Elle retourne cinq variables dont seules les 3 premières sont utiles en spécialité physique : - slope
: le coefficient directeur (ou pente) - intercept : l’ordonnée à l’origine - r_value : le coefficient de correlation -
p_value : “valeur de p bilatérale pour un test d’hypothèse dont l’hypothèse nulle est que la pente est nulle” :

5
cette valeur sera d’autant plus grande que la probabilité d’avoir une pente nulle est importante. Par contre, si la
probabilité d’avoir une pente nulle est nulle, alors cette valeur sera nulle elle-aussi. - std_error : “Erreur standard
d’estimation” : plus cette valeur est faible et plus l’estimation de la pente est précise.
Pour plus d’informations : [Link]
Modélisons maintenant la courbe obtenue par une droite et affichons les variables de sortie qui nous intéresse :
In [7]:
from scipy import stats
slope, intercept, r_value, p_value, std_error = [Link](I,U)
print ('pente :',slope)
print ("ordonnée à l'origine :", intercept)
print ('coefficient de corrélation r :',r_value)

pente : 67.88571428571429
ordonnée à l'origine : 0.023809523809523725
coefficient de corrélation r : 0.999720478354276
Créons l’équation de la droite modélisée et affichons cette équation ainsi que son tableau de valeurs :
In [8]:
Umodel = slope*I+intercept
print ('U={0:.1f}'.format(slope),'xI+{0:.1f}'.format(intercept))
print(Umodel)

U=67.9 xI+0.0
[0.02380952 1.72095238 3.41809524 5.1152381 6.81238095 8.50952381]
Affichons maintenant les points expérimentaux et la droite modélisée sur le même graphique :
In [9]:
fig = [Link](figsize=(12,10))
[Link](U,I,'r+',label='U=f(I)')
[Link](Umodel,I,'b-',label='modèle linéaire')
[Link]()
[Link]("intensité I (A)")
[Link]("tension U (V)")
[Link]()
[Link]("Caractéristique Intensité-Tension dun dipôle ohmique")
[Link]()

6
Voici le programme dans sa totalité afin d’y voir un peu plus clair !
In [10]:
import numpy as np
from scipy import stats
import [Link] as plt
%matplotlib inline

I=[Link]([0,25e-3,50e-3,75e-3,100e-3,125e-3])
U=[Link]([0,1.8,3.3,5.2,6.8,8.5])

slope, intercept, r_value, p_value, std_error = [Link](I,U)


Umodel = slope*I+intercept
print ('U={0:.1f}'.format(slope),'xI+{0:.1f}'.format(intercept))
print ('coefficient de corrélation r :',r_value)

fig = [Link](figsize=(12,10))
[Link](U,I,'r+',label='U=f(I)')

7
[Link](Umodel,I,'b-',label='modèle linéaire')
[Link]()
[Link]("intensité I (A)")
[Link]("tension U (V)")
[Link]()
[Link]("Caractéristique Intensité-Tension dun dipôle ohmique")
[Link]()

U=67.9 xI+0.0
coefficient de corrélation r : 0.999720478354276

Vous aimerez peut-être aussi