KURZ: Goniometrické a pokročilé matematické funkce

  • Vytisknout

Pomocí základních matematických operací sice můžeme řešit většinu jednodušších úloh, někdy nám však k řešení již nepostačují. Jedním z příkladů může být konstrukce radaru. Ten se postupně otáčí a přitom snímá své okolí. Při odhalení překážky zjistí její vzdálenost a překážku pak vykreslí na displeji. Pro vykreslení tohoto bodu však potřebujeme převést zjištěnou vzdálenost a úhel natočení na souřadnice X a Y použité na displeji. Potřebujeme goniometrické funkce.

Mezi základní goniometrické funkce patří sinus (sin) a kosinus (cos). Z jejich poměru (sin(x)/cos(x)) pak můžeme vypočítat funkci tangens (tan či tg). Pokud Vám tyto funkce již příliš neříkají, můžete si jejich definice oživit na wikipedii.

Dalšími funkcemi jsou funkce cyklometrické, arkus sinus (asin), arkus kosinus (acos) a arkus tangens (atan). Cyklometrické funkce jsou funkce inverzní k jejich goniometrickým obrazům. Tyto funkce se využívají při složitějším systému řízení, takže běžně na ně příliš nenarazíte.

Použití rozšiřujících matematických operací v programovacím prostředí

NXT-G

Instalace rozšiřujících modulů

V základní nainstalované verzi prostředí NXT-G příliš podpory pro rozšiřující matematické funkce nenajdeme. V rámci modulu Math, který jsme si představili v předchozí kapitole, nalezneme pouze funkci absolutní hodnoty (Absolute Value) a druhé odmocniny (Square Root).

Pro goniometrické funkce je potřeba podporu nejprve doinstalovat. Návod na instalaci jednotek naleznete zde. Podporu pro goniometrické  funkce sinus a kosinus a cyklometrickou funkci arcus tangens připravila firma HiTechnic. Rozšiřující blok HiTechnic Sin/Cos Math a HiTechnic ATan2 Math si můžete stáhnout z oficiálního webu výrobce či z těchto stránek (Sin/Cos, ATan2).

Rozcestník


Umístění bloku HTSinCos

Goniometrické operace můžeme využít díky bloku Data HTSinCos. Ten je standardně umístěn v paletě Paleta Complete Complete > DataOperations Data, záleží však na instalaci.

Blok HTSinCos

Ten obsahuje jeden vstup # [Angle] určující úhel udávaný v radiánech či stupních a dva výstupy # [Sin(Angle)], vracející sinus zadaného úhlu a # [Cos(Angle)], vracející kosinus. Využít můžeme dle potřeby buďto jeden či oba výstupy.

 

Parametry bloku

NXT-G Panel goniometrických funkcí

Podle zvoleného typu jednotek (Units) bude blok vypočítávat sin a cos úhlu udaného buďto ve stupních (Degrees), nebo úhlu zadaného v radiánech (Radians).

Potřebujeme-li použít konkrétní předem danou hodnotu úhlu, nemusíme využívat konstanty, ale danou hodnotu můžeme doplnit do kolonky Angle (viz použití bloku Math).


Umístění bloku HTATan2

