Vous êtes sur la page 1sur 36

Marcel Délèze

Edition 2017

§3 Ajustements au sens des moindres carrés


§ 3.1 Ajustement par une combinaison linéaire de fonctions à une variable

Exemple: Ajustement d'une droite

Enoncé du problème d'ajustement au sens des moindres carrés


Une expérience de physique consiste à mesurer le volume y d'un gaz, à pression constante, en
fonction de la température x:

x [°C] x1 x2 .. xn
y [cm 3 ] y1 y2 .. yn

n désigne le nombre de mesures effectuées. Figure pour n = 5:

y5

y4

y3

y2

y1

x1 x2 x3 x4 x5

Pour des raisons physiques, on postule que y est une fonction affine de x:
y = ax+b
Etant donné l'imprécision des mesures, la loi théorique n'est vérifiée qu'approximativement:

Printed by Wolfram Mathematica Student Edition


2 3_ajust.nb


y5 e5


y4 e4


y3 e3

e2 y2


e1 y1

x1 x2 x3 x4 x5

Les écarts suivants sont appelés "résidus"


e1 = y1 - (a x1 + b), e2 = y2 - (a x2 + b), ..., en = yn - (a xn + b)
"Ajuster la droite au sens des moindres carrés" signifie qu'il faut déterminer a, b de manière que la
somme des carrés des résidus soit minimale
e21 + e22 + ... + e2n = min

Réduction du problème d'ajustement à un problème de projection


e21 + e22 + ... + e2n = (y1 - a x1 - b)2 + (y2 - a x2 - b)2 + ... + (yn - a xn - b)2 =
y1 - a x 1 - b 2 y1 x1 1 2

y2 - a x 2 - b y2 x2 1
∥ ∥ = ∥ -a -b ∥
... ... ... ...
yn - a x n - b yn xn 1
Autrement dit, dans ℝn , on donne le vecteur
y1
 y2
y=
...
yn
et le sous-espace G, engendré par les vecteurs
x1 1
x2 1 
g1 = , g2 = , dont les éléments sont g = a g 1 + b g2
... ...
xn 1
Déterminez les nombres a, b tels que
 2
∥y - g ∥ = min

Nous avons étudié, dans le § 2, que la solution est la projection orthogonale 


g de 
y sur G déter-
minée par les conditions suivantes

g = a g1 + b g2
   
e = y - g = y - a g1 - b g2
 
e .g1 = 0 et e .g2 = 0

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 3

On obtient ainsi les équations normales


y - a g - b g .g = 0 et  y - a g1 - b g2 .g2 = 0
1 2 1

y.g1 - a g1 .g1 - b g2 .g1 = 0 et y.g2 - a g1 .g2 - b g2 .g2 = 0
g .g a + g .g b = y.g et g .g a + g .g b =  y.g
1 1 2 1 1 1 2 2 2 2

g1 .g1 g2 .g1 
y.g
a
 =  1
g1 .g2 g2 .g2 b y.g2
Les coefficients du système sont
n
g1 .g1 = x21 + x22 + ... + x2n =  x2i
i=1
n
g2 .g1 = x1 + x2 + ... + xn =  xi = g1 .g2
i=1
2 2 2
g2 .g2 = 1 + 1 + ... + 1 = n
n

y.g1 = y1 x1 + y2 x2 + ... + yn xn =  xi yi
i=1
n

y.g2 = y1 + y2 + ... + yn =  yi
i=1

Les équations normales prennent la forme


∑ni=1 x2i ∑ni=1 xi a ∑ni=1 xi yi
 =
∑ni=1 xi n b ∑ni=1 yi

Exemple numérique et résolution des équations normales


x = {1, 3, 4, 6, 8, 9, 11, 14};
y = {1, 2, 4, 4, 5, 7, 8, 9};

x 1 3 4 6 8 9 11 14
y 1 2 4 4 5 7 8 9

n = Length[x]
longueur

g1 = 
x
g2 = Table[1, {n}]
table

{1, 1, 1, 1, 1, 1, 1, 1}

m = {{x.x, x.g2}, {g2.x, g2.g2}}; MatrixForm[m]


apparence matricielle

 524 56 
56 8

v = {y.x, y.g2}
{364, 40}

Printed by Wolfram Mathematica Student Edition


4 3_ajust.nb

{a, b} = LinearSolve[m, v]
résous équation linéaire
7 6
 , 
11 11

Les valeurs de a et b peuvent aussi être estimées approximativement à partir d'un graphique:

10


e8


8 e7


e6


e5

⇀ ⇀
4 e3 e4


2 e2


e1

0 2 4 6 8 10 12 14

Finalement, nous avons résolu le problème en 5 étapes:


1. formulation du problème d'ajustement;
2. réduction du problème d'ajustement à un problème de moindres carrés;
3. réduction du problème de moindres carrés à un problème de projection orthogonale;
4. réduction du problème de projection orthogonale à un système d'équations normales;
5. résolution du système d'équations.

Autre méthode de calcul : la fonction Fit[..] de Mathematica


? Fit

Fit[data, funs, vars] finds a least-squares fit to a list of data as a linear combination of the functions funs of variables vars. 

donnees = Transpose[{x, y}]


transposée

{{1, 1}, {3, 2}, {4, 4}, {6, 4}, {8, 5}, {9, 7}, {11, 8}, {14, 9}}

Comme la lettre x est déjà utilisée pour désigner la liste des abscisses, on doit choisir une autre
lettre pour désigner la variable. Si on choisit comme variable le symbole t, les fonctions de base sont
f1 (t) = t, f2 (t) = 1
et la fonction que l'on cherche est une combinaison linéaire des deux fonctions de base
a t + b = a f1 (t) + b f2 (t)
f[t_] = Fit[donnees, {t, 1}, t]
ajuste

0.545455 + 0.636364 t

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 5

1
En prenant un autre exemple, Fitdonnees, t2 , , t signifie que l'on combine les fonctions
t
1 1
t ↦ t2 et t ↦ t
pour obtenir la fonction d'ajustement t ↦ a· t 2 + b · t
dans laquelle a et b sont les
deux inconnues du problème d'ajustement.
Remarque: pour définir la fonction, utiliser une assignation immédiate "=" plutôt qu'une assignation
différée ":=".

Exercice 3.1 - 1 [Sans ordinateur] Propriétés des résidus


On ajuste la droite y = a x + b aux n points de mesure (x1 , y1 ), ..., (xn , yn ) au sens des moindres
carrés. On note ei = yi - a xi - b les résidus pour i ∈ {1, 2, ..., n}. Démontrez que
a) la somme des résidus est nulle:
∑ni=1 ei = 0
b) la somme des résidus, pondérée par les abscisses, est nulle:
∑ni=1 xi ei = 0
Indication: Il s'agit de conséquences immédiates des équations normales.

Exercice 3.1 - 2 [Sans ordinateur] Ajustements à un paramètre


Reprenons les données de l'exemple numérique:

x 1 3 4 6 8 9 11 14
y 1 2 4 4 5 7 8 9

a) Ajustez la droite y = a x à ces données, au sens des moindres carrés.


Directive: répétez toute la démarche en 5 étapes.
b) Ajustez la droite y = b à ces données, au sens des moindres carrés.
Interprétez le résultat obtenu.

Exercice 3.1- 3 Ajustement d'une parabole


Voici une statistique des taux de natalité aux USA. Le taux de natalité est le nombre d'enfants nés
vivants en une année pour mille habitants
x = Range[1915, 1955, 5];
plage
y = {25.0, 23.7, 21.3, 18.9, 16.9, 17.9, 19.5, 23.6, 24.6};

x [an] 1915 1920 1925 1930 1935 1940 1945 1950 1955
y [pour mille par an] 25. 23.7 21.3 18.9 16.9 17.9 19.5 23.6 24.6

Printed by Wolfram Mathematica Student Edition


6 3_ajust.nb

ListLinePlot[Transpose[{x, y}], AxesOrigin → {1910, 15}]


