DerivLab jak rychle se to mění

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Kde derivace neexistuje — a kde je horší než to

Všechno dosud předpokládalo, že derivace existuje. Ve skutečném stroji je plno míst, kde neexistuje — a numerická derivace tam tiše vrátí číslo, což je horší, než kdyby spadla.

Zlom: |x| v nule

Zleva je směrnice −1, zprava +1. Limita neexistuje, protože se obě strany neshodnou. A teď to nepříjemné: centrální diference vrátí 0 — průměr obou stran, tedy hodnotu, kterou funkce nikde nemá. Vzorec nemá jak poznat, že se ptá na něco, co není.

V praxi jsou zlomy všude: tření (Coulombovo mění znaménko skokem), dorazy, saturace regulátoru, absolutní hodnota v účelové funkci. Optimalizační metody, které předpokládají hladkost, na nich buď kmitají, nebo se zastaví — a proto pro ně existují metody vlastní (subgradient, proximální).

Horší případ: derivace existuje a je divoká

Funkce x² sin(1/x) (s hodnotou 0 v nule) je v nule diferencovatelná a její derivace tam je přesně 0. Přitom kousek vedle derivace osciluje mezi zhruba −1 a +1: testy v repu naměřily rozpětí 2,14 na intervalu, který se blíží k nule.

Derivace tedy existuje a je nespojitá. Numericky se s tím nedá dělat nic — libovolně malý krok trefí libovolně jinou hodnotu. Užitečné je vědět, že „diferencovatelná“ neznamená „slušná“, a že skoro každá věta v numerice předpokládá spojitost derivace, ne jen její existenci.

Jak to poznat v praxi. Spočítat derivaci několika různými kroky. U hladké funkce vyjdou skoro stejně; u zlomu nebo u divoké funkce se odpovědi rozejdou. Je to primitivní test a chytí většinu případů — a kalkulačka v téhle labce ukazuje právě proto všechny čtyři vzorce najednou.