function lab05_pelda2_matlab2015()
% 2. feladat
% Számítsuk ki az 1. példánál meghatározott hatod fokú polinom értékeit a
% [-4;8] intervallumon először 10, majd 100 mintaponttal.
% Ábrázoljuk a kapott eredményt, a 10 pontost kék vonallal és kör markerekkel,
% és ugyanazon az ábrán a 100 pontost piros vonallal és pont markerekkel.
%
% Számítsuk ki és ábrázoljuk a görbék numerikus deriváltjait!
% MATLAB-ban a derivált mindig differenciA hányados!
% Vektorok elemenként vett különbségeinek kiszámításához használjuk a
% diff(vektor) beépített függvényt.
%
% Számítsuk ki az előbb kiszámolt függvény deriváltját a t0 = 6 helyen!
% Az adott helyre rajzoljuk be a megfelelő érintő egyenest is!



%% Betoltes, Illesztes, az 1. peldabol
load polinom
meresiPozicio=meresiPozicio;
mertErtekek=mertErtekek;
% Illesztett polinom egyutthatok
polinomEgyutthatokHatodfokra = polyfit(meresiPozicio,mertErtekek,6);

% Polinom ertekei a [-4;8] intervallumon es kirajzolas
tizPont=linspace(-4,8,10);
szazPont=linspace(-4,8,100);
tizPontosErtekekHatodfokra = polyval(polinomEgyutthatokHatodfokra,tizPont);
szazPontosErtekekHatodfokra = polyval(polinomEgyutthatokHatodfokra,szazPont);

figure(2);
hold on;
title('Polinom illesztes','FontSize',22,'FontWeight','bold');
xlabel('t ertek');
ylabel('Y ertek');
plot(tizPont,tizPontosErtekekHatodfokra,'b-o');
plot(szazPont,szazPontosErtekekHatodfokra,'r.-');
legend('10 pontos',...
	'100 pontos',...
	'Location','SouthWest');

%% Numerikus derivalt
% Kolunbsegek kiszamitasa
% Ertelmezesi tartomany
dTizPont = diff(tizPont);
dSzazPont = diff(szazPont);
% Ertekkeszlet
dTizPontosErtekekHatodfokra = diff(tizPontosErtekekHatodfokra);
dSzazPontosErtekekHatodfokra = diff(szazPontosErtekekHatodfokra);

% Differencia hanyados
differenciaHanyadosTizPontos = dTizPontosErtekekHatodfokra./dTizPont;
differenciaHanyadosSzazPontos = dSzazPontosErtekekHatodfokra./dSzazPont;

% Analitikusan szamolt derivalt
analitikusDerivaltEgyutthatok=[-0.00386196604980260,-0.00575375410932180,0.0903493368775512,0.0502799187314937,1.63792846638915,2.93550336832322];

% Kirajzolas
figure(3);
hold on;
title('Numerikus Derivalt','FontSize',22,'FontWeight','bold');
xlabel('t ertek');
ylabel('dY ertek');
plot(tizPont(2:end),differenciaHanyadosTizPontos,'bo--');
plot(szazPont(2:end),differenciaHanyadosSzazPontos,'r.--');
plot(szazPont,polyval(analitikusDerivaltEgyutthatok,szazPont),'k--');
legend('10 pontos',...
	'100 pontos',...
	'Analitikus',...
	'Location','SouthWest');
pause

%% Derivalas egy adott pontban
% Derivalt szamitasa a t0=6 helyen
t0 = 6;
% Fuggveny ertek
y0 = polyval(polinomEgyutthatokHatodfokra,t0);
% a derivalas "felbontasa"
dt0 = 1E-6;

% t0 koruli kornyezet
tTartomany = [t0-dt0 t0+dt0];
% a fv. ertekei ugyanitt
yTartomany = polyval(polinomEgyutthatokHatodfokra,tTartomany);

%kulonbsegek
dtTartomany = diff(tTartomany);
dyTartomany = diff(yTartomany);
% derivalt
differenciaHanyados = dyTartomany/dtTartomany;

% kirajzolas
figure(2);
plot(t0,y0,'ko');
plot([t0-1 t0+1],[y0-differenciaHanyados y0+differenciaHanyados],'g');
legend('10 pontos',...
	'100 pontos',...
	'Derivalasi hely', ...
	'Erinto egyenes',...
	'Location','SouthWest');
end