function lab05_pelda1_matlab2015()
% 1. feladat
% Toltsuk be a polinom.mat fajlt!
% Illesszunk az adatokra masodfokú polinomot!
% ertekeljuk ki az illesztett polinomot tobbfele lepeskozzel!
% Rajzoljuk ki az eredeti adatokat es szamolt ertekeket egy kozos abrara!
% Rajzoljuk ki az illesztett polinom gyokeit!
% Az abrat megfeleloen feliratozzuk!
%
% Vegezzunk predikciot a meresi adatokra a [4;8] tartomanyon az illesztett
% polinom kiertekelesevel!
%
% Illesszunk egy hatodfokú polinomot is az eredeti adatokra, es ezzel is
% vegezzuk el a predikciot ugyanezen a tartomanyon!
% Mit tapasztalunk?

%% Betoltes, Illesztes, Gyokok, Kirajzolas
load polinom
meresiPozicio=meresiPozicio;
mertErtekek=mertErtekek;
% Kirajzolas
figure(1);
hold on;
title('Polinom illesztes','FontSize',22,'FontWeight','bold');
xlabel('X ertek');
ylabel('Y ertek');
plot(meresiPozicio,mertErtekek,'k.');
legend('Zajos adatok',...
	'Location','NorthWest');
pause

% Illesztett polinom egyutthatok
polinomEgyutthatok = polyfit(meresiPozicio,mertErtekek,2);
disp(mat2str(polinomEgyutthatok));
pause

% Illesztett polinom ertekei az eredeti meresi pontokon es kirajzolas
illesztettErtekek = polyval(polinomEgyutthatok,meresiPozicio);
plot(meresiPozicio,illesztettErtekek,'r','LineWidth',2);
legend('Zajos adatok', ...
	'2. foku illesztes',...
	'Location','NorthWest');
pause

% Illesztett polinom ertekei nagyobb lepeskozzel es kirajzolas
idoNagyobbLepeskozzel=linspace(meresiPozicio(1),meresiPozicio(end),5);
illesztettErtekekPontatlan = polyval(polinomEgyutthatok,idoNagyobbLepeskozzel);
plot(idoNagyobbLepeskozzel,illesztettErtekekPontatlan,'b--','LineWidth',2);
legend('Zajos adatok', ...
	'2. foku illesztes',...
	'2. foku illesztes keves ponttal',...
	'Location','NorthWest');
pause

% Gyokok
gyokok=roots(polinomEgyutthatok);
plot(gyokok,zeros(size(gyokok)),'kx','LineWidth',2,'MarkerSize',20);
zeroLine=plot([meresiPozicio(1),meresiPozicio(end)],zeros(1,2),'k--');
legend('Zajos adatok', ...
	'2. foku illesztes',...
	'2. foku illesztes keves ponttal',...
	'2. foku gyokok',...
	'Location','NorthWest');
pause

%% Predikcio
% Predikalt tartomany
predikaltTartomany = 4:0.1:8;
% Predikalt ertekek
predikaltErtekek = polyval(polinomEgyutthatok,predikaltTartomany);

% az elozo abrahoz rajzolas
plot(predikaltTartomany,predikaltErtekek,'g','LineWidth',2);
delete(zeroLine);
zeroLine=plot([meresiPozicio(1),8],zeros(1,2),'k--');
set(get(get(zeroLine,'Annotation'),'LegendInformation'),...
	'IconDisplayStyle','off');
legend('Zajos adatok', ...
	'2. foku illesztes',...
	'2. foku illesztes keves ponttal',...
	'2. foku gyokok',...
	'2. foku predikcio',...
	'Location','NorthWest');
pause

%% Hatodfoku illesztes es predikcio
% Illesztett polinom egyutthatok
polinomEgyutthatokHatodfokra = polyfit(meresiPozicio,mertErtekek,6);
disp(mat2str(polinomEgyutthatokHatodfokra));
pause

% Illesztett es predikalt polinom ertekei az eredeti meresi pontokon es kirajzolas
illesztettErtekekHatodfokra = polyval(polinomEgyutthatokHatodfokra,meresiPozicio);
predikaltErtekekHatodfokra = polyval(polinomEgyutthatokHatodfokra,predikaltTartomany);

plot(meresiPozicio,illesztettErtekekHatodfokra,'b--','LineWidth',2);
plot(predikaltTartomany,predikaltErtekekHatodfokra,'c--','LineWidth',2);
legend('Zajos adatok', ...
	'2. foku illesztes',...
	'2. foku illesztes keves ponttal',...
	'2. foku gyokok',...
	'2. foku predikcio',...
	'6. foku illesztes',...
	'6. foku predikcio',...
	'Location','NorthWest');

end