EMA je akronym od anglických slov Easy
Mathematical Analysis, čo sa dá preložiť napríklad ako "matematická analýza
jednoducho". Ak sa v ďalšom budem odkazovať na EMU, budem mať na mysli
tento program EMA. Pôvodným zámerom bolo vytvoriť program, ktorý by riešil
najčastejšie úlohy matematickej analýzy ako sú derivácie a integrály. Lenže
postupom času sa z pôvodného plánu zrodila myšlienka naprogramovať software,
ktorý by komplexnejšie ponímal úlohy rôznych oblastí matematiky. Ide o už
spomínanú matematickú analýzu, algebru a teóriu čísel; teda oblastí, ktorým sa
pri štúdiu matematiky venuje azda najväčšia pozornosť. Nosnou myšlienkou je
fakt, že len malé percento študentov si pri štúdiu pomáha matematických softvérom.
Dôvody sú rôzne a skúsim ich pomenovať. Nie každý matematik musí mať vzťah k
počítačom, aj keď tieto vedy sú si veľmi blízke. Matematických programov ,
ktoré by si bežný človek mohol zaobstarať, nie je veľa. Samozrejme existujú
profesionálne programy, ktorých možnosti sú niekoľkonásobne vyššie ako možnosti
Emy, ale ich cena sa pohybuje rádovo v desaťtisícoch. Musím podotknúť, že
úlohy, ktoré EMA rieši boli vybraté vzhľadom na ich riešiteľnosť pomocou
vlastných algoritmov a metód numerickej matematiky. Mojou snahou je ponúknuť
program voľne šíriteľný a teda dostupný každému záujemcovi. EMA je založená
skôr na výkon ako na vzhľad. Ak bude pomáhať pri výpočtoch v matematike alebo
aj v iných vedách, splní svoj cieľ.
Po spustení programu sa zobrazí
pracovná plocha, ktorá je na obrázku č. 1:

Obrázok č. 1
Pracovná plocha sa skladá z troch základných komponentov:
Ovládanie
celého programu je intuitívne a odvodené od ovládania z prostredia MS Windows.

Obrázok č. 2
Menu sa skladá zo 6 položiek a je zobrazené na obrázku č. 2:
Položka funkcie slúži na prácu
s funkciou. Program si pamätá naposledy použitú funkciu a pri zadávaní ju
automaticky ponúka. Pri zadávaní desatinných čísel používame ako oddeľovač
bodku. Vieme pracovať s nasledujúcimi funkciami, ktoré sú uvedené v tabuľke:
|
Funkcia |
Použitie |
Povolená vstupná hodnota |
|
Sínus |
sin(x) |
uhol v radiánoch |
|
Kosínus |
cos(x) |
uhol v radiánoch |
|
Tangens |
tan(x) |
uhol v radiánoch okrem pí/2 s periódou pí |
|
Arkussínus |
Asin(x) |
reálne číslo z intervalu <-1;1> |
|
Arkuscosínus |
Acos(x) |
reálne číslo z intervalu<-1;1> |
|
Arkustangens |
Atan(x) |
reálne číslo |
|
Absolútna hodnota |
Abs(x) |
reálne číslo |
|
2 x |
2^(x) |
reálne číslo |
|
e x |
exp(x) |
reálne číslo |
|
pi x |
pi^(x) |
reálne číslo |
|
n x |
n^(x) |
reálne číslo |
|
prirodzený logaritmus |
ln(x) |
kladné reálne číslo |
|
dekadický logaritmus |
lg(x) |
kladné reálne číslo |
|
druhá mocnina |
x^2 |
reálne číslo |
|
n - tá mocnina |
x^n |
reálne číslo |
|
druhá odmocnina |
sqrt(x) |
kladné reálne číslo |
Za parameter n sa volí celé číslo! Ak sa za vstupnú
hodnotu zvolí iná ako povolená, program vypíše funkčnú hodnotu ako chybové
hlásenie v tvare "-1.#IND00". Ak sa do vstupu zvolí nepovolená
funkcia, program vypíše funkčnú hodnotu rovnú nule.
Položka Funkcie ponúka 5 výpočtov pre prácu s funkciami. Možno ich
vidieť na obrázku č. 2.
Slúži na výpočet funkčnej
hodnoty v zadanom bode z definičného oboru funkcie. Ak zadáme bod mimo
definičného oboru, výstupom bude chybové hlásenie v tvare
"-1.#IND00". Zadanie funkcie a bodu je zobrazené na obrázku č. 3.

Obrázok č. 3
Zadali sme kvadratickú funkciu x^2+3x+5 a zaujíma nás funkčná hodnota v bode
0,5.Po stlačení tlačidla OK prebehne výpočet a jeho výsledok (6,75) sa zobrazí
na pracovnú plochu (obrázok č. 4).

Obrázok č. 4
Hľadanie nulového bodu je
vlastne riešenie rovnice, ktorá vznikne, keď funkciu položíme rovnú nule. Alebo
je to taký bod, v ktorom je funkčná hodnota rovná nule. Okrem funkcie musíme
zadať aj tzv. nultú iteráciu. Je to vstupný bod rôzny od nuly, ktorý sa dosádza
do rovnice (obrázok č. 5). Presnosť, z akou algoritmus počíta, si môžeme
nastaviť v ponuke nastavenie.

Obrázok č. 5
Zadali sme kvadratickú funkciu x^2+2x+1 a nultú iteráciu rovnú jednej (prednastavená).
Po stlačení tlačidla OK prebehne výpočet a jeho výsledok sa zobrazí na pracovnú
plochu (obrázok č. 6).

Obrázok č. 6
Je treba povedať, že nie všetky funkcie majú nulový bod v obore reálnych čísel.
V takomto prípade nás na to program upozorní, alebo ako nulový bod vypíše
hlásenie "-1.#IND00"
Ponuka derivácia slúži na
výpočet derivácie funkcie. Vstupným parametrom je len zadaná funkcia (obrázok
č. 7).

Obrázok č. 7
Po stlačení tlačidla OK sa nám zobrazí výsledok. Derivácia zadanej funkcie sin3(x)
+ 2cos(x2) je zobrazená na obrázku č. 8.

Obrázok č. 8
Je v trochu nezrozumiteľnom tvare, ale to je spôsobené výpočtovým algoritmom,
ktorý má presne stanovený formát. Môže nám však pomôcť pri "ručnom"
výpočte derivácie funkcie, pretože tvar výsledku nám zobrazuje aj akýsi
"postup". My sme skôr zvyknutý na tvar výsledku 3sin2(x)cos(x)
- 4x sin(x2), ale pri trochu pozornosti je jasné, že výsledky sa
rovnajú.
Výsledkom určitého integrálu na
danom intervale je číslo. Toto číslo môžeme chápať aj ako obsah elementárnej
oblasti E={ [x,y]; a <= x <= b ,0 < = y <= f(x) }, kde a,b sú
krajné body intervalu. Vstupom algoritmu (obrázok č. 9) je funkcia, ktorej
určitý integrál počítame a interval < a ; b > s podmienkou a < b } (ak
a = b potom výsledkom je nula).

Obrázok č. 9
Výsledok výpočtu vidíme na obrázku č. 10. Presnosť výpočtu je priamo závislá od
delenia intervalu, ktoré si môžeme nastaviť v ponuke nastavenie.

Obrázok č. 10
Dĺžka krivky je priama
aplikácia určitého integrálu. Opäť zadávame funkciu a interval (obrázok č. 9)
na ktorom dĺžku krivky meriame. Zvoľme tie isté hodnoty ako na obrázku č. 9.
Výsledok je znázornený na obrázku č. 11.

Obrázok č. 11
Položka polynómy nám ponúka
hľadanie racionálnych koreňov (aj násobných) polynómov patriacich Z[x]. Ako
prvé musíme zadať stupeň polynómu, aby sme mohli začať zadávať samotné
koeficienty pri príslušnej mocnine x. Maximálny stupeň polynómu, s ktorým
môžeme pracovať je 99. Po zadaní koeficientu klikneme na tlačidlo ďalší a
mocnina x sa zníži o jedna. Tvar polynómu sa nám priebežne zobrazuje, čo
zvyšuje náš prehľad. Budeme pracovať s polynómom 6x 5 + 5x4
+ 6x3 + 4x2 - 17x + 6. Priebežný medzikrok zadávania
polynómu je na obrázku č. 12.

Obrázok č. 12
Poznámka: Môže nastať prípad, že niektorá mocnina x sa v polynóme nenachádza.
Vtedy samozrejme ako koeficient volíme nulu.
Ak sme zápis polynómu ukončili, resp. zadali koeficient pri x^0, stlačíme
tlačidlo OK a prebehne výpočet, ktorého výsledok vidíme na obrázku č. 13.