Pomocí bloku Data HTATan2 můžeme spočítat úhel odchylky polopřímky vycházející z počátku souřadnicového systému a procházející bodem X, Y s osou x. Pokud je úhel ve směru hodinových ručiček (nachází se pod osou x), bude kladný, pokud je proti směru (nachází se pod osou x), bude záporný. Podle nastavení jednotek (Units) bude pro stupně (Degrees) v rozsahu (-180; 180>, pro radiány (Radians) v rozsahu (-π; π>.

Blok je standardně umístěn v paletě Paleta Complete Complete > DataOperations Data, záleží však na instalaci.

Blok HTATan2

Ten obsahuje dva vstupy # X a # Y určující souřadnice bodu (viz výše) a jeden výstup # vracející úhel dle pravidel udávaný dle volby v radiánech či stupních.

Parametry bloku

NXT-G Panel cyklometrických funkcí

Jednotky výstupu bloku (Units) lze zvolit buďto ve stupních (Degrees), nebo radiánech (Radians).

Vstupní hodnotami jsou data # X a # Y udávající souřadnice bodu jimiž prochází pomyslná polopřímka vycházející z počátku souřadnicového systému. Hodnoty lze buďto získat z externích připojených zdrojů či je můžeme přímo zadat jako parametr bloku.

RobotC

Příkazy a metody

Podpora pokročilejších matematických funkcí je v jazyku RobotC o poznání komplexnější. V základní instalaci máme k dispozici celou řadu goniometrických a cyklometrických funkcí, nechybí ani absolutní hodnota, mocniny a druhá odmocnina.

Rozcestník


Goniometrické funkce

Goniometrické funkce lze v prostředí RobotC vypočítávat pro hodnoty úhlu zadaných ve stupních či v radiánech. Podle zvolené soustavy se liší i názvy jednotlivých příkazů.

Goniometrické funkce v radiánech

Funkce využívající základní syntax pracují s radiány. Jejich názvy jsou sin(úhel) a cos(úhel). Funkci tangens tg() mám programovací jazyk sice nenabízí, ale můžeme ji vypočíst jako výsledek podílu funkcí sin(úhel)/cos(úhel). Podívejme se na ukázku jejich použití:

RobotC - goniometrické funkce (v radiánech)

Goniometrické funkce ve stupních 

Potřebujeme-li vypočítat hodnoty pro úhly zadané ve stupních, použijeme funkce s alternativními názvy doplněné o Degrees, sinDegrees() a cosDegrees(). Zadání je pak následující:

RobotC - goniometrické funkce (ve stupních)

Převod mezi stupni a radiány 

Pomocí funkcí radiansToDegrees(hodnota)degreesToRadians(hodnota) lze stupně a radiány převádět navzájem mezi sebou.

RobotC - převod mezi stupni a radiány

Goniometrické funkce ve výrazech 

Goniometrické funkce (i ostatně jiné funkce) lze využít i přímo ve výpočtech matematických výrazů. V následujícím segmentu kódu vidíte využití funkcí sinus a kosinus pro výpočet souřadnic překážky zachycené radarem na displeji.

RobotC - goniometrické funkce ve výrazech


Cyklometrické funkce 

I pro cyklometrické funkce nalezneme širokou podporu. Kromě funkce atan(hodnota) - arkus tanges, jíž lze rozšířit i prostředí NXT-G se v jazyce RobotC nachází arkus sinus asin(hodnota) a arkus kosinus acos(hodnota)

RobotC - cyklometrické funkce

Speciální funkcí je funkce atan2(X,Y). Ta umožňuje spočítat úhel odchylky polopřímky vycházející z počátku souřadnicového systému a procházející bodem X, Y s osou x. Výsledný úhel je v radiánech a odpovídá funkci atan(Y/X).


Mocnina

Pro výpočet mocniny používáme funkci pow(base, exponent). Ta má dva parametry, prvním je základ (base) a druhým mocnina (exponent). Parametry odpovídají vztahu základmocnina (baseexponent). Potřebujeme-li tedy vypočítat 24, bude základem číslo 2 a mocninou číslo 4.

Ukázka použití druhé mocniny:

RobotC - druhá mocnina

Ukázka použití n-té (4) mocniny:

RobotC - n-tá mocnina


Exponenciala se základem e

Pro výpočet hodnot exponencialy se základem e slouží funkce exp(mocnina). Ta odpovídá vyjádření emocnina.

RobotC - Exponent


Odmocnina

Pro druhou odmocninu lze použít funkci sqrt(hodnota), viz ukázka.

RobotC - odmocnina

Zdálo by se, že tímto podpora odmocnin v prostředí končí a že např. 4. odmocninu již získat neumíme. Je nutno si ale uvědomit vztah mezi odmocninou a mocninou, kdy lze odmocnění realizovat jako umocnění převrácenou hodnotou (viz ukázka).

RobotC - N-tá odmocnina


Logaritmy

V prostředí RobotC můžeme pracovat s přirozenými i dekadickými logaritmy. Pro výpočet přirozeného logaritmu z čísla nám slouží funkce log(hodnota), pro dekadický logaritmus pak log10(hodnota).

RobotC - logaritmy


Absolutní hodnota

RobotC - absolutní hodnota 


Znaménko

Zajímavou funkcí je funkce sgn(hodnota). Ta nám vrací informaci, zda do ní vložené číslo je záporné (výstupní hodnota -1), nulové (výstupní hodnota 0) či kladné (výstupní hodnota 1). Využití této funkce může být např. u určení směru pohybu modelu, kdy nám tato funkce říká, zda je to směr vpřed, vzad či zda má model stát.

RobotC - Hodnota znaménka 


Import z knihovny funkcí

Pokud si nepamatujeme názvy klíčových slov vykonávajících matematické funkce, můžeme je nalézt v knihovně funkcí (Function Library) sekci Math.

Po přetažení položek v sekcích Commands do programového okna dojde ke vložení námi zvolené funkce.

1 1 1 1 1 1 1 1 1 1 Hodnocení 5.00 (1 hodnocení)