Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. function [c] = polnewton(x,y)
  2.  
  3. % POLNEWTON Calcola i coefficienti del polinomio interpolatore
  4. % utilizzando la forma di Newton con le differenze
  5. % divise
  6. %
  7. % Uso:
  8. % c = polnewton (x,y)
  9. %
  10. % Dati di ingresso:
  11. % x vettore dei nodi
  12. % y vettore dei valori della funzione da interpolare nei nodi
  13. %
  14. % Dati di uscita:
  15. % c vettore colonna dei coefficienti ordinati per indici
  16. % crescenti (c_0, c_1, ... )
  17.  
  18. n1=length(x);
  19. if n1~= length(y)
  20. error('tab errata')
  21. end
  22.  
  23. ctab=zeros(n1,n1);
  24.  
  25. ctab(:,1)=y;
  26. %inizializza la prima colonna
  27.  
  28. for j=2:n1
  29. for i=1:n1-j+1
  30.  
  31. ctab(i,j)=(ctab(i,j-1)-ctab(i+1,j-1))/(x(i)-x(i+j-1));
  32.  
  33. end
  34. end
  35. c=ctab(1,:);
  36. c=c(:);
  37. end
  38.  
  39. -------------------------------------------------------------
  40. function fxstar = horner (x,c,xstar)
  41. % HORNER Calcola il valore del polinomio interpolatore in x^*
  42. % utilizzando la forma di Newton e l'algoritmo di Horner
  43. %
  44. % Uso:
  45. % fxstar = horner (x,c,xstar)
  46. %
  47. % Dati di ingresso:
  48. % x vettore dei nodi
  49. % c vettore dei coefficienti della forma di Newton
  50. % ordinati per indici crescenti (c_0, c_1, ... )
  51. % xstar valore in cui si vuole valutare il polinomio
  52. %
  53. % Dati di uscita:
  54. % fxstar valore di P(x^*)
  55. n1=length(x);
  56.  
  57. if(n1~=length(c))
  58. error('error')
  59. end
  60.  
  61. fxstar=c(n1);
  62.  
  63. for i=n1-1:-1:1
  64. fxstar=fxstar*(xstar-x(i))+c(i);
  65. end
  66.  
  67.  
  68. end
  69. ---------------------------------------------------------------------
  70. %Si scriva poi uno script che calcoli il valore del polinomio di interpolazione in 201 valori dell'intervallo
  71. %I, per poterlo rappresentare graficamente (linea tratteggiata rossa).
  72. %Sullo stesso grafico si rappresentino anche i punti della tabulazione (con un cerchietto rosso) e la funzione
  73. %data (linea intera nera).
  74.  
  75.  
  76. claer all
  77.  
  78. f=inline('1./(1+x.^2)');
  79. a=-5; b=5;
  80. nnodi=11;
  81.  
  82. xn=linspace(a,b,nnodi);
  83. fxn=feval(f,xn);
  84.  
  85. c=polnewton(xn fxn);
  86.  
  87. xint= linspace(a,b,201);
  88. xint=xint(:);
  89.  
  90. y=feval(f,xint);
  91.  
  92. for i=1:201
  93. fxstar(i)=horner (xn,c,xint(i));
  94. end
  95.  
  96. fxstar=fxstar(:);
  97. figure(1)
  98. plot(xn,fxn,'ro')
  99. hold on
  100. plot(xint,fxstar,'r--')
  101. hold off
  102.  
  103. legend('punti dati','Funzione','Polinomio','Location','Best')
  104. hold off
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement