clear all close all clc f = @(t) 1./(1+25*t.^2); % la funzione da interpolare: è un function handle ptieval = linspace(-1,1,1000); % in questi punti valuteremo il polinomio interpolatore F = f(ptieval); % valutiamo la funzione nei punti di valutazione per farne il grafico for n = 2:15 % il numero di punti x = linspace(-1,1,n); % calcoliamo gli n punti equispaziati fx = f(x); % valutiamo la funzione in x: il risultato è un vettore p = polyfit(x,fx,n-1); % calcoliamo i coefficienti del polinomio interpolatore. Il grado del polinomio interpolatore è sempre uno in meno dei punti P = polyval(p,ptieval); % valutiamo il polinomio interpolatore in tutti i punti errinterp(n) = max(abs(F-P)); p1 = interp1(x,fx,ptieval); errp1(n) = max(abs(F-p1)); s = spline(x,fx,ptieval); errs(n) = max(abs(F-s)); end figure() plot(ptieval,F,ptieval,P) hold on scatter(x,fx) title('La funzione e la sua interpolata') legend('f(x)','p(x)','location','northwest') hold off figure() plot(ptieval,F,ptieval,p1) hold on scatter(x,fx) title('La funzione e la sua interpolata lineare a tratti') legend('f(x)','p1(x)','location','northwest') hold off figure() plot(ptieval,F,ptieval,s) hold on scatter(x,fx) title('La funzione e la sua spline interpolatoria') legend('f(x)','s(x)','location','northwest') hold off figure() plot(2:15, errinterp(2:15), 2:15, errp1(2:15), 2:15, errs(2:15)) title('Errore') legend('Polinomio interpolatore','Lineare a tratti','Spline cubica','location','northwest') hold off