Parciální derivace

Řešení

Dalším tématem (za první lze považovat faktoriál velkých čísel), které našlo inspiraci na stránkách www.hpmuseum.org, je parciální derivace funkce. Na stránce Partial Derivative for Any Variable for the HP-32SII je výchozí materiál pro tuto kapitolu. Postrádalo by smyslu pouhé přenesení programu z www.hpmuseum.org na toto místo. Důvodem pro vznik této stránky je inovace výchozího řešení. Nový název by mohl znít Partial Derivative of ANY Function for Any Variable. Je to tak: dalším stupněm volnosti je explicitní zadání derivované funkce.

Ale nepředbíhejme. Kouzlo vzorového řešení spočívá v tom, že nezávislá proměnná (argument vyšetřované funkce - zde implicitně definované návěštím LBL F) je určena její adresou vloženou do registru/proměnné i. To je samozřejmě hozená rukavice, která musí být zdvižena! Což takhle kromě proměnné určit nepřímo i funkci? Než se zasněně zahledíme na program, který je odpovědí na takovou výzvu, zopakujme některá důležitá fakta:

Obsazení použitých paměťových registrů je tedy následující:
Symbol Význam
Mnemo Komentář
i &var adresa nezávislé proměnné *)
n &var úschova adresy nezávislé proměnné
Σx dxi krok nezávislé proměnné (v původním textu "deltaxi") *)
Σy &fnc adresa zkoumané funkce *)
Σx² res1 úschova mezivýsledku
*) Vstup do tohoto programu. Ostatní hodnoty (označené slovem "úschova") jsou vnitřními proměnnými.

Konečně výpis programu. Samozřejmě pro HP-32sII.
Pozn.: Pozor na změnu významu sloupců. V posledním sloupci nejsou hodnoty T-registru RPN stacku, ale proměnné i!

ADDRCODEXYZi
D01LBL D



D0228&n  &var
D03x<> i&var  &n
D04STO(i)n = &var


D05STO i&var  &var
D06Σxdxi


D07STO-(i)var -= dxi


D08Σy&fnc


D09STO i&fnc  &fnc
D10XEQ(i)res1


D1131&Σx²res1

D12STO i&Σx²res1 &Σx²
D13R↓res1


D14STO(i)Σx² = res1


D15n&var


D16STO i&var  &var
D17Σxdxi


D18STO+(i)var += dxi


D19STO+(i)var += dxi


D20Σy&fnc


D21STO i&fnc  &fnc
D22XEQ(i)res2


D23n&varres2

D24STO i&varres2 &var
D25R↓res2


D26Σx²res1res2

D27-res2 - res1


D28Σxdxires

D29ENTERdxidxires
D30STO-(i)var -= dxidxires
D31+2 dxires

D32÷res / (2 dxi)


D33RTNvýsledek


LN=49.5, CK=5B1A

Použití

Laskavý čtenář promine ledacos, ale ukončení dnešní pohádky předchozími řádky asi stěží. Naštěstí takovou měrou cynismu není obdařen ani autor tohoto pojednání. Ale bylo to o fous, že?!

Pojďme se podívat, na co by se ta bejkárna dala použít. Bylo by hloupé dělat machry a snažit se vymyslet něco vlastního (zvláště, je-li to daleko za intelektuálním obzorem autorovým). Držme se obsahem vzoru a pokusme se také vyšetřit extrém funkce y = x² ln(x) pro rozsah vstupních hodnot nezávislé proměnné 0.50.7. Nepěkný cockpit-drill v podobě zadávání hodnot nahradí nově vzniklá sekvence instrukcí začínající návěštím LBL E. Je to vstupní bod přípravy hodnot pro spuštění výpočtu extrému.

ADDRCODEXYZTi
E01LBL E&fnc&varhighlow
E02STO i&fnc&varhighlow&fnc
E03CLx0&varhighlow
E0430&Σy&varhighlow
E05x<> i&fnc&varhighlow&Σy
E06STO(i)Σy = &fnc