tracé de liste de ⋯ transposée origine des axes

24

22

20

18

16

1920 1930 1940 1950

On y remarque l'effet de la crise de 1929. Fixons l'origine du temps au premier juillet 1935

x [an] - 20 - 15 - 10 - 5 0 5 10 15 20
y [pour mille par an] 25. 23.7 21.3 18.9 16.9 17.9 19.5 23.6 24.6

ListLinePlot[Transpose[{x, y}], AxesOrigin → {0, 15}]


tracé de liste de ⋯ transposée origine des axes

24

22

20

18

16

-20 -10 10 20

On demande d'ajuster la parabole y = a x2 + b x + c à ces données.


Directive: répétez toute la démarche en 5 étapes.
[Avec Mathematica] Faites une représentation graphique.

Exercice 3.1 - 4 Droite de régression de x en fonction de y


Parmi les étudiants de sexe masculin d'une université, on en a tiré 12 au hasard. On a mesuré leurs
masses x en kilogrammes et leurs tailles respectives y en centimètres:
x = {70, 68, 63, 72, 60, 66, 70, 74, 65, 62, 67, 65};
y = {155, 152, 150, 180, 135, 156, 168, 178, 160, 132, 145, 139};

x [kg] 70 68 63 72 60 66 70 74 65 62 67 65
y [cm] 155 152 150 180 135 156 168 178 160 132 145 139

Ajustons d'abord la droite y = a x + b au sens des moindres carrés; cette droite est aussi appelée

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 7

droite de régression de y en fonction de x; on obtient


Fit[Transpose[{x, y}], {t, 1}, t]
aju⋯ transposée

- 60.7461 + 3.21565 t

Ajustons ensuite la droite x = m y + p au sens des moindres carrés; cette droite est aussi appelée
droite de régression de x en fonction de y; on obtient
Fit[Transpose[{y, x}], {t, 1}, t]
aju⋯ transposée

31.1078 + 0.231733 t

Questions:
a) Pourquoi les deux fonctions affines ne sont-elles pas réciproques ?
b) Ajustez la droite y = a x + b en minimisant la somme des carrés des résidus horizontaux.
§ 3.2 Moindres carrés pondérés [Pour OS PAM seulement]
On peut donner plus d'importance à certaines mesures en les répétant. Reprenons l'exemple
numérique du § 3.1 en répétant deux fois la première mesure et trois fois la dernière:
x = {1, 1, 3, 4, 6, 8, 9, 11, 14, 14, 14};
y = {1, 1, 2, 4, 4, 5, 7, 8, 9, 9, 9};

x 1 1 3 4 6 8 9 11 14 14 14
y 1 1 2 4 4 5 7 8 9 9 9

Alors, dans l'expression des moindres carrés apparaissent des coefficients appelés "poids":
2 (1 - a 1 - b)2 + (2 - a 3 - b)2 + (4 - a 4 - b)2 + (4 - a 6 - b)2 +
(5 - a 8 - b)2 + (7 - a 9 - b)2 + (8 - a 11 - b)2 + 3 (9 - a 14 - b)2
Avec de tels poids, la réponse obtenue est différente:
donnees = Transpose[{x, y}];
transposée
Fit[donnees, {t, 1}, t]
ajuste

0.579315 + 0.619147 t

Plus généralement, on peut définir un problème de "moindres carrés pondérés"


c1 e21 + c2 e22 + ... + cn e2n = c1 (y1 - a x1 - b)2 + c2 (y2 - a x2 - b)2 + ... + cn (yn - a xn - b)2
où les poids c1 , c2 , ..., cn sont des nombres réels positifs (pas nécessairement entiers).
La méthode de résolution consiste à redéfinir un nouveau produit scalaire pondéré
→ →
u v = c1 u1 v1 + c2 u2 v2 + ... + cn un vn

Avec ce nouveau produit scalaire pondéré, la norme des vecteurs ne sera plus la norme euclidienne
usuelle mais sera aussi pondérée par les coefficients souhaités:
→ 2 → →
 ∥ e ∥ = e e = c1 e21 + c2 e22 + ... + cn e2n

Pour que la norme de ce vecteur soit minimale, il suffit de calculer la projection orthogonale en
remplaçant le produit scalaire usuel par le nouveau produit scalaire pondéré.

Printed by Wolfram Mathematica Student Edition


8 3_ajust.nb

Dans notre exemple numérique,


x = {1, 3, 4, 6, 8, 9, 11, 14};
y = {1, 2, 4, 4, 5, 7, 8, 9};
c = {2, 1, 1, 1, 1, 1, 1, 3};
Clear[u, v, ps];
efface
ps[u_List, v_List] := (c * u).v

n = Length[x]
longueur

g2 = Table[1, {n}]
table

{1, 1, 1, 1, 1, 1, 1, 1}

m = {{ps[x, x], ps[x, g2]}, {ps[g2, x], ps[g2, g2]}}; MatrixForm[m]


apparence matricielle

 917 85 
85 11

v = {ps[y, x], ps[y, g2]}


{617, 59}

{a, b} = LinearSolve[m, v]; N[{a, b}]


résous équation linéaire valeur numérique

{0.619147, 0.579315}

Exercice 3.2-1 [Pour OS PAM seulement]


Une statistique a montré que les couples (x, y) ne prenaient que les valeurs données dans le
tableau qui suit, avec les fréquences correspondantes c
x = {0, 1, 2, 3, 4, 5, 6, 7};
y = {100, 103, 107, 109, 111, 114, 117, 121};
c = {0.05, 0.1, 0.15, 0.2, 0.2, 0.15, 0.1, 0.05};

x 0 1 2 3 4 5 6 7
y 100 103 107 109 111 114 117 121
c 0.05 0.1 0.15 0.2 0.2 0.15 0.1 0.05

Ajustez la droite y = a x + b au sens des moindres carrés pondérés en prenant pour poids les
fréquences ci .
Directive: répétez toute la démarche en 5 étapes.
§ 3.3 Ajustement par une combinaison linéaire de fonctions à plusieurs variables

Exemple: Ajustement d'un plan


Le graphique d'une fonction de deux variables, par exemple
z = f (x, y) = -2 x - 3 y + 25
se présente comme une surface dans l'espace.

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 9

Plot3D[- 2 x - 3 y + 25, {x, 0, 5}, {y, 0, 5},


tracé de surfaces
ViewPoint → {3, 1, 1}, AxesLabel → {"x", "y", "z"}]
point de vue spatial titre d'axe

Dans le cas particulier où la fonction est affine


z = f (x, y) = a x + b y + c
la surface est un plan dont l'équation est
ax+by-z+c = 0
Etant donné un "nuage de points" et un plan, on appelle "résidus" les écarts entre les points et le
plan mesurés parallèlement à l'axe des z; on cherche le plan tel que la somme des carrés des
résidus soit minimale.
Choisissons comme variables les symboles s et t. On peut considérer la fonction cherchée comme
étant une combinaison linéaire des trois fonctions de base suivantes
f1 (s, t) = s, f2 (s, t) = t, f3 (s, t) = 1
En effet,
a f1 (s, t) + b f2 (s, t) + c f3 (s, t) = a s + b t + c

Exercice 3.3-1
On a choisi 12 garçons au hasard et on a mesuré
x = l'âge, en années;
y = le tour de taille, en cm;
z = le tour de poitrine, en cm.
x = {8, 10, 6, 11, 8, 7, 10, 9, 10, 6, 12, 9};
y = {57, 59, 49, 62, 51, 50, 55, 48, 52, 42, 61, 57};
z = {64, 71, 53, 67, 55, 58, 77, 57, 56, 51, 76, 68};

afficheTableau[{"x [an]", "y [cm]", "z [cm]"}, None, {x, y, z}]


aucun

x [an] 8 10 6 11 8 7 10 9 10 6 12 9
y [cm] 57 59 49 62 51 50 55 48 52 42 61 57
z [cm] 64 71 53 67 55 58 77 57 56 51 76 68

