Advertisement
Guest User

Untitled

a guest
May 21st, 2019
64
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
Advertisement