
Apr�s les polyn�mes d'interpolation de Lagrange vus comme des vecteurs, on s'int�resse maintenant aux polyn�mes de Lagrange vus comme les vecteurs d'une base orthonorm�e.
On va d'abord montrer que la famille de polyn�mes de Lagrange (l0, l1, �, ln) forme une base orthonorm�e d'un espace vectoriel.
Ensuite, on va reprendre notre classe Polynome_lagrange cr�e pr�c�demment pour y ajouter des m�thodes afin notamment d'�valuer le produit scalaire et le coefficient de corr�lation portant sur ces vecteurs.
Enfin, on va tester ces nouvelles fonctions dans l'environnement Python.
II. Base orthonorm�e
D'apr�s Wikipedia, en g�om�trie vectorielle, une base orthonormale ou base orthonorm�e d'un espace euclidien ou hermitien est une base de cet espace vectoriel constitu�e de vecteurs de norme 1 et orthogonaux deux � deux. Dans une telle base, les coordonn�es d'un vecteur quelconque de l'espace sont �gales aux produits scalaires respectifs de ce vecteur par chacun des vecteurs de base, et le produit scalaire de deux vecteurs quelconques a une expression canonique en fonction de leurs coordonn�es.
II-A. Rep�re orthonorm�
Soit An un espace affine euclidien associ� � l'espace vectoriel euclidien En et O un point quelconque de An, alors un rep�re affine :
R = (O, e1, e2, ..., en)
est dit orthonormal (ou orthonorm�) si sa base associ�e B = (e1, e2, ..., en) est elle-m�me orthonormale.
II-B. Produit scalaire canonique
Dans un espace Rn, espace euclidien de dimension n, on appelle produit scalaire canonique de Rn l'application qui, aux vecteurs y = (y1, y2, �, yn) et z = (z1, z2, �, zn) de Rn associe la quantit� :
On sait aussi que si deux vecteurs sont orthogonaux leur produit scalaire est nul.
Le produit scalaire peut �tre utilis� pour d�terminer le travail d'une force lors d'un d�placement : le travail de la force F selon le trajet u est le produit scalaire de ces deux vecteurs. Si maintenant F et u sont orthogonaux, la force F n'est pas "efficace" sur le d�placement u et le produit scalaire correspondant au travail de la force F selon le trajet u est nul.
II-C. Norme
Dans un espace Rn, la norme d'un vecteur y = (y1, y2, �, yn) est donn�e par :
II-D. Coefficient de corr�lation
Les deux s�ries de valeurs Y(y1, �, yn) et Z(z1, �, zn) peuvent �tre consid�r�es comme des vecteurs dans un espace � n dimensions. Rempla�ons-les par des vecteurs centr�s : Y'(y1 − my, �, yn − my) et Z'(z1 − mz, �, zn − mz) o� my et mz repr�sentent respectivement les moyennes des y et des z.
Le produit scalaire entre ces vecteurs est donn� par la formule suivante (produit scalaire norm�) :
Y'∙Z' = ‖Y'‖∙‖Z'‖∙cos(α) = cov(Y, Z) o� cov(Y, Z) repr�sente la covariance de Y et Z.
Le cosinus de l'angle α entre ces vecteurs est alors tel que :
cos(α) = Y'∙Z' / (‖Y'‖∙‖Z'‖) = cov(Y, Z) / (‖Y'‖∙‖Z'‖)
Il s'agit du coefficient de corr�lation compris entre -1 et +1 qui donne une indication sur le degr� de corr�lation lin�aire entre deux variables.
Si le coefficient est proche de -1 ou +1 les variables sont tr�s fortement corr�l�es, s'il est proche de 0 elles sont tr�s peu li�es.
Bien s�r, du point de vue g�om�trique, on ne parle pas de � corr�lation lin�aire � : le coefficient de corr�lation a toujours un sens, quelle que soit sa valeur entre �1 et 1. Il nous renseigne de fa�on pr�cise, non pas tant sur le degr� de d�pendance entre les variables, que sur leur distance angulaire dans un espace � n dimensions : si le coefficient vaut -1 ou +1 les deux vecteurs sont colin�aires et s'il est �gal � 0 les vecteurs sont orthogonaux.
III. Polyn�mes d'interpolation de Lagrange
Soit n + 1 points (x0, y0), �, (xn, yn) (avec les xi des r�els distincts deux � deux).
Le polyn�me d'interpolation de Lagrange de degr� au plus n qui passe par ces points est d�fini par :
III-A. Espace des polyn�mes
L �tant une combinaison lin�aire de polyn�mes de degr� n, il est de degr� au plus n et appartient donc � l'ensemble ℝn[X].
�tant donn� n + 1 r�els distincts x0, �, xn, l'ensemble des polyn�mes que l'on peut construire avec la famille de polyn�mes (l0, l1, �, ln) constitue un espace vectoriel muni de deux lois :
- une loi de composition interne � + �, appel�e addition ou somme vectorielle ;
- une loi de composition externe � gauche � � �, appel�e multiplication par un scalaire.
III-B. Base des polyn�mes
On se donne � nouveau n + 1 r�els distincts x0, �, xn. Pour tout polyn�me P appartenant � un espace ℝn[X] des polyn�mes, si on pose yi = P(xi), P �tant le polyn�me d'interpolation correspondant aux points, il est �gal au polyn�me L d�fini pr�c�demment.
On a alors :
Et donc (l0, l1, �, ln) forme une famille g�n�ratrice de ℝn[X] et son cardinal (�gal � n + 1) est �gal � la dimension de l'espace.
Par exemple, en choisissant P = 1 ou P = X, on obtient :
On peut remarquer �galement que le polyn�me nul P = 0 est tel que :
Cela implique n�cessairement que :
On en d�duit que cette famille g�n�ratrice (l0, l1, �, ln) est �galement libre, et par cons�quent c'est une base de l'espace des polyn�mes qu'elle engendre.
De plus, les polyn�mes de Lagrange not�s lj(x) et d�finis pr�c�demment sont tels que :
Si maintenant on se donne 3 r�els distincts x0, x1 et x2, dans l'espace ℝ2[X] engendr� par la famille (l0, l1, l2), on obtient :
Par cons�quent, cette famille forme une base dont les vecteurs de norme 1 sont orthogonaux deux � deux (leur produit scalaire est nul), et elle constitue donc une base orthonorm�e de ℝ2[X]. Plus g�n�ralement, la famille g�n�ratrice (l0, l1, �, ln) forme une base orthonorm�e de ℝn[X].
Si vous souhaitez avoir plus d'information sur le sujet je vous invite � consulter la page Wikipedia Interpolation lagrangienne.
III-C. Produit scalaire
Consid�rons maintenant le produit scalaire des polyn�mes P et Q appartenant au m�me espace Rn de dimension n+1 et d�fini par :
III-D. Norme
Dans un espace de dimension n+1, la norme du polyn�me P est donn�e par :
III-E. Coefficient de corr�lation
Les deux s�ries de valeurs Y(y0, �, yn) et Z(z0, �, zn) peuvent �tre consid�r�es comme des vecteurs dans un espace � n+1 dimensions. Rempla�ons-les par des vecteurs centr�s : Y'(y0 − my, �, yn − my) et Z'(z0 − mz, �, zn − mz).
Le produit scalaire entre ces vecteurs est donn� par la formule suivante (produit scalaire norm�) :
Y'∙Z' = ‖Y'‖∙‖Z'‖∙cos(α) = cov(Y, Z)
Il vient donc :
cos(α) = Y'∙Z' / (‖Y'‖∙‖Z'‖) = cov(Y, Z) / (‖Y'‖∙‖Z'‖)
Il s'agit � nouveau du coefficient de corr�lation compris entre -1 et +1 qui donne une indication sur le degr� de corr�lation lin�aire entre Y et Z, ou du point de vue g�om�trique, sur l'�cart angulaire entre ces deux vecteurs.
IV. Impl�mentation en Python
Comme on a pu le montrer dans un pr�c�dent billet, ces polyn�mes d'interpolation peuvent donc �tre vus comme des vecteurs sur lesquels on peut r�aliser les op�rations d'addition et de multiplication par un scalaire.
Ils peuvent �tre d�finis en Python � l'aide d'une classe permettant ensuite de cr�er ces objets math�matiques et de r�aliser des op�rations entre eux. On va d'ailleurs ajouter aux op�rations d'addition et de multiplication par un scalaire, des m�thodes permettant d'�valuer la norme d'un vecteur, mais aussi le produit scalaire et le coefficient de corr�lation entre deux vecteurs :
IV-A. Produit scalaire
Pour r�aliser le produit scalaire entre 2 polyn�mes appartenant au m�me espace, nous devons ajouter une m�thode __matmul__() � notre classe qui va permettre de surcharger l'op�rateur � @ � :
Code Python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import numpy as np class Polynome_lagrange: ... def __matmul__(self, other): # méthode permettant de réaliser le produit scalaire entre les polynômes self et other # (y0, ..., yn)⋅(z0, ..., zn) = y0⋅z0 + ... + yn⋅zn # si other est un objet de la classe Polynome_lagrange if isinstance(other, Polynome_lagrange): # si les 2 vecteurs self et other sont définis dans la même base (l0, l1, ..., ln) if self.x==other.x: # calcul du produit scalaire des vecteurs self.y et other.y ps = self.y @ other.y # renvoie la valeur du produit scalaire return ps else: # sinon print("Les deux vecteurs ne sont pas définis dans la même base !") else: # sinon print("Le produit scalaire doit porter sur deux objets de la classe Polynome_lagrange !") |
Python dispose depuis sa version 3.5 d'un op�rateur @ permettant d'�valuer le produit scalaire de deux vecteurs numpy.
Pour tester notre op�rateur � @ � portant sur 2 objets de la classe Polynome_lagrange, nous ajoutons ces lignes de code :
Code Python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # création du 1er objet de la classe Polynome_lagrange p1 = Polynome_lagrange(x=[0, 1, 2], y=[1, 2, 1]) # création du 2e objet de la classe Polynome_lagrange p2 = Polynome_lagrange(x=[0, 1, 2], y=[-1, 1, -1]) # affiche les expressions des polynômes p1 et p2 print("p1 =", p1) print("p2 =", p2) print() # affiche l'appartenance de p1 et p2 à leur espace vectoriel : R2[X], Base = [L0, L1, L2], x = [0, 1, 2] print("p1 ∈ " + p1.espace() + ", Base = " + p1.base()) print("p2 ∈ " + p2.espace() + ", Base = " + p2.base()) print() # calcul du produit scalaire de p1 et p2 ps = (p1 @ p2) # affiche la valeur du produit scalaire de p1 et p2 print("p1⋅p2 = {0}".format(ps)) |
Le code affiche :
p1 = 1∙L0(X) + 2∙L1(X) + 1∙L2(X)
p2 = -1∙L0(X) + 1∙L1(X) + -1∙L2(X)
p1 ∈ ℝ2[X], Base = (L0, L1, L2), x = [0, 1, 2]
p2 ∈ ℝ2[X], Base = (L0, L1, L2), x = [0, 1, 2]
p1⋅p2 = 0
IV-B. Norme
Le calcul de la norme d'un polyn�me d'interpolation de Lagrange d�fini dans une base (l0, l1, ..., ln) se fait gr�ce � cette nouvelle m�thode :
Code Python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | import numpy as np class Polynome_lagrange: ... def norme(self): # méthode permettant d'évaluer la norme du vecteur self défini dans la base (l0, l1, ..., ln) # norme((y0, ..., yn)) = (y0*y0 + ... + yn*yn)^0.5 # calcul de la norme du vecteur self.y n = np.linalg.norm(self.y) # renvoie la valeur de la norme du vecteur return n |
La fonction norm du sous-module numpy.linalg permet de calculer la norme d'un vecteur selon la formule d�finie pr�c�demment.
Pour tester notre m�thode portant sur un objet de la classe Polynome_lagrange, nous ajoutons ces lignes de code :
Code Python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # création de l'objet de la classe Polynome_lagrange p = Polynome_lagrange(x=[0, 1, 2], y=[1, 1, 1]) # affiche l'expression du polynôme p print("p =", p) print() # affiche l'appartenance de p à leur espace vectoriel : R2[X], Base = [L0, L1, L2], x = [0, 1, 2] print("p ∈ " + p.espace() + ", Base = " + p.base()) print() # calcul la norme de p n = p.norme() # affiche la valeur de la norme de p print("norme(p) = {0}".format(n)) |
L'ex�cution du code affiche :
p = 1∙L0(X) + 1∙L1(X) + 1∙L2(X)
p ∈ ℝ2[X], Base = (L0, L1, L2), x = [0, 1, 2]
norme(p) = 1.7320508075688772
IV-C. Coefficient de corr�lation
Le calcul du coefficient de corr�lation entre deux vecteurs appartenant au m�me espace vectoriel s'effectue avec cette m�thode :
Code Python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import numpy as np class Polynome_lagrange: ... def coef_corr(self, other): # méthode permettant d'évaluer le coefficient de corrélation entre self et other # si other est un objet de la classe Polynome_lagrange if isinstance(other, Polynome_lagrange): # si les 2 vecteurs self et other sont définis dans la même base (l0, l1, ..., ln) if self.x==other.x: # calcul du coefficient de corrélation entre self.y et other.y r = round(np.corrcoef(self.y, other.y)[0, 1], 12) # renvoi du coefficient de corrélation return r else: # sinon print("Les deux vecteurs ne sont pas définis dans la même base !") else: # sinon print("Le coefficient de corrélation doit porter sur deux objets de la classe Polynome_lagrange !") |
La fonction corrcoef du module numpy permet de calculer le coefficient de corr�lation de deux vecteurs suivant la formule pr�sent�e plus haut. Ce coefficient donne notamment une indication sur l'�cart angulaire entre les deux vecteurs.
Testons maintenant notre m�thode :
Code Python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # création du 1er objet de la classe Polynome_lagrange p1 = Polynome_lagrange(x=[0, 1, 2], y=[1, 2, 5]) # création du 2e objet de la classe Polynome_lagrange p2 = Polynome_lagrange(x=[0, 1, 2], y=[1, 3, 9]) # affiche les expressions des polynômes p1 et p2 print("p1 =", p1) print("p2 =", p2) print() # affiche l'appartenance de p1 et p2 à leur espace vectoriel : R2[X], Base = (L0, L1, L2), x = [0, 1, 2] print("p1 ∈ " + p1.espace() + ", Base = " + p1.base()) print("p2 ∈ " + p2.espace() + ", Base = " + p2.base()) print() # calcul du coefficient de corrélation entre p1 et p2 r = p1.coef_corr(p2) # affiche la valeur du coefficient de corrélation print("coef_corr(p1,⋅p2) = {0}".format(r)) |
L'ex�cution du code affiche :
p1 = 1∙L0(X) + 2∙L1(X) + 5∙L2(X)
p2 = 1∙L0(X) + 3∙L1(X) + 9∙L2(X)
p1 ∈ ℝ2[X], Base = (L0, L1, L2), x = [0, 1, 2]
p2 ∈ ℝ2[X], Base = (L0, L1, L2), x = [0, 1, 2]
coef_corr(p1,⋅p2) = 1.0
Dans ce test le polyn�me p1 correspond en fait � la fonction polynomiale y(x) = 1 + x2 d�finie sur l'intervalle [0, 2] et p2 � la fonction z(x) = 1 + 2x2 d�finie sur ce m�me intervalle. Le r�sultat donne donc un coefficient de corr�lation entre Y et Z �gal � 1 indiquant que ces deux variables sont lin�airement corr�l�es. En effet, � partir des fonctions polynomiales on peut facilement obtenir la relation lin�aire Z = 2Y - 1.
Du point de vue g�om�trique, ce coefficient �gal � 1 indique que les deux vecteurs sont colin�aires.
IV-D. Module
On pr�sente pour finir le module complet pour effectuer les diff�rents tests :
Code Python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 | import numpy as np class Polynome_lagrange(): def __init__(self, x, y): # méthode constructeur de la classe # si les deux listes ont la même taille if len(x)==len(y): # on définit la liste de valeurs en x permettant d'obtenir la famille de polynômes (l0, l1, ..., ln) représentant une base dans ℝn[X] self.x = x # on définit le tableau de valeurs en y représentant les coordonnées du vecteur (tableau numpy) self.y = np.array(y) else: # sinon print("Les deux listes de valeurs x et y doivent avoir la même dimension !") def __str__(self): # permet d'afficher le polynôme sous la forme y0*L0(X) + ... + yn*Ln(X) Lx = '' # parcours des y for j in range(len(self.y)): Lx += str(self.y[j]) + "∙L" + str(j) + "(X)" + " + " return Lx[:-3] def espace(self): # retourne l'espace vectoriel du polynôme self : R2[X] n = len(self.x)-1 # retourne l'espace vectoriel du polynôme d'interpolation de Lagrange return "ℝ{0}[X]".format(n) def base(self): # retourne la base de polynômes de self : (L0, L1, L2), x = [0, 1, 2] n = len(self.x)-1 base = "" # parcours des indices des polynômes de lagrange Li for i in range(n+1): base += "L" + str(i) + ", " # création de la famille : (L0, L1, L2) base = "(" + base[:-2] + ")" # retourne la base du polynôme d'interpolation de Lagrange return "{0}, x = {1}".format(base, self.x) def __add__(self, other): # méthode permettant de redéfinir l'opérateur « + » pour 2 polynômes d'interpolation de Lagrange ou 2 vecteurs : # (y0, ..., yn) + (z0, ..., zn) = (y0 + z0, ..., yn + zn) # si other est un objet de la classe Polynome_lagrange if isinstance(other, Polynome_lagrange): # si les 2 vecteurs self et other sont définis dans la même base (l0, l1, ..., ln) if self.x==other.x: # addition des 2 vecteurs self.y et other.y (2 tableaux numpy) y = self.y + other.y # renvoie le polynômes résultat de l'addition des 2 polynômes self et other return Polynome_lagrange(self.x, y) else: # sinon print("Les deux vecteurs ne sont pas définis dans la même base !") else: # sinon print("Le produit scalaire doit porter sur deux objets de la classe Polynome_lagrange !") def __mul__(self, s): # méthode permettant de multiplier other par un scalaire s. # s*(y0, ..., yn) = (s*y0, ..., s*yn) # multiplication du vecteur self.y par le scalaire s y = s*self.y # renvoie le polynôme d'interpolation de Lagrange résultat de la multiplication de self par le scalaire s return Polynome_lagrange(self.x, y) def __matmul__(self, other): # méthode permettant de réaliser le produit scalaire entre les polynômes self et other # (y0, ..., yn)⋅(z0, ..., zn) = y0⋅z0 + ... + yn⋅zn # si other est un objet de la classe Polynome_lagrange if isinstance(other, Polynome_lagrange): # si les 2 vecteurs self et other sont définis dans la même base (l0, l1, ..., ln) if self.x==other.x: # calcul du produit scalaire des vecteurs self.y et other.y ps = self.y @ other.y # renvoie la valeur du produit scalaire return ps else: # sinon print("Les deux vecteurs ne sont pas définis dans la même base !") else: # sinon print("Le produit scalaire doit porter sur deux objets de la classe Polynome_lagrange !") def norme(self): # méthode permettant d'évaluer la norme du vecteur self défini dans la base (l0, l1, ..., ln) # norme((y0, ..., yn)) = (y0*y0 + ... + yn*yn)^0.5 # calcul de la norme du vecteur self.y n = np.linalg.norm(self.y) # renvoie la valeur de la norme du vecteur return n def coef_corr(self, other): # méthode permettant d'évaluer le coefficient de corrélation entre self et other # si other est un objet de la classe Polynome_lagrange if isinstance(other, Polynome_lagrange): # si les 2 vecteurs self et other sont définis dans la même base (l0, l1, ..., ln) if self.x==other.x: # calcul du coefficient de corrélation entre self.y et other.y r = round(np.corrcoef(self.y, other.y)[0, 1], 12) # renvoi du coefficient de corrélation return r else: # sinon print("Les deux vecteurs ne sont pas définis dans la même base !") else: # sinon print("Le coefficient de corrélation doit porter sur deux objets de la classe Polynome_lagrange !") def __eq__(self, other): # méthode permettant de redéfinir l'opérateur « == » pour 2 polynômes d'interpolation de Lagrange # renvoie True si les bases et les listes de coordonnées des vecteurs sont identiques return (self.x==other.x) and np.array_equal(self.y,other.y) def __call__(self, X): # permet d'évaluer le polynôme d'interpolation de Lagrange en fonction de X et des valeurs de x et y # initialisation de la variable Lx Lx = 0 # parcours des y for j in range(len(self.y)): lj = 1 # parcours des x for i in range(len(self.x)): if i!=j: lj *= (X - self.x[i])/(self.x[j] - self.x[i]) # ajour de la valeur de lj*y[j] à Lx Lx +=self.y[j]*lj # renvoie la valeur de Lx return Lx # fonction lambda permettant de changer le type d'appel pour évaluer le coefficient de corrélation # r = p1.coef_corr(p2) -> r = coef_corr(p1, p2) coef_corr = lambda p1,p2 : p1.coef_corr(p2) print("IV-A. Évaluation du produit scalaire de deux polynômes\n") # création du 1er objet de la classe Polynome_lagrange p1 = Polynome_lagrange(x=[0, 1, 2], y=[1, 2, 1]) # création du 2e objet de la classe Polynome_lagrange p2 = Polynome_lagrange(x=[0, 1, 2], y=[-1, 1, -1]) # affiche les expressions des polynômes p1 et p2 print("p1 =", p1) print("p2 =", p2) print() # affiche l'appartenance de p1 et p2 à leur espace vectoriel : R2[X], Base = (L0, L1, L2), x = [0, 1, 2] print("p1 ∈ " + p1.espace() + ", Base = " + p1.base()) print("p2 ∈ " + p2.espace() + ", Base = " + p2.base()) print() # calcul du produit scalaire de p1 et p2 ps = (p1 @ p2) # affiche la valeur du produit scalaire de p1 et p2 print("p1⋅p2 = {0}".format(ps)) print();print() print("IV-B. Évaluation de la norme d'un polynôme\n") # création de l'objet de la classe Polynome_lagrange p = Polynome_lagrange(x=[0, 1, 2], y=[1, 1, 1]) # affiche l'expression du polynôme p print("p =", p) print() # affiche l'appartenance de p à leur espace vectoriel : R2[X], Base = (L0, L1, L2), x = [0, 1, 2] print("p ∈ " + p.espace() + ", Base = " + p.base()) print() # calcul la norme de p n = p.norme() # affiche la valeur de la norme de p print("norme(p) = {0}".format(n)) print();print() print("IV-C. Évaluation du coefficient de corrélation entre deux vecteurs\n") # création du 1er objet de la classe Polynome_lagrange p1 = Polynome_lagrange(x=[0, 1, 2], y=[1, 2, 5]) # création du 2e objet de la classe Polynome_lagrange p2 = Polynome_lagrange(x=[0, 1, 2], y=[1, 3, 9]) # affiche les expressions des polynômes p1 et p2 print("p1 =", p1) print("p2 =", p2) print() # affiche l'appartenance de p1 et p2 à leur espace vectoriel : R2[X], Base = (L0, L1, L2), x = [0, 1, 2] print("p1 ∈ " + p1.espace() + ", Base = " + p1.base()) print("p2 ∈ " + p2.espace() + ", Base = " + p2.base()) print() # calcul du coefficient de corrélation entre p1 et p2 #r = p1.coef_corr(p2) r = coef_corr(p1, p2) # affiche la valeur du coefficient de corrélation print("coef_corr(p1,⋅p2) = {0}".format(r)) |
V. Conclusion
Apr�s avoir montr� que la famille des polyn�mes de Lagrange (l0, l1, �, ln) constitue une base orthonorm�e de l'espace des polyn�mes ℝn[X], on a pu expliquer comment �valuer le produit scalaire et le coefficient de corr�lation entre ces vecteurs.
Ensuite, on a pu �galement ajouter ces nouvelles op�rations � notre classe Polynome_Lagrange pour enfin les tester dans l'environnement Python.
Sources :
https://fr.wikipedia.org/wiki/Base_orthonorm%C3%A9e
https://fr.wikipedia.org/wiki/Base_canonique
https://fr.wikipedia.org/wiki/Produit_scalaire
https://fr.wikipedia.org/wiki/Produi...aire_canonique
https://fr.wikipedia.org/wiki/Corr%C...(statistiques)
https://fr.wikipedia.org/wiki/Covariance
https://fr.wikipedia.org/wiki/Interp...n_lagrangienne
https://docs.python.org/fr/3/library/operator.html
Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.