Ajustez la fonction z = a x + b y + c aux données, au sens des moindres carrés.


a) En répétant toute la démarche en 5 étapes.

Printed by Wolfram Mathematica Student Edition


10 3_ajust.nb

b) Avec la méthode Fit[..] de Mathematica.


§ 3.4 Ajustements trigonométriques
L'ajustement de données périodiques fait généralement appel aux fonctions trigonométriques.

Exemple
Ajustez les paramètres c0 , ..., c5 de la fonction
f (x) = c 0 + c1 cos (x) + c2 sin (x) + c3 cos (2 x) + c4 sin (2 x) + c5 cos (3 x)
aux données
2π 2π 2π 2π
(0, 0), , 0.2 , 2 , 0.5 , 3 , 0.3 , 4 , -0.2 ,
9 9 9 9
2π 2π 2π 2π
5 , -0.4 , 6 , -0.1 , 7 , 0.1 , 8 , -0.1 
9 9 9 9
Dans un premier temps, résolvons ce problème comme un ajustement au sens des moindres carrés
selon la méthode générale du § 3.1:
2π 2π 2π
p = {0, 0},  , 0.2, 2 , 0.5, 3 , 0.3,
9 9 9
2π 2π 2π 2π 2π
4 , - 0.2, 5 , - 0.4, 6 , - 0.1, 7 , 0.1, 8 , - 0.1;
9 9 9 9 9
x = Transpose[p][[1]]
transposée
2π 4π 2π 8π 10 π 4π 14 π 16 π
0, , , , , , , , 
9 9 3 9 9 3 9 9

n = Length[x]
longueur

Les vecteurs de base de l'espace sur lequel on effectue la projection sont


g[0] = Table[1, {n}]
table

{1, 1, 1, 1, 1, 1, 1, 1, 1}

g[1] = Cos[x]
cosinus
2π π 1 π π 1 π 2π
1, Cos , Sin , - , - Cos , - Cos , - , Sin , Cos 
9 18 2 9 9 2 18 9

g[2] = Sin[x]
sinus

2π π 3 π π 3 π 2π
0, Sin , Cos , , Sin , - Sin , - , - Cos , - Sin 
9 18 2 9 9 2 18 9

g[3] = Cos[2 x]
cosinus
π π 1 2π 2π 1 π π
1, Sin , - Cos , - , Cos , Cos , - , - Cos , Sin 
18 9 2 9 9 2 9 18

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 11

g[4] = Sin[2 x]
sinus

π π 3 2π 2π 3 π π
0, Cos , Sin , - , - Sin , Sin , , - Sin , - Cos 
18 9 2 9 9 2 9 18

g[5] = Cos[3 x]
cosinus
11 1 1 1 1
1, - , - , 1, - , - , 1, - , - 
2 2 2 2 2 2

k=6
6

Le système des équations normales est


m = Table[FullSimplify[g[i].g[j]], {j, 0, k - 1}, {i, 0, k - 1}];
table simplifie complètement
MatrixForm[m]
apparence matricielle
9 0 0 0 0 0
0 9 0 0 0 0
2
9
0 0 0 0 0
2
9
0 0 0 0 0
2
9
0 0 0 0 0
2
9
0 0 0 0 0
2

y = Transpose[p][[2]]
transposée

{0, 0.2, 0.5, 0.3, - 0.2, - 0.4, - 0.1, 0.1, - 0.1}

v = Table[g[j].y, {j, 0, k - 1}]


table

{0.3, 0.644609, 1.00157, - 1.10608, - 0.0427173, 0.15}

c = LinearSolve[m, v]
résous équation linéaire

{0.0333333, 0.143246, 0.222572, - 0.245795, - 0.00949273, 0.0333333}

La fonction d'ajustement est la meilleure approximation des données par un polynôme


trigonométrique
f[t_] = c.{1, Cos[t], Sin[t], Cos[2 t], Sin[2 t], Cos[3 t]}
cosinus sinus cosinus sinus cosinus

0.0333333 + 0.143246 Cos[t] - 0.245795 Cos[2 t] +


0.0333333 Cos[3 t] + 0.222572 Sin[t] - 0.00949273 Sin[2 t]

Printed by Wolfram Mathematica Student Edition


12 3_ajust.nb

Plot[f[t], {t, 0, 2 π}, Epilog → {PointSize[0.015], Map[Point, p]},


tracé de courbes épilogue taille des points app⋯point
PlotRange → 1.2 {Min[y], Max[y]}]
zone de tracé minimum maximum
0.6

0.4

0.2

1 2 3 4 5 6

-0.2

-0.4

Première idée de la méthode "transformée de Fourier rapide"


Dans le cas où il y a k fonctions de base
1, cos (x), sin (x), cos (2 x), sin (2 x), cos (3 x), sin (3 x), cos (4 x), ...
et n abscisses uniformément réparties sur une période
2π 2π 2π 2π 2π
0, ,2 ,3 , ..., (n - 2) , (n - 1)
n n n n n
avec k ≤ n, alors la méthode d'ajustement donne une matrice diagonale. La résolution du système
ne nécessite alors que très peu de calculs. En poursuivant l'effort d'optimisation, il est possible
d'organiser les calculs de telle manière que, même appliquée à des données volumineuses, la
méthode reste efficace. On parle alors de "transformée de Fourier rapide".

Généralisation
Fonctions de base de Fourier

Généralisons à des fonctions périodiques de période T. En posant ω = T
, choisissons les k fonc-
tions suivantes
f0 (t) = 1,
f1 (t) = cos (ω t), f2 (t) = sin (ω t),
f3 (t) = cos (2 ω t), f4 (t) = sin (2 ω t),
f5 (t) = cos (3 ω t), f6 (t) = sin (3 ω t),
f7 (t) = cos (4 ω t), ...,
fk-1 (t) = ⋯
c'est-à-dire
cos  j+1
2
 ω t si j est impair
f0 (t) = 1, fj (t) =  , j = 1, 2, ..., k - 1
sin  j2 ω t si j est pair

Echantillonnage ou discrétisation (ou "digitalisation")


Nous supposons que les abscisses d'échantillonnage sont uniformément réparties sur une période.
Plus précisément, dans l'intervalle de référence [0, T], on choisit

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 13

T
tj = j , j = 0, 1, ... , n - 1
n
On suppose que k ≤ n.
En ces abscisses, on donne les valeurs correspondantes
y0 , y1 , y2 , ..., yn-1
Vecteurs de base
Les vecteurs de base de l'espace vectoriel sur lequel on effectue la projection orthogonale sont
 g0 , g1 , ..., gk-1 
cos (0) cos (0)
1 cos  2nπ  cos  4nπ  fk-1 (t0 )
1 2π 4π
fk-1 (t1 )
1 cos 2 n
 cos 2 n
 fk-1 (t2 )
g0 = , g1 = , .., g3 = , .., gk-1 =
1 cos 3 2π
 cos 3 4π
 fk-1 (t3 )
n n
... ...
... ...
1 2π 4π fk-1 (tn-1 )
cos  (n-1)
n
 cos  (n-1)
n

Théorème 3.4
Avec les choix effectués ci-dessus, les vecteurs  g0 , g1 , ..., gk-1  sont orthogonaux, c'est-à-dire
gi .gj = 0 pour i≠j
En d'autres termes, les équations normales sont un système diagonal. (Voir exercices).
Corollaire
Pour ajuster la fonction
f (t) = c0 f0 (t) + c1 f1 (t) + ... + ck-1 fk-1 (t)
aux données, le calcul des coefficients peut s'effectuer simplement au moyen de la formule
y.gj
cj = , j = 0, 1, ..., k - 1
gj .gj
Ces coefficients sont appelés "coefficents de Fourier".
La fonction d'ajustement est périodique de période T .
Les résidus suivants sont minimaux au sens des moindres carrés:
e0 = y0 - f (t0 ), ..., ek-1 = yk-1 - f (tk-1 )
Application
Dans le cas où le nombre de points d'échantillonnage est élevé, la résolution des équations nor-
males peut prendre un temps excessif. On peut éviter de former la matrice m, le vecteur v et d'exé-
cuter LinearSolve[m, v]. En lieu et place, on utilise la forme explicite de la réponse:
y.g[j]
c = Table , {j, 0, k - 1}
table g[j].g[j]