E07DSE i&fnc&varhighlow&Σx
E08CLx0&varhighlow
E09+&varhighlowlow
E10STO(i)Σx = &var



E11R↓highlowlow&var
E12ENTERhighhighlowlow
E13R↓highlowlowhigh
E14-low - highlowhighhigh
E15-5E4-50,000low - highlowhigh
E16÷dxilowhighhigh
E17x<>(i)Σx = dxi



E18STO i&varlowhighhigh&var
E19R↓lowhighhigh&var&var
E20STO(i)var = low



E21x<>yhighlow  &var
E22FN= D




E23SOLVE(i)výsledek



E24RTN




LN=44.0, CK=FE82

Použití programu:
Stisk klávesČinnostDisplay
. 5 ENTERdolní mez 0.5000
. 7 ENTERhorní mez 0.7000
2 4 ENTERadresa proměnné X 24.0000
6 adresa funkce F 6_
XEQ E spuštění programu RUNNING → SOLVING
výsledek 0.6065
SHOW celá mantisa výsledku606530656888

Výkonné části jsou pod střechou, zbývá zkoumaná funkce. Pro názornost si ponechala původní návěští LBL F.

ADDRCODEXY
F01LBL F

F02RCL Xx
F03
F04LASTxx
F05LNln(x)
F06×x² ln(x)
F07RTNvýsledek
LN=10.5, CK=024A

Pozn.: Pokud by se výpočet prováděl opakovaně, třeba s měnícími se hodnotami mezí, stálo by za úvahu předřadit před spuštění XEQ E ještě krátký úsek kódu pro náhradu zadávání neměnících se hodnot.


Vícenásobné použití

Platí-li úvodní předpoklad, že vstupy nově vzniklého programu označeného návěštími LBL D a LBL E jsou tvořeny adresami zkoumané funkce a její nezávislé proměnné, důsledek je vcelku příjemný: zjišťování mezních hodnot různých funkcí lze spouštět bez nutnosti modifikace programu. Předveďme si tuto fascinující vlastnost na dvou funkcích. (1) Napíšeme novou y = sin(a) označenou návěštím LBL A a budeme hledat maximum v rozsahu 0π. Když pánbůh dá, vyjde π / 2. (2) Jako pokusný králík číslo 2 poslouží funkce z předchozí ukázky. Je jenom trochu upravená za účelem dosažení úspor: kratší o jeden programový řádek a pracující pouze s X-registrem RPN stacku.

ADDRCODEX
A01LBL A
A02RCL Aa
A03SINsin(a)
A04RTNvýsledek
LN=6.0, CK=E29B
F01LBL F
F02RCL Xx
F03LNln(x)
F04RCL× Xx ln(x)
F05RCL× Xx² ln(x)
F06RTNvýsledek
LN=9.0, CK=C64F

Použití programu:
Stisk klávesČinnostDisplay
1) y = sin(a)  
0 dolní mez 0_
π horní mez 3.1416
1 ENTER adresa proměnné A 1.0000
1 adresa funkce A 1_
XEQ E spuštění programu RUNNING → SOLVING
výsledek 1.5708
π 2 ÷π / 2 1.5708
- chyba výsledku -1.3900E-9

2) y = x² ln(x)
 
. 5 ENTER dolní mez 0.5000
. 7 ENTER horní mez 0.7000
2 4 ENTER adresa proměnné X 24.0000
6 adresa funkce F 6_
XEQ E spuštění programu RUNNING → SOLVING
výsledek 0.6065
SHOW celá mantisa výsledku606530676085


Pozn.: Na kontrolních zobrazeních celé mantisy je u funkcí F vidět rozdíl začínající na osmém místě. Je to způsobeno danou přesností kalkulátoru při výpočtech dvou možných postupů:

y = x² ln(x)
respektive
y = x (x ln(x))

Pokud se čirou náhodou našel ten, kdo v četbě setrval až do těchto míst, dá se předpokládat, že týž bude míst dostatek sil a vzmužilosti, aby se pustil do pokračování. Ostatním je veleno "Rota na můj povel, rota pozor! Po četách na ubikace rozchod!"