Advertisement
elektryk798

MN_LAB4

May 4th, 2017
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 0.98 KB | None | 0 0
  1. % MAIN LAB_4 MN
  2.  
  3.  
  4. x0=[1,2,4,6,8,10]
  5. y0=[6,6,4,2,0,0]
  6. plot(x0,y0,"g*")
  7. x = -1:0.1:10
  8. hold on;
  9. plot(x0, y0, "g*");
  10. %aproksymacja wielomianem 2 stopnia
  11. w2 = polyfit(x0, y0, 2);
  12. f2 = polyval(w2, x);
  13. plot(x, f2, "r");
  14. %aproksymacja wielomianem 3 stopnia
  15. w3 = polyfit(x0, y0, 3);
  16. f3 = polyval(w3, x);
  17. plot(x, f3, "b");
  18. y = f_lagrange(x0, y0, x);
  19. plot(x, y, 'k')
  20. hold off;
  21.  
  22.  
  23. % FUNKCJA LAGRANGE
  24.  
  25.  
  26. function y = f_lagrange(x0, y0, x)
  27.  
  28. n = length(x0);
  29. y=0;
  30. for ii=1: n
  31.   li=1;
  32.   for jj=1: n
  33.     if ii~=jj
  34.       li = li .* (x - x0(jj))./(x0(ii) - x0(jj));
  35.     endif
  36.   endfor
  37.   y = y + y0(ii) .* li;
  38. endfor
  39. endfunction
  40.  
  41. % FUNKCJA NEWTON
  42.  
  43. function y = f_newton(x0, y0, x)
  44.  
  45. n = length(x0)-1;
  46. D = ones(n+1, n+1);
  47.  
  48. for i=1: n+1
  49.   D(i, 1) = y0(i);
  50. endfor
  51.  
  52. for i=2: n+1
  53.   for j=2: i
  54.     D(i, j) = [D(i, j-1) - D(i-1, j-1)] ./ [x0(i) - x0(i-j+1)];
  55.   endfor
  56. endfor
  57.  
  58. y = D(1, 1);
  59. w=1;
  60. for i=2: n+1
  61.   w = w .* (x - x0(i-1));
  62.   y = y + D(i, i) * w;
  63. endfor
  64.  
  65. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement