3.2. Numerické metódy riešenia diferenciálnych rovníc#

Diferenciálne rovnice môžeme riešiť analyticky alebo numericky. Hoci analytické riešenie nám dáva presný výsledok, v mnohých prípadoch je takéto riešenie veľmi komplikované, nepraktické, alebo dokonca nemožné. Preto je vhodné pri inžinierskych problémoch, ktoré riešia systémy popísané viacerými lineárnymi alebo nelineárnymi diferenciálnymi rovnicami použiť numerické metódy [CC14, Kre10]. Pri numerickom riešení ide o aproximáciu presného riešenia s určitou chybou. Táto chyba závisí od použitej numerickej metódy a veľkosti kroku výpočtu.

Doteraz sme používali pri diferenciálnych rovniciach Leibnitzov zápis derivácie, t. j.

(3.21)#\[ \frac{\mathrm{d}x(t)}{\mathrm{d}t}. \]

Pri fyzikálnych systémoch, kde majú diferenciálne rovnice deriváciu v čase sa často používa aj Newtonov zápis derivácie

(3.22)#\[\begin{split} \begin{align} \dot x &\equiv \frac{\mathrm{d}x(t)}{\mathrm{d}t}, \\ \ddot x &\equiv \frac{\mathrm{d}^2x(t)}{\mathrm{d}t^2}. \end{align} \end{split}\]

Differenciálna rovnica má potom tvar

(3.23)#\[ \dot x = f (t, \; x(t)). \]

Máme danú obyčajnú diferenciálnu rovnicu (ODR) prvého rádu s počiatočnou podmienkou

(3.24)#\[ \begin{align} \label{eq:ode1} \dot x(t) = f (t, \; x(t)), \quad x(t_0) = x_0. \end{align} \]

3.2.1. Priama Eulerova metóda#

Je nazývaná aj ako explicitná Eulerova metóda. Ide o najjednoduchšiu metódu numerického riešenia ODR. V porovnaní s pokročilejšími metódami má horšiu stabilitu a presnosť, preto sa v praxi používa len málo. Vďaka svojej jednoduchosti je však vhodná na vysvetlenie princípu numerických metód pri simulácii fyzikálnych dynamických systémov, v našom prípade elektrických obvodov.

3.2.1.1. Odvodenie aproximáciou#

Vieme, že derivácia je definovaná pomocou limity ako

(3.25)#\[ \begin{align} \dot {x}(t) = \frac{\mathrm{d}x(t)}{\mathrm{d}t} = \lim_{h \rightarrow 0} \frac{x(t+h) - x(t)}{h}. \end{align} \]

Limitu \(h \rightarrow 0\) nahradíme malým diskrétnym krokom \(h = \Delta t\), potom dostane

(3.26)#\[ \begin{align} \label{eq:der_appr} \frac{\mathrm{d}x(t)}{\mathrm{d}t} \approx \frac{\Delta x}{\Delta t} = \frac{x(t+h) - x(t)}{h}. \end{align} \]

Teraz môžeme aproximovať diferenciálnu rovnicu (3.24) diferenčnou rovnicou

(3.27)#\[ \begin{align} \frac{x(t+h) - x(t)}{h} = f (t, \; x(t)). \end{align} \]

Ak máme dané \(x\) v čase \(t\), môžeme vypočítať \(x\) v čase \(t+h\) riešením diferenčnej rovnice

(3.28)#\[ \begin{align} x(t+h) = x(t) + h \, f (t, \; x(t)). \end{align} \]

To je presne jeden krok priamej Eulerovej metódy. Ak zavedieme značenie \(t_{n+1} = t_n+h\) a \(x_n = x(t_n)\), potom dostaneme rovnicu priamej Eulerovej metódy ako

(3.29)#\[ \begin{align} x_{n+1} = x_n + h \, f (t_n, \; x_n). \end{align} \]

Alternatívne možme rovnicu zapísať aj v tvare

(3.30)#\[ \begin{align} x[n+1] = x[n] + h \, f (t[n], \; x[n]). \end{align} \]
../../../_images/algorithm_1.png

3.2.1.2. Odvodenie pomocou integrálnej rovnice#

(3.31)#\[ \begin{align} x(t) = x_0 + \int_{t_0}^t f(\tau, \; x(\tau)) \mathrm{d} \tau \end{align} \]

3.2.1.3. Odvodenie pomocou Taylorovho rozvoja#

(3.32)#\[ \begin{align} x(t_n + h) = x(t_n) + \left. \frac{h}{1!} \, \frac{\mathrm{d} x(t)}{\mathrm{d}t} \right |_{t=t_n} + \left. \frac{h^2}{2!} \, \frac{\mathrm{d}^2 x(t)}{\mathrm{d}t^2} \right |_{t=t_n} + \left. \frac{h^3}{3!} \, \frac{\mathrm{d}^3 x(t)}{\mathrm{d}t^3} \right |_{t=t_n} + \cdots \end{align} \]
\[ \begin{align} x(t_n + h) = \left. \sum_{n=0}^\infty \frac{h^n}{n!} \, \frac{\mathrm{d}^n x(t)}{\mathrm{d}t^n} \right |_{t=t_n} \end{align} \]