{0.0333333, 0.143246, 0.222572, - 0.245795, - 0.00949273, 0.0333333}

Il est encore possible d'améliorer la vitesse de calcul (par exemple, on peut donner les valeurs de
g[i].g[j]) mais cela sortirait du cadre de ce cours. La méthode de calcul optimalisée s'appelle
"transformée de Fourier rapide" (en anglais "Fast Fourier Transform" abrégé FFT).
Cas particulier de l'interpolation

Printed by Wolfram Mathematica Student Edition


14 3_ajust.nb

Dans le cas où k = n, les résidus sont nuls et la fonction d'ajustement passe par les points donnés:
y0 = f (t0 ), ..., yn-1 = f (tn-1 )
Au lieu d'ajustement, on parle alors d'interpolation. Un chapitre entier est consacré à ce thème.

Exercice 3.4 - 1
Voici le tableau des températures diurnes moyennes collectées en un lieu imaginaire

Jan Févr Mars Avr Mai Juin Juil Août Sept Oct Nov Dec
-1 -2 3 5 8 12 15 14 10 8 5 0

A ces données, ajustez les paramètres de la fonction


f (t) = c 0 + c1 cos (ω t) + c2 sin (ω t)
Utilisez la méthode de calcul "rapide".
Dans un même graphique, superposez les données et la fonction ajustée.
Indications:
Pour le temps, on prendra le mois comme unité. Nous aurons donc

T = 12; ω=
12
Pour respecter les abscisses imposées par la méthode, nous prendrons t = 0 à la mi-janvier;...;
t = 11 à la mi-décembre.

Exercice 3.4 - 2
Ecrivez explicitement les assertions du théorème 3.4 sous la forme d'énoncés trigonométriques. Par
exemple,
n-1 2π
g0 · g1 =  cos i =0
i=0 n

Exercice 3.4 - 3 [Facultatif]


Démontrez les relations suivantes
n-1 2π
g0 · g1 =  cos i · 1 · =0
i=0 n
n-1 2π
g0 · g2 =  sin i · 1 · =0
i=0 n
n-1 2π
g0 · g3 =  cos i · 2 · =0
i=0 n
n-1 2π
g0 · g4 =  sin i · 2 · =0
i=0 n
n-1 2π
g0 · g5 =  cos i · 3 · = 0, etc.
i=0 n

Indications
Le point O(0, 0) désignant l'origine, définissons les points Eij tels que

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 15


cos i · j · n

OEji = 2π
sin i · j · n

En prenant les exemples j = 1, j = 2, j = 3, représentez graphiquement et vérifiez géométriquement


que
n-1 n-1 2π
cos i · j · n
 
 OEji =  2π
=0
i=0 j=0 sin i · j · n

Déduisez que, pour chaque j,


n-1 2π n-1 2π
 cos i · j · =0 et  sin i · j · =0
i=0 n i=0 n

Exercice 3.4 - 4 [Facultatif]


Démontrez que les vecteurs du théorème 3.4
g0 , g1 , ..., gk-1
sont orthogonaux.
Indications
Utilisez les résultats de l'exercice 3.4-3 et les relations trigonométriques
1
cos (x) cos (y) = (cos (x + y) + cos (x - y))
2
1
cos (x) sin (y) = (sin (x + y) - sin (x - y))
2
1
sin (x) sin (y) = (-cos (x + y) + cos (x - y))
2

Exercice 3.4 - 5 [Travail dirigé]


Dans la région de Zurich, la température moyenne mensuelle en degrés Celsius est la suivante:
-1

12
15

14
18
17
1
4
8

9
4
1
Septembre

Novembre
Décembre
Octobre
Janvier
Février

Juillet
Mars

Août
Avril

Juin
Mai

Question a)
Ajustez la famille de fonctions
f (t) = a + b cos ( ω t) + c sin (ω t)
à ces températures.
Indications pour la question a)
1) Pour ajuster les 12 points donnés par une simple sinusoïde, nous ne prenons que
2π 2π
les 3 premières fonctions de base données dans la théorie : 1, cos 365 t, sin 365 t.
2) Associer les températures au 15 de chaque mois ne convient qu'approximativement
car les mois ont des durées inégales; par ailleurs, l'ajustement se calcule plus
T 2T 11 T
aisément pour la suite des abscisses 0, ,
12 12,
, ..., 12
; divisons l'année de 365

Printed by Wolfram Mathematica Student Edition


16 3_ajust.nb

jours en 12 intervalles égaux :


365
x = Range0, 360, 
plage 12

365 365 365 365 1825 365 2555 730 1095 1825 4015
0, , , , , , , , , , , 
12 6 4 3 12 2 12 3 4 6 12

ce qui nous donne les points d'interpolation suivants :

365 365 365 365 1825 365 2555 730 1095 1825 4015
t [d] 0
12 6 4 3 12 2 12 3 4 6 12
y [°C] - 1 1 4 8 12 15 18 17 14 9 4 1

3) pour interpréter les résultats du calcul, on se réfère au tableau suivant;


il s'agit d'associer les dates voulues à la numérotation des jours par la
variable t (ou x) :
xr = Round[x]
arrondis

{0, 30, 61, 91, 122, 152, 182, 213, 243, 274, 304, 335}
16 septembre

16 novembre
17 décembre
17 octobre
16 janvier
15 février

17 juillet
18 mars

17 août
17 avril
18 mai
17 juin
122
152
182
213
243
274
304
335
30
61
91
0

Question b)
Ajustez la fonction
f (t) = a + d cos ( ω t - φ)
à ces températures.
Indications pour la question b)
Le point de départ est le résultat de la partie a)
f (t) = a + b cos(ω t) + c sin(ω t) que nous allons mettre sous la forme désirée. Pour ce faire, calcu-
lons les coordonnées polaires du vecteur suivant
b cos (φ)
 =d 
c sin (φ)
où d est la norme du vecteur (d est dénommé amplitude)

d= b2 + c 2
1 b
φ désigne l'angle entre les vecteurs et :
0 c
b c
cos (φ) = , sin (φ) =
d d
L'angle φ, dénommé déphasage, peut s'écrire

Printed by Wolfram Mathematica Student Edition


3_ajust.nb 17

b
φ = sign (c) · arccos
d
En utilisant la relation trigonométrique (voir Formulaires et tables)
cos (α - β) = cos (α) cos (β) + sin (α) sin (β)
la fonction ajustée peut être transformée sous la forme souhaitée
b c
f (t) = a + d cos ( ω t) + sin (ω t)
=
d d
a + d ( cos ( ω t) cos (φ) + sin (ω t) sin (φ)) = a + d cos ( ω t - φ)
Question c)
Donnez une interprétation physique et graphique des grandeurs suivantes
1) a = température annuelle moyenne (en degrés Celsius);
2) d = amplitude thermique annuelle (en degrés Celsius);
φ
3) ω
= décalage temporel (en jours);
4) φ = déphasage (en radians).

Liens
Vers les corrigés des exercices du § 3 :
https://www.deleze.name/marcel/sec2/applmaths/csud/corriges/ajustements/3-ajust-cor.pdf

Vers la page mère: Applications des mathématiques


https://www.deleze.name/marcel/sec2/applmaths/csud/index.html

Printed by Wolfram Mathematica Student Edition


Marcel Délèze
Edition 2017
Thème : § 3 Ajustements au sens des moindres carrés
Lien vers les énoncés des exercices:
https://www.deleze.name/marcel/sec2/applmaths/csud/ajustements/3_ajust.pdf

Corrigé de l'exercice 3.1 - 1


D'après le cours, on a
∑ni=1 x2i ∑ni=1 xi a ∑ni=1 xi yi
 =
∑ni=1 xi n b ∑ni=1 yi
Autrement dit, les équations normales s'écrivent
n n n
a  x2i + b  xi =  xi yi (éq. I)
i=1 i=1 i=1
n n
a  xi + b n =  yi (éq. II)
i=1 i=1

Partie a)
n n n n
 ei =  (yi - (a xi + b)) =  yi - a  xi + b n = 0 d ' après (éq. II)
i=1 i=1 i=1 i=1

Partie b)
n n n n n
 xi ei =  xi (yi - (a xi + b)) =  xi yi - a  x2i + b  xi = 0 d ' après (éq. I)
i=1 i=1 i=1 i=1 i=1

Corrigé de l'exercice 3.1 - 2 a)


1-ère étape: énoncé du problème d'ajustement
Ajuster la droite y = a x aux données.
2-ème étape: réduction à un problème de moindres carrés
Les écarts suivants sont appelés "résidus"
e1 = y1 - a x1 , e2 = y2 - a x2 , ..., en = yn - a xn
"Ajuster la droite au sens des moindres carrés" signifie qu'il faut déterminer a de manière que la
somme des carrés des résidus soit minimale
e21 + e22 + ... + e2n = min
3-ème étape: réduction à un problème de projection
e21 + e22 + ... + e2n = (y1 - a x1 )2 + (y2 - a x2 )2 + ... + (yn - a xn )2 =
y1 - a x 1 2 y1 x1 2

y - a x2 y2 x2
∥ 2 ∥ = ∥ -a ∥
... ... ...
yn - a x n yn xn
Autrement dit, dans ℝn , on donne le vecteur

Printed by Wolfram Mathematica Student Edition


2 3-ajust-cor.nb

y1
 y2
y=
...
yn
et le sous-espace G, engendré par le vecteur
x1
x2 
g1 = , dont les éléments sont g = a g1
...
xn
Déterminez le nombres a tel que
 2
∥ y - g ∥ = min

Nous avons étudié, dans le § 2, que la solution est la projection orthogonale 


g de 
y sur G.
4-ème étape: réduction à un système d'équations normales
La projection 
g est déterminée par les conditions suivantes

g = a g1
   
e = y - g = y - a g1

e .g1 = 0

On obtient ainsi l' équation normale


 - a g .g = 0
y 1 1

y.g1 - a g1 .g1 = 0
g .g a = 
1 1 y.g 1

5-ème étape: résolution des équations normales



y.g1 ∑ni=1 xi yi
a= =
g1 .g1 ∑ni=1 x2i

Numériquement,
x = {1, 3, 4, 6, 8, 9, 11, 14};
y = {1, 2, 4, 4, 5, 7, 8, 9};
x.y
a=
x.x
91
131

Corrigé de l'exercice 3.1 - 2 b)


1-ère étape: énoncé du problème d'ajustement
Ajuster la droite y = b aux données.
2-ème étape: réduction à un problème de moindres carrés
Les écarts suivants sont appelés "résidus"
e1 = y1 - b, e2 = y2 - b, ..., en = yn - b
"Ajuster la droite au sens des moindres carrés" signifie qu'il faut déterminer b de manière que la
somme des carrés des résidus soit minimale
e21 + e22 + ... + e2n = min

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 3

3-ème étape: réduction à un problème de projection


e21 + e22 + ... + e2n =
y1 - b 2 y1 1 2

y2 - b y2 1
(y1 - b)2 + (y2 - b)2 + ... + (yn - b)2 = ∥ ∥ = ∥ -b ∥
... ... ...
yn - b yn 1
Autrement dit, dans ℝn , on donne le vecteur
y1
 y2
y=
...
yn
et le sous-espace G, engendré par le vecteur
1
1 
g1 = , dont les éléments sont g = b g1
...
1
Déterminez le nombres b tel que
 2
∥ y - g ∥ = min

Nous avons étudié, dans le § 2, que la solution est la projection orthogonale 


g de 
y sur G.
4-ème étape: réduction à un système d'équations normales
La projection 
g est déterminée par les conditions suivantes

g = b g1
   
e = y - g = y - b g1

e .g1 = 0

On obtient ainsi l' équation normale


 - b g .g = 0
y 1 1

y.g1 - b g1 .g1 = 0
g .g b = 
1 1 y.g 1

5-ème étape: résolution des équations normales



y.g1 ∑ni=1 yi
b= =
g1 .g1 n

Numériquement,
y = {1, 2, 4, 4, 5, 7, 8, 9};
Apply[Plus, y]
b=
Length[y]
5

Interprétation : la moyenne arithmétique des nombres {y1 , y2 , ..., yn } est la quantité b pour
laquelle la somme des carrés des écarts est minimale:
(y1 - b)2 + (y2 - b)2 + ... + (yn - b)2 = min

Printed by Wolfram Mathematica Student Edition


4 3-ajust-cor.nb

Corrigé de l'exercice 3.1 - 3


1-ère étape: énoncé du problème d'ajustement
Ajuster la parabole y = a x2 + b x + c aux données.
2-ème étape: réduction à un problème de moindres carrés
Les écarts suivants sont appelés "résidus"
e1 = y1 - a x21 - b x1 - c, e2 = y2 - a x22 - b x2 - c, ..., en = yn - a x2n - b xn - c
"Ajuster la droite au sens des moindres carrés" signifie qu'il faut déterminer a, b, c de manière que
la somme des carrés des résidus soit minimale
e21 + e22 + ... + e2n = min
3-ème étape: réduction à un problème de projection
2 2 2
e21 + e22 + ... + e2n = y1 - a x21 - b x1 - c + y2 - a x22 - b x2 - c + ... + yn - a x2n - b xn - c =
2 2
y1 - a x21 - b x1 - c y1 x21 x1 1
y2 - a x22 - b x2 - c y2 x22 x2 1
∥ ∥ = ∥ -a -b -c ∥
... ... ... ... ...
yn - a x2n - b xn - c yn x2n xn 1

Autrement dit, dans ℝn , on donne le vecteur


y1
 y2
y=
...
yn
et le sous-espace G, engendré par les vecteurs
x21 x1 1
x22 x2 1 
g1 = , g2 = , g3 = , dont les éléments sont g = a g1 + b g2 + c g3
... ... ...
x2n xn 1

Déterminez le nombres a, b, c tels que


 2
∥ y - g ∥ = min

Nous avons étudié, dans le § 2, que la solution est la projection orthogonale 


g de 
y sur G.
4-ème étape: réduction à un système d'équations normales
La projection 
g est déterminée par les conditions suivantes

g = a g1 + b g2 + c g3
   
e = y - g = y - a g1 - b g2 - c g3
  
e .g1 = 0 ; e .g2 = 0 ; e .g3 = 0

On obtient ainsi les équations normales


 - a g - b g - c g .g = 0 ;  
y y - a g1 - b g2 - c g3 .g2 = 0 ;
1 2 3 1

 y - a g - b g - c g .g = 0
1 2 3 3

y.g1 - a g1 .g1 - b g2 .g1 - c g3 .g1 = 0 ;
y.g2 - a g1 .g2 - b g2 .g2 - c g3 .g2 = 0 ; 
 y.g3 - a g1 .g3 - b g2 .g3 - c g3 .g3 = 0

g1 .g1 a + g2 .g1 b + g3 .g1 c = y.g1 ;
g1 .g2 a + g2 .g2 b + g3 .g2 c =  y.g2 ; g1 .g3 a + g2 .g3 b + g3 .g3 c = 
y.g3

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 5

g1 .g1 g2 .g1 g3 .g1 


y.g1
a
g2 .g1 g2 .g2 g3 .g2 b = 
y.g2
g1 .g3 g2 .g3 g3 .g3 c 
y.g3
∑ni=1 x4i ∑ni=1 x3i ∑ni=1 x2i a ∑ni=1 x2i yi
∑ni=1 x3i ∑ni=1 x2i ∑ni=1 xi b = ∑ni=1 xi yi
∑ni=1 x2i ∑ni=1 xi n c ∑ni=1 yi

5-ème étape: résolution des équations normales


Numériquement,
x = Range[- 20, 20, 5];
plage
y = {25, 23.7, 21.3, 18.9, 16.9, 17.9, 19.5, 23.6, 24.6};
x 2 .x2 x2 .x x.x
m = x .x
2 x.x Apply[Plus, x]
x.x Apply[Plus, x] 9
{{442 500, 0, 1500}, {0, 1500, 0}, {1500, 0, 9}}

v = x2 .y , x.y, Apply[Plus, y]


remp⋯ plus

{35 482.5, - 32.5, 191.4}

442 500 0 1500 a 35 482.5


0 1500 0 b = -32.5
1500 0 9 c 191.4
{a, b, c} = LinearSolve[m, v]
résous équation linéaire

{0.0186104, - 0.0216667, 18.1649}

ShowPlota t2 + b t + c, {t, - 20, 20}, ListLinePlot[Transpose[{x, y}],


mon⋯ tracé de courbes tracé de liste de ⋯ transposée
PlotStyle → Dashed], AxesOrigin → {0, 15}, PlotRange → All
style de tracé rayé origine des axes zone de tracé tout

26

24

22

20

18

16

-20 -10 10 20

Corrigé de l'exercice 3.1 - 4 a)


x = {70, 68, 63, 72, 60, 66, 70, 74, 65, 62, 67, 65};
y = {155, 152, 150, 180, 135, 156, 168, 178, 160, 132, 145, 139};

Première méthode:
1°) permuter (x, y);

Printed by Wolfram Mathematica Student Edition


6 3-ajust-cor.nb

2°) ajuster la fonction affine aux données modifiées (y, x); c'est la droite de régres-
sion de x en fonction de y.
Ajustons la droite x = m y + p au sens des moindres carrés:
Fit[Transpose[{y, x}], {t, 1}, t]
aju⋯ transposée

31.1078 + 0.231733 t

x = x (y) = 31.1078+ 0.231733 y


Deuxième méthode:
1°) ajuster la fonction affine aux données (x, y); c'est la droite de régression de y en
fonction de x;
2°) permuter (x, y), c'est-à-dire prendre la fonction réciproque.
Ajustons d'abord la droite y = a x + b au sens des moindres carrés:
Fit[Transpose[{x, y}], {t, 1}, t]
aju⋯ transposée

- 60.7461 + 3.21565 t

y = y (x) = -60.7461 + 3.21565 x


Calculons la réciproque de cette première fonction:
y + 60.7461 = 3.21565 x
y + 60.7461
= x
3.21565
18.8908+ 0.310979 y = x
x = x (y) = 18.8908+ 0.310979 y
Comparaison des deux méthodes
Pourquoi obtient-on des résultats différents ? Considérons les figures suivantes.
Dans la deuxième méthode, lorsqu'on calcule la droite de régression de y en fonction de x, les
écarts, qui sont de la forme
e i = yi - a x i - b
sont représentés par des vecteurs verticaux

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 7

180

170

160

150

140

130

62 64 66 68 70 72 74

tandis que, dans la première méthode, lorsqu'on calcule la droite de régression de x en fonction de
y, les écarts, qui sont de la forme
f i = xi - m y i - p
sont - dans le même repère (x, y) - représentés par des vecteurs horizontaux

180

170

160

150

140

130

62 64 66 68 70 72 74

Comme il s'agit de deux problèmes différents, on obtient généralement des résultats différents.

Corrigé de l'exercice 3.1 - 4 b)


La méthode consiste à déterminer la droite de régression de x en fonction de y
Fit[Transpose[{y, x}], {t, 1}, t]
aju⋯ transposée

31.1078 + 0.231733 t

x = x (y) = 31.1078+ 0.231733 y

Printed by Wolfram Mathematica Student Edition


8 3-ajust-cor.nb

puis à récrire le résultat sous la forme demandée


x - 31.1078= 0.231733 y
x - 31.1078
y= = 4.31531 x - 134.24
0.231733
a = 4.31531; b = -134.24

Corrigé de l'exercice 3.2 - 1


1-ère étape: énoncé du problème d'ajustement
Ajuster la droite y = a x + b aux données, chaque donnée étant affectée d'un poids ci donné.
Nous supposons que tous les poids ci sont positifs.
2-ème étape: réduction à un problème de moindres carrés
Les écarts suivants sont appelés "résidus"
e1 = y1 - a x1 - b, e2 = y2 - a x2 - b, ..., en = yn - a xn - b
tandis que les "carrés pondérés des résidus" sont
c1 e21 = c1 (y1 - a x1 - b)2 , c2 e22 = c2 (y2 - a x2 - b)2 , ..., cn e2n = cn (yn - a xn - b)2
"Ajuster la droite au sens des moindres carrés avec les poids donnés" signifie qu'il faut déterminer
a, b de manière que la somme des carrés pondérés des résidus soit minimale
c1 e21 + c2 e22 + ... + cn e2n = min
3-ème étape: réduction à un problème de projection
Introduisons le produit scalaire pondéré de ℝn
x1 y1
  x2 y2
x y =   = c1 x1 y1 + c2 x2 y2 + ... cn xn yn
... ...
xn yn
Le produit scalaire pondéré possède les propriétés caractéristiques du produit scalaire telles que
x  y+  
z = x y + x  z

Le carré scalaire pondéré de 


x est de la forme
x1 x1
  x2 x2
x x =   = c1 x21 + c2 x22 + ... cn x2n
... ...
xn xn
Avec cette notation, la somme des carrés pondérés des résidus peut s'écrire comme suit:
e1 e1 y1 - a x 1 - b y1 - a x 1 - b
e2 e2 y2 - a x 2 - b y2 - a x 2 - b
c1 e21 + c2 e22 + ... + cn e2n =  = =
... ... ... ...
en en yn - a x n - b yn - a x n - b
y1 x1 1 y1 x1 1
y2 x2 1 y2 x2 1
 -a -b -a -b 
... ... ... ... ... ...
yn xn 1 yn xn 1
Autrement dit, dans ℝn , on donne le vecteur

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 9

y1
 y2
y=
...
yn
et le sous-espace G, engendré par le vecteur
x1 1
x2 1 
g1 = , g2 = , dont les éléments sont g = a g1 + b g2
... ...
xn 1
Déterminez les nombres a, b tels que
-
y g 

y - g = min

La méthode du § 2 peut se généraliser à cette situation: il suffit de remplacer le produit scalaire


usuel par le produit scalaire pondéré. La solution est la projection orthogonale g de 
y sur G.
4-ème étape: réduction à un système d'équations normales
La projection 
g est déterminée par les conditions suivantes

g = a g1 + b g2
   
e = y - g = y - a g1 - b g2
 
e g1  = 0 ; e g2  = 0

On obtient ainsi les équations normales


-ag -bg
y -ag -bg
g1  = 0; y g2  = 0
1 2 1 2

y g  - a g g  - b g g  =0;
1 1 1 2 1

y g2  - a g1 g2  - b g2 g2  = 0
g1 g1  a + g2  g  ; g
g1  b = y g2  a + g2 
g2  b = y g2 
1 1

g1 g1  g2 g1  
y g1 
a
 = 
g1 g2  g2 g2  b y g2 
∑ni=1 ci x2i ∑ni=1 ci xi a ∑ni=1 ci xi yi
 =
∑ni=1 ci xi ∑ni=1 ci b ∑ni=1 ci yi
5-ème étape: résolution des équations normales
Numériquement,
x = {0, 1, 2, 3, 4, 5, 6, 7};
y = {100, 103, 107, 109, 111, 114, 117, 121};
c = {0.05, 0.1, 0.15, 0.2, 0.2, 0.15, 0.1, 0.05};
g1 = x; g2 = Table[1, {Length[x]}];
table longueur
ps[u_List, v_List] := (c * u).v;
m =  ps[g1, g1] ps[g1, g2] 
ps[g2, g1] ps[g2, g2]
{{15.5, 3.5}, {3.5, 1.}}

