Vous êtes sur la page 1sur 8

Universit du havre Master 1 PMGC Option mcanique

TP N3 Mthodes numriques

Raliser par : HAOUDI SOUFIANE AIT MOUSSA KHALID

But de TP
Lobjectif de cette sance de travaux pratiques est de raliser un programme informatique, partir du logiciel SCILAB, permettant dinterpoler une srie de points (xi; f(xi)) en utilisant la mthode dinterpolation des polynmes de Lagrange puis la mthode des splines cubiques.

Introduction
Durant ce TP nous allons effectuer une approximation de la fonction f(x) avec deux mthodes Dune part la mthode de linterpolation polynomiale de Lagrange et dautre part la mthode de linterpolation par splines cubiques

Les donnes dentre du programme seront : Les points o la fonction est connue, cest dire un ensemble de couples (xi, f (xi)) donn Dans le tableau suivant.

1- Interpolation de Lagrange

Dfinition
La mthode de Lagrange propose de choisir N points parmi les N+1 et de rsoudre le systme de N quations N inconnues form par lquation polynomiale passant par ces points. Si vous disposez de 4 points, vous rechercherez donc un polynme de degr 3 passant par ces points. Thorme de Lagrange: Soit n+l points distincts xi rels et n+l rels yi, il existe un unique polynme p Pn tel que p(Xi)=yi pour i=0 n

Programme
x(1)=0; for i=2:11 x(i)=x(i-1)+0.1; end f=[0.0179;1.6734;0.8149;0.7988;0.5393;0.4196;0.8241;0.9808;0.5592;1.2227;0.0860]; n=length(f); // Construction de la table des differences divisees de Newton for i=1:n for j=1:n if(j==1) then F(i,j)=f(i); else if(j<=i) then F(i,j)= (F(i,j-1)-F(i-1,j-1))/(x(i)-x(i-j+1)); else if(j>i) then F(i,j)=0; end end end end end F // saisie du vecteur xi xi(1)=0.05; for i=2:n-1 xi(i)=xi(i-1)+0.10; end

// polynome d'interpolation par les differences divisees de Newton for i=1:n-1 Pn(i)=f(1); for k=2:n

wk=1; for j=1:k-1 wk=wk*(xi(i)-x(j)); end Pn(i)=Pn(i)+F(k,k)*wk; end end ' polynome par Methode Newton' Pn

// Interpolation par lagrange for k=1:n-1 Px(k)=0; for i=1:n Ln(i)=1; for j=1:n if(i<>j) then Ln(i)=Ln(i)*((xi(k)-x(j))/(x(i)-x(j))); end end Px(k)=Px(k)+Ln(i)*f(i); end end ' polynome de Lagrange' Px

Rsultat

2- Interpolation splines cubiques

Le principe de cette mthode consiste sur lapproche de la courbe par morceaux et localement, et on prend des polynmes de degr faible pour viter les oscillations. On appelle spline cubique dinterpolation une fonction note g, qui vrifie les proprits suivantes : g C [a;b] (g est deux fois continment drivable), g concide sur chaque intervalle [xi; xi+1] avec un polynme de degr infrieur ou gal 3. g(xi) = yi pour i = 0 n On Remarque quil faut des conditions supplmentaires pour dfinir la spline dinterpolation de faon unique comme par exemple g(a)=g(b)=0 Dtermination de la spline dinterpolation g concide sur chaque intervalle [xi; xi+1] avec un polynme de degr infrieur ou gal 3 g" est de degr 1 et est dtermin par 2 valeurs: mi = g"(xi) et mi+1 = g"(xi+1)

Programme
// interpolation par spline cubique //Recherche de la matrice M des coeficient de m (gi''(xi)) for i=1:n-1 h(i)=(x(i+1)-x(i)); H(1)=-2*f(1)+f(2); if(i>1) then H(i)=f(i-1)-2*f(i)+f(i+1); end for j=1:n-1

if(abs(i-j)==1) then M(i,j)=h(i)^2/6; else if(j-i==0) then M(i,j)=2*h(i)^2/3; else M(i,j)=0; end end end end // Calcul de mi i=1..n-1 m=inv(M)*H; m(n)=0;

// Calcul des ai et bi// for i=1:n-1 h(i)=(x(i+1)-x(i)); b(i)=f(i)-m(i)*h(i)^2/6; a(i)=(f(i+1)-b(i)-m(i+1)*h(i)^2/6)/h(i); end // Calcul des polynomes for i=1:n-1 h(i)=(x(i+1)-x(i)); Pcub(i)=m(i+1)*(xi(i)-x(i))^3/(6*h(i))+m(i)*(x(i+1)-xi(i))^3/(6*h(i))+a(i)*(xi(i)-x(i))+b(i); end ' Polynome par spline cubique' Pcub

// addition des vecteurs pour la reprsentation graphique j=0;i=1; while(i<=2*n-2) j=j+1; X(i)=x(j);X(i+1)=xi(j); Pi_L(i)=f(j);Pi_L(i+1)=Px(j); // points initiaux + polynme de Lagrange Pi_SC(i)=f(j);Pi_SC(i+1)=Pcub(j);//points initiaux + polynme des splines cubiques i=i+2; end X(2*n-1)=1; Pi_L(2*n-1)=f(n); Pi_SC(2*n-1)=f(n);

Rsultat

Graphe

Programme
// Representation Graphique xset('window',0) xbasc(0); // plot2d(xi,Px) plot2d(x,[f]) plot2d(X,[Pi_SC, Pi_L],style=[3,2],leg=["Lagrange@ Spline cubique"]) xtitle('Courbes d interpolation','X','f(x)/Px(x)/Pc(x)') xgrid();

Conclusion
Effectuer une interpolation par un spline cubique revient rsoudre un systme tri diagonal. L'algorithme utilis pour rechercher un spline cubique sur une srie de points est un peu plus compliqu que la prcdente. Pour dmontrer les diffrences qui peuvent exister entre une interpolation polynomiale et par les splines, nous avons obtenus des points non quidistants. Le spline cubique donne des rsultats assez diffrents de l'interpolation de LaGrange, avec plus de prcision.

Vous aimerez peut-être aussi