Guest User

Untitled

a guest
May 21st, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. funkcja_sprawdzana = 2*exp(x)+5*sin(4*x);
  2.  
  3. stopien_wielomianu = 10; % STOPIEN WIELOMIANU
  4. ilosc_punktow = 30; % ILOSC DO SPRAWDZENIA
  5.  
  6. newnewx = zeros(1, ilosc_punktow);
  7. newnewy = zeros(1,ilosc_punktow);
  8.  
  9. clc;
  10. tryb = input('Aproksymacja czy Interpolacja ? [A/I]: ', 's');
  11. if isempty(tryb)
  12. tryb = 'A';
  13. end
  14.  
  15. if(tryb == 'A' || tryb == 'a')
  16. for liczbapunktow = stopien_wielomianu+1:ilosc_punktow
  17. x = linspace(0,3,ilosc_punktow);
  18.  
  19. y = funkcja_sprawdzana; % FUNKCJA
  20.  
  21. newx = zeros(1,stopien_wielomianu);
  22. newy = zeros(1,stopien_wielomianu);
  23.  
  24. tempblad = zeros(1,stopien_wielomianu);
  25.  
  26. for stopien = 1:stopien_wielomianu
  27. cla;
  28. figure(1);
  29. plot(x, y);
  30. title(['Aproksymacja a stopien wielomianu: ', num2str(stopien_wielomianu)])
  31. w = polyfit(x, y, stopien);
  32. yapr = polyval(w, x);
  33. hold;
  34. plot(x, yapr);
  35. hold;
  36. blad = zeros(1,length(x));
  37. for i = 1:length(x)
  38. if (i == 1)
  39. blad(i) = ((2*exp(x(i))+5*sin(4*x(i)) - polyval(w, x(i)))^2);
  40. else
  41. blad(i) = blad(i-1) + ((2*exp(x(i))+5*sin(4*x(i)) - polyval(w, x(i)))^2);
  42. end
  43. tempblad(stopien) = blad(length(x));
  44. end
  45. tempblad(stopien) = tempblad(stopien)/301;
  46. clc;
  47. disp(['Wielomian stopnia n=',num2str(stopien),' błąd: ', num2str(tempblad(stopien))]);
  48. newx(stopien) = stopien;
  49. newy(stopien) = tempblad(stopien);
  50. newnewx(liczbapunktow) = liczbapunktow;
  51. newnewy(liczbapunktow) = tempblad(stopien_wielomianu);
  52. end
  53. end
  54. figure(2);
  55. plot(newx, newy);
  56. title('Błąd a stopień wielomianu.')
  57. figure(3);
  58. plot(newnewx, newnewy);
  59. title('Błąd a liczba punktów.')
  60. else
  61. ilepkt = 10;
  62. clc;
  63. x = [0, 1, 2, 3];
  64. y = [1; -2; 1; 0];
  65. for i = 5:ilepkt
  66. W = vander(x)\y;
  67. newy = polyval(W, x);
  68. disp(mean(abs(newy - y)));
  69. x(i) = i;
  70. y(i) = randi(10);
  71. end
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. end
Advertisement
Add Comment
Please, Sign In to add comment