v = {ps[y, g1], ps[y, g2]}


{394.65, 110.2}

Printed by Wolfram Mathematica Student Edition


10 3-ajust-cor.nb

{a, b} = LinearSolve[m, v]
résous équation linéaire

{2.75385, 100.562}

Show[Plot[a t + b, {t, - 1, 8}],


mon⋯ tracé de courbes
ListPlot[Transpose[{x, y}], PlotStyle → PointSize[0.01`]], AxesOrigin → {0, 100}]
tracé de li⋯ transposée style de tracé taille des points origine des axes

120

115

110

105

2 4 6 8

Géométriquement, l'effet des coefficients (ou poids) est le suivant:


La droite est telle que les résidus sont assez faibles là où les coefficients sont grands
(par exemple en x = 4);
("faible" signifie ici que les résidus du problème non pondéré pourraient être plus importants).
Par contre, on tolère des résidus plus grands là où les poids sont faibles (par exemple en
x = 7).
Needs["Tableaux`",
nécessite
"https://www.deleze.name/marcel/sec2/applmaths/packages/Tableaux.m"]

afficheTableauNone, {"x", "y", "a x + b", "e = y-(a x+b)", "c"},


aucun
Transposex, y, a x + b, y - a x + b, c
transposée

x y a x + b e = y-(a x+b) c
0 100 100.562 - 0.561538 0.05
1 103 103.315 - 0.315385 0.1
2 107 106.069 0.930769 0.15
3 109 108.823 0.176923 0.2
4 111 111.577 - 0.576923 0.2
5 114 114.331 - 0.330769 0.15
6 117 117.085 - 0.0846154 0.1
7 121 119.838 1.16154 0.05

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 11

Corrigé du problème 3.3 - 1 a)


1-ère étape: énoncé du problème d'ajustement
Ajuster le plan z = a x + b y + c aux données.
2-ème étape: réduction à un problème de moindres carrés
Les écarts suivants sont appelés "résidus"
e1 = z1 - (a x1 + b y1 + c), e2 = z2 - (a x2 + b y2 + c), ..., en = zn - (a xn + b yn + c)
"Ajuster la droite au sens des moindres carrés" signifie qu'il faut déterminer a, b, c de manière que
la somme des carrés des résidus soit minimale
e21 + e22 + ... + e2n = min
3-ème étape: réduction à un problème de projection
e21 + e22 + ... + e2n = (z1 - a x1 - b y1 - c)2 + (z2 - a x2 - b y2 - c)2 + ... + (zn - a xn - b yn - c)2 =
z1 - a x 1 - b y 1 - c 2 z1 x1 y1 1 2

z2 - a x 2 - b y 2 - c z2 x2 y2 1
∥ ∥ = ∥ -a -b -c ∥
... ... ... ... ...
zn - a x n - b y n - c zn xn yn 1
Autrement dit, dans ℝn , on donne le vecteur
z1
 z2
z=
...
zn
et le sous-espace G, engendré par les vecteurs
x1 y1 1
x2 y2 1 
g1 = , g2 = , g3 = dont les éléments sont g = a g 1 + b g2 + c g3
... ... ...
xn yn 1
Déterminez les nombres a, b, c tels que
 2
∥y - g ∥ = min

Nous avons étudié, dans le § 2, que la solution est la projection orthogonale 


g de 
z sur G.
4-ème étape: réduction à un système d'équations normales
La projection 
g est déterminée par les conditions suivantes

g = a g 1 + b g2 + c g3
   
e = z - g = z - a g1 - b g2 - c g3
 
e .g1 = 0; e .g2 = 0 ;

e .g3 = 0

On obtient ainsi les équations normales


 - a g - b g - c g .g = 0 ;
z 1 2 3 1

z - a g - b g - c g .g = 0 ;
1 2 3 2
 - a g - b g - c g .g = 0
z 1 2 3 3

z.g1 - a g1 .g1 - b g2 .g1 - c g3 .g1 = 0;
z.g2 - a g1 .g2 - b g2 .g2 - c g3 .g2 = 0; 
 z.g3 - a g1 .g3 - b g2 .g3 - c g3 .g3 = 0
g .g a + g .g b + g .g c = z.g ;
1 1 2 1 3 1 1

Printed by Wolfram Mathematica Student Edition


12 3-ajust-cor.nb

g1 .g2 a + g2 .g2 b + g3 .g2 c = 


z.g2 ;
g1 .g3 a + g2 .g3 b + g3 .g3 c = 
z.g3
g1 .g1 g2 .g1 g3 .g1 
z.g1
a
g1 .g2 g2 .g2 g3 .g2 b = 
z.g2
g .g g .g g .g c 
z.g
1 3 2 3 3 3 3

∑ni=1 x2i ∑ni=1 xi yi ∑ni=1 xi a ∑ni=1 xi zi


∑ni=1 xi yi ∑ni=1 y2i ∑ni=1 yi b = ∑ni=1 yi zi
∑ni=1 xi ∑ni=1 yi n c ∑ni=1 zi

5-ème étape: résolution des équations normales


Numériquement,
x = {8, 10, 6, 11, 8, 7, 10, 9, 10, 6, 12, 9};
y = {57, 59, 49, 62, 51, 50, 55, 48, 52, 42, 61, 57};
z = {64, 71, 53, 67, 55, 58, 77, 57, 56, 51, 76, 68};
g1 = x; g2 = y; g3 = Table[1, {Length[x]}];
table longueur
m = {{g1.g1, g2.g1, g3.g1}, {g1.g2, g2.g2, g3.g2}, {g1.g3, g2.g3, g3.g3}}
{{976, 5779, 106}, {5779, 34 843, 643}, {106, 643, 12}}

v = {z.g1, z.g2, z.g3}


{6796, 40 830, 753}

{a, b, c} = LinearSolve[m, v]
résous équation linéaire
5947 241 4805
 , , 
3948 282 1316

N[{a, b, c}]
valeur numérique

{1.50633, 0.85461, 3.65122}

Corrigé du problème 3.3 - 1 b)


x = {8, 10, 6, 11, 8, 7, 10, 9, 10, 6, 12, 9};
y = {57, 59, 49, 62, 51, 50, 55, 48, 52, 42, 61, 57};
z = {64, 71, 53, 67, 55, 58, 77, 57, 56, 51, 76, 68};

Pour l'usage de la fonction Fit, on consultera l'aide (Help).


donnees = Transpose[{x, y, z}];
transposée
Fit[donnees, {s, t, 1}, {s, t}]
ajuste

3.65122 + 1.50633 s + 0.85461 t

Corrigé de l'exercice 3.4 - 1


Ajustez les paramètres de la fonction
f (x) = c 0 + c1 cos (x) + c2 sin (x)
aux données

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 13

y = {- 1, - 2, 3, 5, 8, 12, 15, 14, 10, 8, 5, 0}


{- 1, - 2, 3, 5, 8, 12, 15, 14, 10, 8, 5, 0}

n = Length[y]
longueur

12

Calculs:

T = 12; ω = ;
T
T
t = Tablej , {j, 0, n - 1}
table n

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}

g[0] = Table[1, {n}]


table

{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}

g[1] = Cos[ω t ]
cosinus

3 1 1 3 3 1 1 3
1, , , 0, - , - , - 1, - , - , 0, , 
2 2 2 2 2 2 2 2

g[2] = Sin[ω t]
sinus

1 3 3 1 1 3 3 1
0, , , 1, , , 0, - , - , - 1, - ,- 
2 2 2 2 2 2 2 2

k=3
3

y.g[j]
c = Table , {j, 0, k - 1}
table g[j].g[j]

77 1 1
 , - 21 - 14 3 , - 5 - 2 3 
12 6 6

f[x_] := c.{1, Cos[ ω x], Sin[ω x]}


cosinus sinus

Printed by Wolfram Mathematica Student Edition


14 3-ajust-cor.nb

Plot[f[x], {x, 0, T}, AxesOrigin → {0, c〚1〛},


tracé de courbes origine des axes
Epilog → {PointSize[0.02`], Point /@ Transpose[{t, y}]},
épilogue taille des points point transposée
PlotRange → {Min[y] - 1, Max[y] + 1}]
zone de tracé minimum maximum

15

10

2 4 6 8 10 12
5

Les coefficients de Fourier sont


N[c]
valeur numérique

{6.41667, - 7.54145, - 1.41068}

Avec Mathematica, il est encore possible d'obtenir le résultat au moyen de la méthode Fit[..]
Clear[x];
efface
Fit[Transpose[{t, y}], {1, Cos[ω x], Sin[ω x]}, x]
aju⋯ transposée cosinus sinus
πx πx
6.41667 - 7.54145 Cos  - 1.41068 Sin 
6 6

Corrigé du travail dirigé 3.4 - 5 a)


365
x = Range0, 360, 
plage 12

365 365 365 365 1825 365 2555 730 1095 1825 4015
0, , , , , , , , , , , 
12 6 4 3 12 2 12 3 4 6 12

y = {- 1, 1, 4, 8, 12, 15, 18, 17, 14, 9, 4, 1}


{- 1, 1, 4, 8, 12, 15, 18, 17, 14, 9, 4, 1}


T = 365; ω = ;
T
f[t_] := a + b Cos[ω t] + c Sin[ω t];
cosinus sinus

Le problème des moindres carrés consiste à déterminer le minimum de la somme des carrés des
résidus
(y1 - f (x1 ))2 + (y2 - f (x2 ))2 + ... + (y12 - f (x12 ))2

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 15

c'est-à-dire le minimum de la norme du vecteur écart



e=
y1 - f (x1 ) y1 1 cos (ω x1 ) sin (ω x1 )
y2 - f (x2 ) y2 1 cos (ω x2 ) sin (ω x2 ) →
= -a -b -c = y - a g0 - b g1 - c g2
... ... ... ... ...
y12 - f (x12 ) y12 1 cos (ω x12 ) sin (ω x12 )
où l'on a posé
y1 1 cos (ω x1 ) sin (ω x1 )
→ y2 1 cos (ω x2 ) sin (ω x2 )
y= ; g0 = ; g1 = et g2 = .
... ... ... ...
y12 1 cos (ω x12 ) sin (ω x12 )
g0 = Table[1, {12}]
table

{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}

g1 = Table[Cos[ω x[[i]]], {i, 1, 12}]


table cosinus

3 1 1 3 3 1 1 3
1, , , 0, - , - , - 1, - , - , 0, , 
2 2 2 2 2 2 2 2

g2 = Table[Sin[ω x[[i]]], {i, 1, 12}]


table sinus

1 3 3 1 1 3 3 1
0, , , 1, , , 0, - , - , - 1, - ,- 
2 2 2 2 2 2 2 2

Le minimum est atteint lorsque le vecteur écart est orthogonal à chaque vecteur de la base du sous-
espace sur lequel on projette:
→ → →
e.g0 = 0, e.g1 = 0, e.g2 = 0
→ → →
y - a g0 - b g1 - c g2 .g0 = 0, y - a g0 - b g1 - c g2 .g1 = 0, y - a g0 - b g1 - c g2 .g2 = 0

a g0 .g0 + b g1 .g0 + c g2 .g0 = y.g0

a g0 .g1 + b g1 .g1 + c g2 .g1 = y.g1

a g0 .g2 + b g1 .g2 + c g2 .g2 = y.g2

g0 .g0 g1 .g0 g2 .g0 a y.g0

g0 .g1 g1 .g1 g2 .g1 b = y .g1
c →
g0 .g2 g1 .g2 g2 .g2 y.g2
m = {{g0.g0, g0.g1, g0.g2}, {g1.g0, g1.g1, g1.g2}, {g2.g0, g2.g1, g2.g2}};
MatrixForm[m]
apparence matricielle
12 0 0
0 6 0
0 0 6

v = {y.g0, y.g1, y.g2}

102, - 28 - 15 3 , -2 - 3

Printed by Wolfram Mathematica Student Edition


16 3-ajust-cor.nb

{a, b, c} = LinearSolve[m, v]
résous équation linéaire
17 1 1
 , - 28 - 15 3 , - 2 - 3 
2 6 6

f[t]
17 1 17 1 2π 1 2π
 + - 28 - 15 3 , + - 28 - 15 3  Cos + - 2 - 3  Sin ,
2 6 2 6 365 6 365
17 1 4π 1 4π
+ - 28 - 15 3  Cos + - 2 - 3  Sin ,
2 6 365 6 365
17 1 6π 1 6π
+ - 28 - 15 3  Cos + - 2 - 3  Sin ,
2 6 365 6 365
17 1 8π 1 8π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin ,
2 6 365 6 365
17 1 2π 1 2π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin ,
2 6 73 6 73
17 1 12 π 1 12 π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin ,
2 6 365 6 365
17 1 14 π 1 14 π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin ,
2 6 365 6 365
17 1 16 π 1 16 π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin ,
2 6 365 6 365
17 1 18 π 1 18 π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin ,
2 6 365 6 365
17 1 4π 1 4π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin ,
2 6 73 6 73
17 1 22 π 1 22 π
+ - 28 - 15 3  Cos  + - 2 - 3  Sin 
2 6 365 6 365

Plot[f[t], {t, 0, T},


tracé de courbes
Epilog → {PointSize[0.02`], Point /@ Transpose[{x, y}]}, PlotRange → {- 5, 20}]
épilogue taille des points point transposée zone de tracé
20

15

10

50 100 150 200 250 300 350

-5

Pour la correspondance avec le calendrier, on se réfère au tableau donné dans l'énoncé; par exem-
ple la température journalière moyenne au 17 octobre est, en degrés Celsius,

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 17

N[f[274]]
valeur numérique

9.08328

Corrigé du travail dirigé 3.4 - 5 b)


d = N b 2 + c2 
valeur numérique

9.01827

N[c]
valeur numérique

- 0.622008

c est négatif
b
φ = - 1 ArcCos 
d
arc cosinus

- 3.07257

Redéfinissons la fonction f
Clear[f]; f[t_] := a + d Cos[ω t - φ]; f[t]
efface cosinus

{- 0.496794, - 0.506168, - 0.512873, - 0.516907, - 0.51827, - 0.51696,


- 0.512978, - 0.506326, - 0.497005, - 0.485017, - 0.470368, - 0.45306}

Il s'agit de la même fonction f que dans la partie a) mais récrite sous une autre forme.

Corrigé du travail dirigé 3.4 - 5 c)


a est la température annuelle moyenne: sur le graphique, il s'agit d'une droite horizontale située à
mi-hauteur
Plot[{f[t], a}, {t, 0, T}, Epilog → {PointSize[0.02`], Point /@ Transpose[{x, y}]},
tracé de courbes épilogue taille des points point transposée
PlotRange → {- 5, 20}, Ticks → {Automatic, {{a, "a"}}},
zone de tracé graduati⋯ automatique
PlotStyle → {Dashing[{}], Dashing[{0.02`}]}]
style de tracé style de rayures style de rayures

50 100 150 200 250 300 350

Printed by Wolfram Mathematica Student Edition


18 3-ajust-cor.nb

d est l'amplitude thermique annuelle (la moitié de l'écart entre les températures extrêmes):

20

15
d

10

50 100 150 200 250 300 350

-5

Le décalage temporel
φ
Δt =
ω
- 178.49

indique le nombre de jours de décalage entre le maximum de la fonction f (t) et le maximum le la


fonction cos(ω t)

Δt

jours
0 50 100 150 200 250 300 350

Le déphasage
φ

indique le décalage en radians entre le maximum de la fonction f (t) et le maximum le la fonction


cos(ω t)

Printed by Wolfram Mathematica Student Edition


3-ajust-cor.nb 19

rad
π 3π
0 π 2π
2 2

Printed by Wolfram Mathematica Student Edition

Vous aimerez peut-être aussi