Obrázok č. 13
Hoci hovoríme o racionálnych koreňoch na výstupe vidno riešenie v tvare
reálnych čísel. Je to spôsobené tým, že algoritmus nedokáže vypísať racionálne
čísla v tvare zlomku. Ale je jasno vidieť, že korene sú 2/3 a -3/2. Ostatné
korene sú z oboru reálnych resp. komplexných čísel. Jeden reálny koreň môžeme
zistiť tak, že polynóm vložíme ako funkciu a hľadáme nulový bod.
Táto položka umožňuje riešiť
systém lineárnych rovníc. Presnejšie povedané sústavu n lineárnych rovníc o n
neznámych, kde za n berieme prirodzené číslo od 1 do 10. Aby sme sa ľahšie
orientovali medzi neznámymi a koeficientmi, zavedieme označenie:
x[1], x[2], x[3] ... x[10] sú neznáme, a[i;j] je koeficient v i-tej rovnici pri
j-tej neznámej a b[1], b[2] ... b[10] sú pravé strany rovníc (1),(2), ...,
(10).Potom systém lineárnych rovníc bude vyzerať nasledovne (pre n=10):
a[1,1]*x[1] + a[1,2]*x[2] + a[1,3]*x[3] + ... +a[1,10] = b[1]
a[2,1]*x[1] + a[2,2]*x[2] + a[2,3]*x[3] + ... +a[2,10] = b[2]
a[3,1]*x[1] + a[3,2]*x[2] + a[3,3]*x[3] + ... +a[3,10] = b[3]
.
.
.
a[10,1]*x[1] + a[10,2]*x[2] + a[10,3]*x[3] + ... +a[10,10] = b[10]
Zadávanie rovníc prebieha nasledovne. Najprv musíme vyplniť položku o počte
rovníc a následne sa riadiť algoritmom. Pre zadávanie sa používa označenie, aké
je uvedené vyššie. Tvar každej jednej rovnice sa nám priebežne zobrazuje. Ako
príklad si uvedieme tento systém:
x[1] + x[2] + 2*x[3] - x[4] + x[5] = 3
2*x[1] + 5*x[2] -3*x[3] -2*x[4] - x[5] = -5
3*x[1] + 4*x[2] -5*x[3] - x[4] + 2*x[5] = 18
3*x[1] + 5*x[2] + 2*x[3] -2*x[4] + x[5] = 3
3*x[1] + 6*x[2] + 2*x[3] +5*x[4] -2*x[5] = 1
Na obrázku č. 14 je medzikrok zadávania 3. rovnice a koeficientu pri x[3].

Obrázok č. 14
Opäť treba upozorniť na to, že ak niektorá neznáma v rovnici nevystupuje, jej
koeficient volíme rovný nule. Po úspešnom zadaní všetkých rovníc stlačíme OK a
prebehne výpočet. Vypíše sa nám sústava nami zadaných rovníc a riešenie. V
našom prípade x[1] = 3; x[2] = -1; x[3] = -1; x[4] = 2; x[5] = 5.Výstup je
znázornený na obrázku č. 15. Samozrejme, že môže nastať situácia, že sústava
nemá riešenie alebo má nekonečne veľa riešení. V tom prípade nám to algoritmus
oznámi.

Obrázok č. 15
Položka Zisťuj ponúka 5 výpočtov
pre prácu s číslami. Možno ich vidieť na obrázku č. 16.

Obrázok č. 16
Algoritmus na výpočet
determinantu pracuje s determinantom stupňa maximálne desiateho. Treba si
uvedomiť, že determinant n-tého stupňa obsahuje n2 čísel a každý si
spočíta, že zadať determinant stupňa desiateho alebo väčší je riadna fuška.
Prvok v i-tom riadku a j-tom stĺpci označíme d[i ; j]. Potom celý determinant
stupňa 10 bude vyzerať nasledovne:
d[1;1] d[1;2] d[1;3] ... d[1;10]
d[2;1] d[2;2] d[2;3] ... d[2;10]
.
.
,
d[10;1] d[10;2] d[10;3] ... d[10;10]
Pri zadávaní determinantu najskôr uvedieme jeho stupeň a potom jednotlivé
riadky, ktoré sa nám priebežne zobrazujú. Ako príklad si uvedieme determinant
4. stupňa:
2; -5; 1; 2;
-3; 7; -1; 4;
5; -9; 2; 7;
4; -6; 1; 2;
Na obrázku č. 17 vidíme medzikrok pri zadávaní 3.riadku.

Obrázok č. 17
Jeho jednotlivé položky sú oddelené bodkočiarkou, aby sme nestratili prehľad
pri desatinnej bodke. Výsledkom (hodnotou) determinantu je číslo. Ak sa hodnota
determinantu rovná nule, vieme, že niektoré riadky v determinante sú lineárne
závislé. Preto táto procedúra môže slúžiť aj na zisťovanie lineárnej
závislosti. Výsledok nášho príkladu je na obrázku č. 18.

