Numerická derivace

Z Wikipedie, otevřené encyklopedie

Numerická derivace je numerická metoda odhadu derivace funkce na základě hodnoty této funkce v konečně mnoha bodech. Numerickou derivaci obvykle používáme v situaci, kdy nejsme schopni určit derivaci funkce analyticky.

Obsah

[editovat] Základní princip

Máme odhadnout derivaci funkce f(x) v bodě x, tj. hodnotu f'(x), na základě znalosti funkčních hodnot v konečně mnoha bodech.

Při odhadu derivace funkce f můžeme vyjít z definice:

f'(x) = \lim_{h \to 0} {\frac{f(x+h) - f(x)}{h}}

kde h je z prstencového okolí nuly.

Zvolíme-li „malé“ h různé od nuly, dostaneme odhad

d(x,h) = \frac{f(x+h) - f(x)}{h}.

Derivace znamená směrnici tečny ke grafu funkce v bodě, zde jí nahrazujeme sečnou vedenou body, které se od sebe „velmi málo liší“.

[editovat] Řád metody a chyba metody

Kvalitu tohoto odhadu můžeme posoudit pomocí Taylorova rozvoje funkce f v okolí nuly. První člen f'(x) je správný výsledek, ostatní členy znamenají Taylorův rozvoj chyby metody. Řád metody numerické derivace je exponent u prvního nenulového členu Taylorova rozvoje chyby. Samozřejmě platí, že čím větší je řád numerické derivace, tím „přesnější“ výsledek vypočteme.

Z praktického hlediska je problém přibližného výpočtu derivací funkce dané tabulkou delikátní a zaokrouhlovací chyby mohou být v některých případech zničující, zejména pokud se jedná o body získané empiricky (tj. sérii naměřených bodů). Proto je vhodné nejdříve data vhodně upravit (např. aproximací podle metody nejmenších čtverců).

[editovat] Tři ekvidistantní body

V případě, že tabulkové body jsou ekvidistantní, můžeme vzorec pro numerickou derivaci získat derivováním interpolačních vzorců vyjádřených pomocí diferencí. Například tři body f(x-h), f(x) a f(x+h) lze proložit parabolou a odvodit následující aproximaci první derivace f'(x).

f'(x) = \frac{f(x+h) - f(x-h)}{2h}

Pro stejné tři body lze také odvodit vzorec pro odhad druhé derivace f''(x).

f''(x) = \frac{f(x+h)-2f(x)+f(x-h)}{h^2}

[editovat] Odvození vzorce pro první derivaci

Předpokládejme trojici bodů x-h, x a x+h, které proložíme parabolou y = ax2 + bx + c. Pro zjednodušení zápisu zavedeme značení xk − 1 = xh, xk = x, yk = f(xk).

Při proložení tří bodů parabolou musí platit následující vztahy.

y_k = a x_k^2 + b x_k + c
y_{k-1} = a (x_k-h)^2 + b (x_k-h) + c = \ldots = y_k + ah^2 - 2ahx_k - bh
y_{k+1} = a (x_k+h)^2 + b (x_k+h) + c = \ldots = y_k + ah^2 + 2ahx_k + bh

Z rovnice pro yk − 1 lze vyjádřit bh a dosadit jej do rovnice pro yk + 1 a získat tak a.

bh = yk + ah2 − 2ahxkyk − 1
yk + 1 = yk + ah2 + 2ahxk + yk + ah2 − 2ahxkyk − 1 = 2yk + 2ah2 + ykyk − 1
a = \frac{y_{k+1} - 2y_k + y_{k-1}}{2h^2}

Do derivace paraboly v bodě xk dosadíme za b, které v podstatě známe z bh.

b = ah - 2ax_k + \frac{y_k - y_{k-1}}{h}
y_k' = 2ax_k + b = ah + \frac{y_k - y_{k-1}}{h}

Dosadíme za a, převedeme na společný jmenovatel a získáme tak finální vzorec pro aproximaci první derivace.

y_k' = \frac{y_{k+1} - 2y_k + y_{k-1}}{2h} + \frac{y_k - y_{k-1}}{h}  = \frac{y_{k+1} - 2y_k + y_{k-1} + 2y_k - 2y_{k-1}}{2h}
y_k' = \frac{y_{k+1} - y_{k-1}}{2h}

Odvozený vzorec odpovídá „selské úvaze“, kdy směrnice tečny v bodě xk je nahrazena směrnicí sečny mezi body xk − 1 a xk + 1.

[editovat] Odvození vzorce pro druhou derivaci

Při uvažovaném proložení tří bodů parabolou je možné odvodit i vzorec pro aproximaci druhé derivace f''(x). Stačí pouze dvakrát derivovat rovnici paraboly a dosadit za a vypočtené v předchozí kapitole.

y = ax2 + bx + c
y' = 2ax + b
y'' = 2a
y_k'' = \frac{y_{k+1} - 2y_k + y_{k-1}}{h^2}

Ke stejnému vzorci se lze opět dostat „selským rozumem“. Stačí si uvědomit, že druhá derivace je vlastně pouze derivací první derivace a použít jednoduchý vztah pro aproximaci první derivace.

f'(x) = \frac{f(x+h) - f(x)}{h}.
f''(x) = \frac{f'(x) - f'(x-h)}{h} = \frac{\frac{f(x+h) - f(x)}{h} - \frac{f(x) - f(x-h)}{h}}{h}