%% Tizedik gyakorlat
%% Köz. diff. egyenlet numerikus megoldása: Euler módszer
%
% Kedvcsináló: https://www.youtube.com/watch?v=v-pbGAts_Fg
%
% Cél: Szeretnénk megoldani az alábbi közönséges differenciálegyenletet:
% \begin{cases}
% u'(t) = f(t, u(t)), \\
% u(0) = u_0, \qquad \quad \;
% \end{cases}
% ahol f olyan "szép" függvény, hogy ennek létezik egyértelmű megoldása, valamint u_0 adott kezdeti érték. Ha f nem speciális alakú, akkor nem ismert általános eljárás, ami zárt alakban visszaadná a megoldást, ezért numerikusan közelítjük a megoldást. Gyakran nem is kell maga a függvény pontos formulája, csak a függvény értéke valamilyen t = T esetén.
%
% Euler módszer: Közelítsük a keresett u(T) értéket úgy, hogy felbontjuk a [0,T] tartományt kis intervallumokra - legyen ezen intervallumok hossza h, és az így kapott pontok pedig t_0=0, \;\; t_1=h, \;\; t_2 = 2h \;\; \dots \;\; t_N = T. Legyen egy adott pontban a közelítés u(t_n)\approx y_n. Belátható (az 5. gyakorlaton tanult módszerekkel), hogy
% u'(t_n)\approx \frac{u(t_{n+1}) - u(t_n)}{h}
% és
% u'(t_n) \approx \frac{u(t_n) - u(t_{n-1})}{h}.
% A fentieket beírva a korábbi egyenletbe kapjuk az alábbi két algorimtust:
% \frac{y_{n+1} - y_{n}}{h} = f(t_n, y_n)
% \frac{y_{n} - y_{n-1}}{h} = f(t_n, y_{n})
% Ha ezeket átrendezzük, kapjuk az explicit Euler módszert:
% y_{n+1} = y_n + h f(t_n, y_{n}),
% illetve az implicit Euler módszert:
% y_n = y_{n-1} + h f(t_n, y_n).
% Látható, hogy az explicit esetében könnyedén kiszámítható mindig a következő elem, míg az implicit esetén minden lépésben meg kell oldanunk ezt az egyenletet valamilyen módszerrel (pl. Newton módszerrel).
% 1. feladat: Oldjuk meg az alábbi egyenletet explicit Euler módszer segítségével a [0,10] intervallumon h=5 és h=0,01 lépésközökkel is: ezt úgy tegyük meg, hogy írunk egy függvényt, ami adott h esetén visszaadja a vizsgált idők értékeit és az ott kiszámolt közelítéseket! Hogyan néz ki ennek egy lépése az implicit módszerrel? Oldjuk meg így is Newton iterációt alkalmazva (ez addig fusson, amíg az egymás követő értékek különdsége már kisebb, mint 10^{-8}, és a kezdeti érték legyen mindig az előző lépésben kiszámolt y)!
% \begin{cases}
% y'(t) = \mathrm{arctg} (y(t)), \\
% y(0) = 1. \qquad\quad\;\;\;\;
% \end{cases}
% Megoldás:

...

% 2. feladat: Tekintsük az alábbi egyenletet:
% \begin{cases}
% u'(t) = - 100 \;u(t), \\
% u(0) = 1. \qquad\quad\;\;
% \end{cases}
% Számítsuk ki a pontos megoldást, majd vizsgáljuk meg, hogy mi történik, hogyha az explicit, illetve, ha az implicit módszert alkalmazzuk az egyenletre a [0,1] intervallumon h = 0.2 lépésközzel! Indokoljuk meg a kapott eredményt!
% Megoldás:

...

% Az implicit Euler módszer:

...

% 3. feladat: Oldjuk meg explicit Euler módszerrel az alábbi egyenletrendszert a t \in [0,1] intervallumon h=0.2-vel és u_1(0)=2, u_2 (0)=-3 kezdeti értékekkel!
% \begin{cases}
% u_1'(t) = 8 u_1(t) + 9 u_2(t),\;\;\;\;\;\; \\
% u_2'(t) = -18 u_1(t) - 19 u_2(t).
% \end{cases}
% Megoldás:

...