function P=approx_cannonical(f,a,b,n) % % Srednjekvadratna aproksimacija f-je f na intervalu [a,b], polinomom % stepena n u odnosu na kanonsku bazu polinoma. % % Poziv funkcije : P=approx_cannonical(@(x) sqrt(x),0,1,2) % % Argumenti funkcije: % f -anonimna funkcija % a, b - leva i desna granica intervala % n - stepen polinoma kojim zelimo da aproksimiramo funkciju % Gradimo matricu G koja predstavlja proizvode [i,j]=meshgrid(0:n,0:n); G=b.^(i+j+1)./(i+j+1)-a.^(i+j+1)./(i+j+1); % II nacin: bez funkcije meshgrid, dvostruka for petlja % G=zeros(n+1,n+1); % for i=0:n % for j=0:n % G(i+1,j+1)=(b^(i+j+1)-a^(i+j+1))/(i+j+1); % end % end % Gradimo vektor fg koji predstavlja proizvode fg = zeros(n+1,1); for i=1:n+1 fg(i)=integral(@(x) f(x).*x.^(i-1),a,b); end P=G\fg; P=fliplr(P'); xx=linspace(a,b); plot(xx,f(xx),xx,polyval(P,xx),'m*'); legend('funkcija', 'aproksimacija');