Obrázok č. 18
Prvočíslo je také prirodzené
číslo, ktoré je deliteľné len jednotkou a sebou samým. Už Euklides dokázal, že
prvočísel je nekonečne veľa. Cieľom tejto položky nie je hľadať stále väčšie a
väčšie prvočísla, ale slúži nám na overenie, či zadané číslo (určenej
maximálnej veľkosti) je alebo nie je prvočíslo. Pre vstup volíme prirodzené
čísla menšie ako 19x108. Myslím, že pre praktické zisťovanie je táto
hranica postačujúca. Ako príklad si uvedieme číslo 1236481 (Obrázok č. 19).

Obrázok č. 19
Výstupom algoritmu je len hlásenie o tom, či zadané číslo je alebo nie je
prvočíslo. V našom prípade číslo 1236481 je prvočíslo (Obrázok č. 20).

Obrázok č. 20
Každé zložené číslo môžeme
rozložiť na konečný súčin prvočísel. Ak sa v rozklade zloženého čísla niektoré
prvočíslo opakuje napríklad n-krát, píšeme ho ako n-tú mocninu tohto prvočísla.
Tým je zaručené, že každé prvočíslo vyskytujúce sa v rozklade sa tu nachádza
práve raz umocnené na príslušnú mocninu. Môžeme vyjadriť všeobecný tvar
rozkladu zloženého čísla z.
z=p1ß1.p2ß2...pkßk,
kde pi sú prvočísla a ßi sú ich príslušné mocniny pre
i=1,2,...,k
Ako príklad si uvedieme číslo 1024100. Vstup je rovnaký ako pre zisťovanie
prvočísla. Ak je zadané číslo prvočíslo, tak výpis nás o tom informuje. Ak je
zložené, tak sa vykoná jeho rozklad (Obrázok č. 21).

Obrázok č. 21
Spoločný deliteľ n-čísel je
také číslo, ktoré delí každé z týchto n-čísel. Ak existuje viac takýchto
spoločných deliteľov, tak najväčšieho z nich budeme označovať najväčší spoločný
deliteľ n-čísel, ďalej NSD. Algoritmus nám umožňuje počítať NSD až zo 100
čísel. Ako príklad si uvedieme NSD troch čísel 144, 36, 24. Pri vstupe zvolíme
počet čísel (3) a postupne zadávame čísla (Obrázok č. 22). Je treba povedať, že
na poradí zadávaných čísel nezáleží. Zostupné usporiadanie v našom príklade
výsledok neovplyvní.

Obrázok č. 22
Výsledok NSD(144, 36, 24) je znázornený na obrázku č. 23.

Obrázok č. 23
Spoločný násobok n-čísel je
také číslo, ktoré každé jedno z týchto n-čísel delí. Takýchto spoločných
násobkov existuje nekonečne veľa a najmenší takýto násobok budeme nazývať najmenší
spoločný násobok n-čísel, ďalej NSN. Algoritmus nám umožňuje počítať NSN až zo
100 čísel. Ako príklad si vypočítame NSN zo 4 čísel 144, 96, 60, 9. Na poradí
zadávaných čísel nezáleží. Pri vstupe zvolíme počet čísel (4) a postupne zadávame
čísla (Obrázok č. 24).

Obrázok č. 24
Výsledok NSN(144, 96, 60, 9) je znázornený na obrázku č. 25.

Obrázok č. 25
Táto položka slúži na
nastavenie výpočtových parametrov presnosť a delenie(Obrázok č.
26). Presnosť sa používa pri hľadaní nulového bodu funkcie. Platí, že čím
menšia hodnota parametra presnosť, tým presnejší výsledok (ale aj dlhší
výpočet). Delenie znamená delenie zadaného intervalu a používa pri výpočte
určitého intergrálu a dĺžky krivky. Tu platí opak. Čím väčšia hodnota parametra
delenie, tým presnejší výsledok (ale aj dlhší výpočet). Nastavené hodnoty sa
ukladajú do externého súboru a preto sa nemenia pri opätovnom spustení
programu. Po kliknutí na tlačidlo "Štandartné" sa prestavia hodnoty
na 0.001 resp. 10 000.

Obrázok č. 26
EMA je program, ktorý na svoje
spustenie potrebuje ľubovoľný počítač pracujúci na operačnom systéme Windows
98, ME, 2000, XP. EMA bola naprogramovaná v prostredí Microsoft Visual C++ 6.0
Introductory Edition a je distribuovaná ako program typu freeware. Akékoľvek
komerčné využitie treba hlásiť autorovi.
Kontakt: info@mitsoft.sk
www: www.mitsoft.sk
Tel.: 0903 558 027
Ďakujeme za používanie programu EMA.
Mgr. Miroslav Rosival