Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [c] = polnewton(x,y)
- % POLNEWTON Calcola i coefficienti del polinomio interpolatore
- % utilizzando la forma di Newton con le differenze
- % divise
- %
- % Uso:
- % c = polnewton (x,y)
- %
- % Dati di ingresso:
- % x vettore dei nodi
- % y vettore dei valori della funzione da interpolare nei nodi
- %
- % Dati di uscita:
- % c vettore colonna dei coefficienti ordinati per indici
- % crescenti (c_0, c_1, ... )
- n1=length(x);
- if n1~= length(y)
- error('tab errata')
- end
- ctab=zeros(n1,n1);
- ctab(:,1)=y;
- %inizializza la prima colonna
- for j=2:n1
- for i=1:n1-j+1
- ctab(i,j)=(ctab(i,j-1)-ctab(i+1,j-1))/(x(i)-x(i+j-1));
- end
- end
- c=ctab(1,:);
- c=c(:);
- end
- -------------------------------------------------------------
- function fxstar = horner (x,c,xstar)
- % HORNER Calcola il valore del polinomio interpolatore in x^*
- % utilizzando la forma di Newton e l'algoritmo di Horner
- %
- % Uso:
- % fxstar = horner (x,c,xstar)
- %
- % Dati di ingresso:
- % x vettore dei nodi
- % c vettore dei coefficienti della forma di Newton
- % ordinati per indici crescenti (c_0, c_1, ... )
- % xstar valore in cui si vuole valutare il polinomio
- %
- % Dati di uscita:
- % fxstar valore di P(x^*)
- n1=length(x);
- if(n1~=length(c))
- error('error')
- end
- fxstar=c(n1);
- for i=n1-1:-1:1
- fxstar=fxstar*(xstar-x(i))+c(i);
- end
- end
- ---------------------------------------------------------------------
- %Si scriva poi uno script che calcoli il valore del polinomio di interpolazione in 201 valori dell'intervallo
- %I, per poterlo rappresentare graficamente (linea tratteggiata rossa).
- %Sullo stesso grafico si rappresentino anche i punti della tabulazione (con un cerchietto rosso) e la funzione
- %data (linea intera nera).
- claer all
- f=inline('1./(1+x.^2)');
- a=-5; b=5;
- nnodi=11;
- xn=linspace(a,b,nnodi);
- fxn=feval(f,xn);
- c=polnewton(xn fxn);
- xint= linspace(a,b,201);
- xint=xint(:);
- y=feval(f,xint);
- for i=1:201
- fxstar(i)=horner (xn,c,xint(i));
- end
- fxstar=fxstar(:);
- figure(1)
- plot(xn,fxn,'ro')
- hold on
- plot(xint,fxstar,'r--')
- hold off
- legend('punti dati','Funzione','Polinomio','Location','Best')
- hold off
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement