clc
disp('Négyzetesen legjobb közelítések a polyfit függvény használatával');
% lásd
% help polyfit
a = -2
b =  2
n = 40
f = @(x) 1./(1- x + x.^2);        % a közelítendõ f(x) racionális törtfüggvény
x = linspace(a, b, n );           % n darab alappont
y = f(x);

p3  = polyfit(x,y,3);      % közelítés harmadfokú polinommal - gyatra
p6  = polyfit(x,y,6);      % közelítés hatodfokú polinommal
p8  = polyfit(x,y,8);      % közelítés nyolcadfokú polinommal - elég jó!
L_n = polyfit(x,y,n-1);    % ez a Lagrange polinom - mi a baj vele?!

disp('  ----------------------');
disp('  A négyzetes eltérések:');
p3hiba = norm(y- polyval(p3,x))
p6hiba = norm(y- polyval(p6,x))
p8hiba = norm(y- polyval(p8,x))

L_nhiba = norm(y- polyval(L_n,x))  % Jó ez nekünk??
disp('  Mi látszik a hibák alapján?');
disp('  ----------------------');
disp('  Ábrázoljuk a közelítéseket:');
disp('  Mit mutat az ábra?');
pause(3)
plot(x,y,'r.', 'markersize', 24); % az f(x)  megadott értékei
grid on
hold on 

xx = linspace(a, b, 500);         % mintapontok a grafikonhoz
plot(xx,polyval(p3,xx),'linewidth',2,'b');
plot(xx,polyval(p6,xx),'linewidth',2,'m');
plot(xx,polyval(p8,xx),'linewidth',2,'r');
plot(xx,polyval(L_n,xx),'linewidth',2,'g');

legend('y_i = 1/(1 - x_i + x_i^2)', 'p3', 'p6', 'p8', 'L_n');
title('f(x) négyzetesen legjobb közelítései a polyfit gyári függvénnyel',
      'fontsize', 12);
refresh 


disp('  ----------------------');    
input('Befejezés ENTER-rel');
close           % ábra bezárása
