Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- funkcja_sprawdzana = 2*exp(x)+5*sin(4*x);
- stopien_wielomianu = 10; % STOPIEN WIELOMIANU
- ilosc_punktow = 30; % ILOSC DO SPRAWDZENIA
- newnewx = zeros(1, ilosc_punktow);
- newnewy = zeros(1,ilosc_punktow);
- clc;
- tryb = input('Aproksymacja czy Interpolacja ? [A/I]: ', 's');
- if isempty(tryb)
- tryb = 'A';
- end
- if(tryb == 'A' || tryb == 'a')
- for liczbapunktow = stopien_wielomianu+1:ilosc_punktow
- x = linspace(0,3,ilosc_punktow);
- y = funkcja_sprawdzana; % FUNKCJA
- newx = zeros(1,stopien_wielomianu);
- newy = zeros(1,stopien_wielomianu);
- tempblad = zeros(1,stopien_wielomianu);
- for stopien = 1:stopien_wielomianu
- cla;
- figure(1);
- plot(x, y);
- title(['Aproksymacja a stopien wielomianu: ', num2str(stopien_wielomianu)])
- w = polyfit(x, y, stopien);
- yapr = polyval(w, x);
- hold;
- plot(x, yapr);
- hold;
- blad = zeros(1,length(x));
- for i = 1:length(x)
- if (i == 1)
- blad(i) = ((2*exp(x(i))+5*sin(4*x(i)) - polyval(w, x(i)))^2);
- else
- blad(i) = blad(i-1) + ((2*exp(x(i))+5*sin(4*x(i)) - polyval(w, x(i)))^2);
- end
- tempblad(stopien) = blad(length(x));
- end
- tempblad(stopien) = tempblad(stopien)/301;
- clc;
- disp(['Wielomian stopnia n=',num2str(stopien),' błąd: ', num2str(tempblad(stopien))]);
- newx(stopien) = stopien;
- newy(stopien) = tempblad(stopien);
- newnewx(liczbapunktow) = liczbapunktow;
- newnewy(liczbapunktow) = tempblad(stopien_wielomianu);
- end
- end
- figure(2);
- plot(newx, newy);
- title('Błąd a stopień wielomianu.')
- figure(3);
- plot(newnewx, newnewy);
- title('Błąd a liczba punktów.')
- else
- ilepkt = 10;
- clc;
- x = [0, 1, 2, 3];
- y = [1; -2; 1; 0];
- for i = 5:ilepkt
- W = vander(x)\y;
- newy = polyval(W, x);
- disp(mean(abs(newy - y)));
- x(i) = i;
- y(i) = randi(10);
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement