Diskuze: Lokální extrémy funkce

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ahoj, tak jenom pro sjednocení postupu, abychom to chápali stejně. Lokální extrémy funkce f() obecně o n neznámých hledáme následovně:
Mimochodem obecný předpokladem pro tento postup je, že funkce f() je derivovatelná.
Popis postupu není asi úplně matematicky přesně a některé detaily
zanedbává, ale přišlo mi dobré to zde vysvětlit trochu "lidsky".
Nuže v dalších komentáři zkusím postup aplikovat a vyřešit
konkrétně tu Tvoji funkci.
Takže jdeme na to. Nejdříve opíši zadání:
f(x,y) = y + 1/y - 2 * (ln(x))^2
Možná by předem také nebylo špatné vidět, jak ta funkce vlastně
vypadá v grafu. K tomu si na pomoc vezmu Wolfram|Alpha a pro jistotu ho
použiji i k počítání derivací, abych si to ověřil.
0. Graf funkce:
https://www.wolframalpha.com/input/?…
Mimochodem předpokládám, že počítáme na R, takže
budu ignorovat, že to má řešení i v C.
1. Spočítám gradient:
d/dx y + 1/y - 2 * (ln(x))^2 = - (4 * ln(x)) / x
https://www.wolframalpha.com/input/?…
d/dy y + 1/y - 2 * (ln(x))^2 = 1 - 1/(y^2)
https://www.wolframalpha.com/input/?…
grad y + 1/y - 2 * (ln(x))^2 = (- (4 * ln(x)) / x, 1 - 1/(y^2))
https://www.wolframalpha.com/input/?…
Tak jo, máme gradient, který teď můžeme vzít a položit rovno nule, ale
to udělám až v dalším komentáři.
Koukám, že ITnetwork komentáře nějak kazí ty odkazy na Wolfram, když
tak stačí vzít tu první část a vložit přímo na stránku a mělo by to
normálně spočítat, jelikož to píšu v té jejich syntaxi.
2. Položíme gradient rovno nule (samozřejmě vektorově):
(- (4 * ln(x)) / x, 1 - 1/(y^2)) = (0,0)
Z toho vznikne soustava rovnic:
- (4 * ln(x)) / x = 0, 1 - 1/(y^2) = 0
A její výsledek budou stacionární body:
x = 1, y = 1
x = 1, y = -1
https://www.wolframalpha.com/input/?…
Toto jsou tedy naše dva body.
Další krok je spočítat druhou derivaci funkce, neboli hesián. Viz.
další komentář.
3. Spočítáme hesián:
a. Derivace první složky gradientu podle x:
d/dx - (4 * ln(x)) / x = (4 * (ln(x) - 1)) / x^2
http://m.wolframalpha.com/input/?…
Vlastně se jedná o druhou derivaci původní funkce.
b. Derivace druhé složky gradientu podle x:
d/dx 1 - 1/(y^2) = 0
http://m.wolframalpha.com/input/?…
Ano, je potřeba derivovat všechny složky, i když už se tam samotná derivační proměnná nenachází, protože v obecném případě tam klidně může být.
c. Derivace první složky gradientu podle y:
d/dy - (4 * ln(x)) / x = 0
http://m.wolframalpha.com/input/?…
d. Derivace druhé složky gradientu podle y:
d/dy 1 - 1/(y^2) = 2 / y^3
http://m.wolframalpha.com/input/?…
Z těchto čtyř derivací vznikne tedy hesiánová matice:
hessian matrix y + 1/y - 2 * (ln(x))^2 = ((4 * (ln(x) - 1)) / x^2 0, 0 2 / y^3)
http://m.wolframalpha.com/input/?…
Omlouvám se za zápis, ale víceřádková matice se špatně zapisuje na jeden řádek.
A nyní je tedy potřeba do matice dosadit stacionární body a zjistit, zda
bude > 0, < 0 nebo = 0. Opět viz. další komentář.
4. Dosazení stacionárních bodů do hesiánu:
a. První bod (1,1):
((4 * (ln(x) - 1)) / x^2 0, 0 2 / y^3) => ((4 * (ln(1) - 1)) / 1^2 0, 0 2 / 1^3) = (-4 0, 0 2)
Poměrně jednoduché dosazení, ale jaká je tato výsledná matice? To zjistíme pokud se budeme ptát na její tzv. definitnost. Pokud bude pozitivně definitní, tak je v bode lokální minimum. Pokud bude naopak negativně definitní, tak je v bodě lokální maximum. Pokud bude indefinitní, tak je v bodě již zmiňované sedlo.
Nuže:
Is {{-4, 0}, {0, 2}} positive definite? => NO
Is {{-4, 0}, {0, 2}} negative definite? => NO
https://www.wolframalpha.com/input/?…
https://www.wolframalpha.com/input/?…
Z toho plyne, že v bodě není ani lokální minimum, ani lokální maximum, nýbrž sedlo. Dobrá, ještě zkontrolovat druhý bod stejným postupem.
b. Druhý bod (1,-1):
((4 * (ln(x) - 1)) / x^2 0, 0 2 / y^3) => ((4 * (ln(1) - 1)) / 1^2 0, 0 2 / (-1)^3) = (-4 0, 0 -2)
Definitnost výsledné matice:
Is {{-4, 0}, {0, -2}} positive definite? => NO
Is {{-4, 0}, {0, -2}} negative definite? => YES
https://www.wolframalpha.com/input/?…
https://www.wolframalpha.com/input/?…
Z toho tedy plyne, že v bodě (1, -1) se nachází lokální extrém a je to
lokální maximum. Heuréka!
Mimochodem všechny tyto poznatky už se daly zkušenějším okem docela
dobře vykoukat z toho původního grafu funkce.
Tento kód vrátí onen bod:
max y + 1/y - 2 * (ln(x))^2
https://www.wolframalpha.com/input/?…
A tento řekne, že zde není žádné minimum:
min y + 1/y - 2 * (ln(x))^2
https://www.wolframalpha.com/input/?…
To je za mě asi všechno, kdyby byly nějaké dotazy, klidně se ptejte.
P.S.: Osobně matiku moc nemusím...
Zobrazeno 8 zpráv z 8.