// --------------------------------------------------------- // Script de test des differentes methodes d'interpolation. // Des illustrations se trouvent dans le TP3 de 2012. // --------------------------------------------------------- exec tp3fonctions.sci a = 1; n = 10; // Changez ces parametres a et n et reexecutez le script // autant de fois que cela vous plaira. // // interpolation de Lagrange aux points de Chebyshev // vect = (0:n); deuxNpDeux = ones(length(vect)) * (2*n+2); pts = a * cos( ((2*vect+1)*%pi) ./ deuxNpDeux); solpC = interp(ftest,pts,'X'); // // interpolation de Newton aux points de Chebyshev // vect = (0:n); deuxNpDeux = ones(length(vect)) * (2*n+2); pts = a * cos( ((2*vect+1)*%pi) ./ deuxNpDeux); val = ftest(pts); D = diffdiv(pts,val); x=poly(0,'t'); ploc(1) = 1; for j=1:n ploc(j+1) = prod(x-pts(1:j)); end solpDVC = sum( D(1,1:n+1).*ploc(1:n+1)' ) ; // // interpolation de Lagrange en des points equidistants // pts = linspace(-a,a,n+1); solpEq = interp(ftest,pts,'X'); // // interpolation de Newton aux points equidistants // pts = linspace(-a,a,n+1); val = ftest(pts); D = diffdiv(pts,val); x=poly(0,'t'); ploc(1) = 1; for j=1:n ploc(j+1) = prod(x-pts(1:j)); end solpDVEq = sum( D(1,1:n+1).*ploc(1:n+1)' ) ; // // Affichage des resultats. // x=linspace(-a,a,10000); clf; // // En modifiant les lignes ci-dessous, n'affichez pas systematiquement // toutes les solutions afin de bien comprendre ce qu'il se passe. // //plot2d(x', [horner(solpDV,x') horner(solpEq,x')]) clf(1) figure(1) plot2d(x', [ftest(x') horner(solpDVEq,x') horner(solpEq,x')]) clf(2) figure(2) plot2d(x', [ftest(x') horner(solpDVC,x') horner(solpC,x')]) clf(3) figure(3) plot2d(x', [ftest(x') horner(solpDVC,x') horner(solpDVEq,x')]) //plot2d(x', [ftestold(x') horner(solpDV,x') ]) //plot2d(x', [ftestold(x') horner(solpEq,x') ]) //plot2d(x', [ftestold(x') horner(solpC,x') ]) // // Pour la fonction ftest(x) = ( ones(length(x)) ./ (1 + 16*x.^2) ); // pour a=1, pour des valeurs de n relativement petites (5, 10, 20), // les interpolations de Lagrange et de Newton prises toutes // les deux aux points equidistants (solpEq et solpDV) donnent // un resultat qui semble diverger de la fonction interpolee. // Il s'agit d'un phenomene numerique connu sous le nom de phenomene de Runge. // Le choix des points de Chebyshev offre une attenuation du phenomene. //