6.5)Chapitre 6: Régression et interpolation
Enoncés:
1. On considère la distribution suivante
x 8 14 27 29 34 43 61
y 23 61 160 189 244 330 612
(a) Tracer le nuage de point
(b) Chercher la droite de régression, la représenter sur le nuage
(c) Chercher un polynôme de régression dont le degré est tel qu’il donne la meilleure régression,
le représenter distinctement sur le graphe ci-dessus
(d) Déterminer, par calcul, la courbe qui convient le mieux.
2. Soit le nuage de points suivant
x 1 2 3 4 5 6 7 8 9 10 11
y 1 3 4 2 3 1 -2 2 5 6 4
(a) Déterminer la fonction d’interpolation de type linéaire.
(b) Déterminer la fonction d’interpolation de type cubic.
(c) Déterminer la fonction d’interpolation de type spline ;
(d) Comparer ces trois courbes sur un graphe.
3. On considère les points dont les abscisses sont les entiers de 0 à 20 et dont les ordonnées sont les
nombres suivants
2.4 5.8 8.1 5.2 -7.8 -6.4 -1 11 6 14.3 7.5
-6.8 -14.1 -8.9 -10 -19.3 14.6 -3.1 -17.4 -12.8 -6.2
(a) Chercher la loi dont le graphe s’approche au mieux des points considérés. Envisager le cas de
la droite de régression, d’une régression polynomiale, de l’interpolation linéaire et de spline.
(b) Evaluer la valeur de la loi en 7.5 pour chacune des approximations.
(c) Intégrer les approximations de la loi de 0 à 20.
Code:
Exercice 1
%% Exercice 1 a)
vx=[8 14 27 29 34 43 61];
vy=[23 61 160 189 244 330 612];
scatter(vx,vy)
%% Exercice 1 b)
% Droite de régression
reg1=polyfit(vx,vy,1); %(abscisse, ordonnée, degré==> ici il est 1, c'est donc une droite)
ord1=polyval(reg1,[0 70]);
hold on
plot([0 70], ord1)
title('Exercice 1 sur les régressions et interpolations')
%% Exercice 1 c)
% Polynôme de régression dont le graphe se rapproche le mieux
% des points est le polynôme de régression de degré:
% nbre d'inconnues - 1 ==> ici: degré = 7-1 = 6
% Régression polynomiale de degré 6:
reg6=polyfit(vx,vy,6);
ord6=polyval(reg6, [0:0.1:70]);
plot(0:0.1:70, ord6, 'g')
legend('Points','Droite','Polynôme')
%% Exercice 1 d)
% Détermination, par calcul, de la courbe qui convient le mieux
% Polynôme de degré 1
erreur1=0;
for k=1:7
erreur1=erreur1+(vy(:,k)-polyval(reg1, vx(:,k))).^2;
k=k+1;
end
erreur1
% Polynôme de degré 3
reg3=polyfit(vx,vy,3);
erreur3=0;
for k=1:7 % Car il y a 7 abscisses
erreur3=erreur3+(vy(:,k)-polyval(reg3, vx(:,k))).^2;
k=k+1;
end
erreur3
% Polynôme de degré 5
reg5=polyfit(vx,vy,5);
erreur5=0;
for k=1:7 % Car il y a 7 abscisses
erreur5=erreur5+(vy(:,k)-polyval(reg5, vx(:,k))).^2;
k=k+1;
end
erreur5
% Polynôme de degré 6
erreur6=0;
for k=1:7 % Car il y a 7 abscisses
erreur6=erreur6+(vy(:,k)-polyval(reg6, vx(:,k))).^2;
k=k+1;
end
erreur6
% Polynôme de degré 7
reg7=polyfit(vx,vy,7);
erreur7=0;
for k=1:7 % Car il y a 7 abscisses
erreur7=erreur7+(vy(:,k)-polyval(reg7, vx(:,k))).^2;
k=k+1;
end
erreur7
% ==> On voit bien que le polynôme de régression de degré 6 donne la
% meilleure approximation !
Exercice 2:
%% Exercice 2)
vx=[1:11];
vy=[1 3 4 2 3 1 -2 2 5 6 4];
scatter(vx,vy) %affiche les points sur le graphe
%% Exercice 2 a)
%% Interpolation linéaire
p1=interp1(vx,vy,'linear','pp')
ordlinear=ppval(p1, [0:0.1:12]);
hold on;
plot(0:0.1:12, ordlinear, 'g')
title('Exercice 2 sur les régressions et interpolations')
%% Exercice 2 b)
%% Interpolation cubic
pc=interp1(vx,vy,'cubic','pp');
ordcubic=ppval(pc,[0:0.1:12]);
plot(0:0.1:12, ordcubic, 'r');
%% Exercice 2 c)
%% Interpolation spline
ps=interp1(vx,vy,'spline','pp')
ordlinear2=ppval(ps, [0:0.1:12])
plot(0:0.1:12, ordlinear2)
legend('Points','Interpolation lineaire','Interpolation cubic','Interpolation spline')
Exercice 3:
%% Exercice 3 a)
%% Affichage des points
vx=[0:20];
vy=[2.4 5.8 8.1 5.2 -7.8 -6.4 -1 11 6 14.3 7.5 -6.8 -14.1 -8.9 -10 -19.3 14.6 -3.1 -17.4 -12.8 -6.2];
scatter(vx,vy)
%% Droite de régression
reg1=polyfit(vx,vy,1); %(abscisse, ordonnée, degré==> ici il est 1, c'est donc une droite)
ord1=polyval(reg1,[0 20]);
hold on
plot([0 20], ord1)
title('Exercice Laboratoire 6')
%% Régression polynomiale de degré 3
reg3=polyfit(vx,vy,3);
ord3=polyval(reg3, [0:0.1:20]);
plot(0:0.1:20, ord3, 'm')
%% Interpolation linéaire
p1=interp1(vx,vy,'linear','pp');
ordlinear=ppval(p1, [0:0.1:20]);
plot(0:0.1:20, ordlinear, 'g')
%% Interpolation spline
ps=interp1(vx,vy,'spline','pp');
ordlinear2=ppval(ps, [0:0.1:20]);
plot(0:0.1:20, ordlinear2,'r')
legend('Points','Droite','Polynôme','Interpolation linéaire','Interpolation spline')
%% Exercice 3 b)
valeur_droite_regression=polyval(reg1, 7.5)
valeur_regression_polynomiale=polyval(reg3, 7.5)
valeur_interpolation_lineaire=ppval(p1, 7.5)
valeur_interpolation_spline=ppval(ps, 7.5)
%% Exercice 3 c)
% je prends la primitive du polynôme et je calcule l'intégrale après
% Droite de régression
primitive1=polyint(reg1);
integrale_droite_regression=polyval(primitive1,20)-polyval(primitive1,0)
% régression polynômiale de degré 3
primitive2=polyint(reg3);
integrale_regression_polynomiale=polyval(primitive2,20)-polyval(primitive2,0)
% interpolation linéaire
% je construis une fonction pour ensuite pouvoir l'intégrer avec quad
a=interp1(vx,vy,'linear','pp');
fonction1=@(x) ppval(a,x) ;
integrale_interpolation_lineaire=quad(fonction1,0,20)
% Interpolation spline
b=interp1(vx,vy,'spline','pp');
fonction2=@(x) ppval(b,x) ; % je crée la fonction polynôme pour ensuite pouvoir l'intégrer
integrale_interpolation_spline=quad(fonction2,0,20) % intégration de la fonction entre 0 et 20
Voila les exercices du chapitre 6...
Moi j'ai fait la somme die Riemann et la méthode de Simpson.
A demain