%% Ötödik gyakorlat
%% Numerikus deriválás és integrálás
%
%% Numerikus deriválás
% Alapgondolat: Keressük egy f(x) függvény deriváltjának értékét egy adott x = x_0 pontban úgy, hogy f(x) alakja nem ismert, csak az értékei bizonyos pontokban.
% Híres közelítések:
% Jobboldali/haladó differenciahányados:
% f'(x_0) \approx \frac{f(x_0+h)-f(x_0)}{h}
% Baloldali/retrográd differenciahányados:
% f'(x_0) \approx \frac{f(x_0) - f(x_0-h)}{h}
% Centrális/központi differenciahányados:
% f'(x_0) \approx \frac{f(x_0+h) - f(x_0-h)}{2h}
% Centrális közelítés második deriváltra:
% f''(x_0) \approx \frac{f(x_0-h) - 2 f(x_0)  + f(x_0+h)}{h^2}
% 1. feladat: Bizonyítsuk be, hogyha f \in C^3 (azaz f háromszor folytonosan deriválható), akkor
% \frac{-3 f(x_0) + 4 f(x_0+h) - f(x_0+2h)}{2h} = f'(x_0) + O(h^2).
% 2. feladat: (a) Írjunk MATLAB programot, mely a \sin''(0.5) = -0.479425538604203\dots értéket a másodrendű centrális differenciával közelíti adott h lépésköz mellett! Számítsuk ki a hibát is!
% Megoldás:

...

% (b) Vizsgáljuk meg, mennyi lesz a hiba 10^{-2}, 10^{-3}, 10^{-4}, 10^{-5} és 10^{-6} lépésközök esetén! Mit tapasztalunk? Mivel lehet magyarázni a jelenséget?
% Megoldás:

...

%
%% Numerikus integrálás
% Alapgondolat: Keressük az f(x) függvény határozott integrálját egy adott [a,b] intervallumon. Néha ismerjük f(x) alakját is, de gyakran csak az értékeit bizonyos pontokban.
% Híres közelítések:
% Trapézszabály:
% \int_a^b f(x) dx \approx |b-a| \left( \frac{1}{2} f(a) + \frac12 f(b)\right)
% Érintőformula:
% \int_a^b f(x) dx \approx |b-a| f\left( \frac{a+b}{2} \right)
% Simpson formula:
% \int_a^b f(x) dx \approx |b-a| \left( \frac16 f(a) + \frac46 f \left( \frac{a+b}{2}  \right)  + \frac16 f(b)\right)
% 3. feladat: Tekintsük az alábbi integrált:
% \int_0^2 \frac{1}{1+x^2} dx
% (a) Számítsuk ki az értékét a trapézmódszer és az érintőformula segítségével is! Mekkora lesz a hiba? (A pontos érték \arctan(2).)
% (b) Javítsuk az előző módszereket úgy, hogy ne a teljes [0,2] intervallumra alkalmazzuk őket, hanem számítsuk ki az integrálokat a [0,1] és [1,2] intervallumokon, majd az így kapott eredményket adjuk össze! (Ezeknek neve összetett trapéz, ill. összetett érintőformula.)
% (c) Vizsgáljuk meg, hogy mi történik, hogyha az imént a trapézszabályból származó x és az érintőformulából származó y értéket behelyettesítjük az (x+2y)/3 formulába! Mekkora lesz most a hiba? Alkalmazzuk a fenti módon a(z összetett) Simpson formulát is! Mit vehetünk észre?

...

% (d) Írjunk kódot, amely a fenti integrált számítja ki tetszőleges, N darab kisebb intervallumra való felosztás esetén! Ábrázoljuk a hibákat N
%  függvényében egy log-log grafikonon! Mit tapasztalunk?

N=1:100;

hibak=zeros(length(N),3);

for i=1:length(hibak)
    hibak(i,:)=osszetett_int(i);
end

loglog(N,hibak);
legend('Trapéz','Érintő','Simpson')