Java - algoritmy numerického derivovania
Základy informatiky - jazyk Java
Úvod do programovania v jazyku Java
Java - objektovo orientovaný prístup
Vzorové príklady:
Java - implementácia numerických algoritmov
- >Java - algoritmy hľadania nulových miest
>Java - algoritmy numerického derivovania
>Java - algoritmy numerického integrovania
>Java - algoritmy aproximácie
>Java - algoritmy interpolácie
Java - triedy geometrických tvarov
Pokročilé témy:
Medzi ďalšie numerické algoritmy patria algoritmy numerického derivovania. Nasledujúce algoritmy budeme dopĺňať do triedy Solver. V nasledujúcom texte budú ukázané 2 metódy numerického derivovania. Prvá metóda je priamo odvodená z definície derivácie a druhá metóda používa rozdielové diferencie.
Algoritmy numerického derivovania
Základná numerická derivácia
Drivácia funkcie f(x) je definovaná ako:
[math]{f}'\left( x \right)=\underset{h\to 0}{\mathop{\lim }}\,\frac{f\left( x+h \right)-f\left( x \right)}{h}[/math]
Z tejto definíce budeme vychádzať aj pri implementácii algoritmu derivovania. Limitu v predchádzajúcom vzorci nahradíme tým, že do premennej h dosadíme hodnotu blížiacu sa k nule.
V triede Solver sme doplnili premennú h, ktorej význam je najlepšie vidieť z predchádzajúceho vzorca. V nasledujúcom zdrojovom kóde je uvedený aj konštruktor triedy Solver, v ktorom je doplnená inicializácie premennej h. Ešte poznamenajme, že počítame deriváciu funkcie f, ktorá je členským objektom v triede Solver.
public class Solver {
private FunkceM f;
public double h;
public Solver(FunkceM f) {
this.f = f;
this.h = 0.0000001;
}
//...
public double derivacia1(double x0) {
return (this.f.hodnota(x0 + this.h) - this.f.hodnota(x0)) / this.h;
}
//...
}
Derivácia pomocou rozdielových diferencií
Prvá derivácie funkcie f(x) sa dá definovať aj nasledovne:
[math]{f}'\left( {{x}_{0}} \right)=\frac{1}{h}\left( \frac{\Delta {{y}_{-1}}+\Delta {{y}_{1}}}{2}-\frac{1}{6}\frac{{{\Delta }^{3}}{{y}_{-1}}-{{\Delta }^{3}}{{y}_{1}}}{2} \right)[/math]
kde [math]\Delta{y}[/math] sú rozdielové diferencie. Tieto diferencie sa dajú znázorniť nasledovne:
Pre výpočet jednotlivých diferencií je potrebné poznať hodnotu h. Jej význam je rovnaký ako v predchádzajúcom príklade. Pre výpočet diferencií platia vzťahy:
[math]\begin{align}
& \Delta {{y}_{-2}}=f\left( {{x}_{0}}-h \right)-f\left( {{x}_{0}}-2h \right) \\
& \Delta {{y}_{-1}}=f\left( {{x}_{0}} \right)-f\left( {{x}_{0}}-h \right) \\
& \Delta {{y}_{1}}=f({{x}_{0}}+h)-f\left( {{x}_{0}} \right) \\
& \Delta {{y}_{2}}=f({{x}_{0}}+2h)-f\left( {{x}_{0}}+h \right) \\
\end{align}[/math]
[math]\begin{align}
& {{\Delta }^{2}}{{y}_{-1}}=\Delta {{y}_{-1}}-\Delta {{y}_{-2}} \\
& {{\Delta }^{2}}{{y}_{0}}=\Delta {{y}_{1}}-\Delta {{y}_{-1}} \\
& {{\Delta }^{2}}{{y}_{1}}=\Delta {{y}_{2}}-\Delta {{y}_{1}} \\
\end{align}[/math]
[math]\begin{align}
& {{\Delta }^{3}}{{y}_{-1}}={{\Delta }^{2}}{{y}_{0}}-{{\Delta }^{2}}{{y}_{-1}} \\
& {{\Delta }^{3}}{{y}_{1}}={{\Delta }^{2}}{{y}_{1}}-{{\Delta }^{2}}{{y}_{0}} \\
\end{align}[/math]
[math]{{\Delta }^{4}}{{y}_{0}}={{\Delta }^{3}}{{y}_{1}}-{{\Delta }^{3}}{{y}_{-1}}\,[/math]
Na nasledujúcom obrázku je znázornený geometrický význam rozdielových diferencií.