C-5 MAPLE (SYMBOLICKA MATEMATIKA) Obsah 1. Uvod .......................................................... 1 2. Zakladni rysy ................................................. 1 3. Maple pod UNICOSem ............................................ 3 3.1 Vyvolani mapleovske seance .................................... 3 3.2 Mapleovske inicializacni soubory .............................. 4 3.3 Ukonceni mapleovske seance .................................... 4 3.4 Znaky pro preruseni ........................................... 5 3.5 Prikazy UNICOSu z mapleovske seance ........................... 5 3.6 Presmerovani vstupu a vystupu ................................. 5 3.7 Priklad zadani davkove ulohy .................................. 5 4. Naznak moznosti Maple a pristup k informacim .................. 6 5. Literatura .................................................... 8 Tato prirucka strucne seznamuje se systemem Maple a naznacuje zpusob uzivani jeho verze 4.3 na pocitaci Cray Y-MP EL ve FzU AV CR. 1. Uvod Maple je system urceny pro matematicke vypocty - symbolicke, nu- mericke a graficke. Zakladem systemu jsou prostredky pro praci v oblasti tzv. symbo- lickych vypoctu, ktera byva oznacovana take terminy "algebraicke mani- pulace" nebo "pocitacova algebra". (Z jinych obdobnych systemu jmenuj- me alespon: CAMAL, REDUCE nebo MATHEMATICA.) Vyhodou numerickych vypoctu v Maple je moznost presneho vyjadreni racionalnich cisel ve tvaru zlomku nebo nastavitelna presnost u cisel s pohyblivou desetinnou carkou. System obsahuje take prostredky pro praci s grafikou ve dvou i ve trech rozmerech. Jmeno systemu muze byt odvozeno z kombinace pismen anglicke fraze "mathematical manipulation language", ale ve skutecnosti bylo vybrano jako slovo jednoduse oznacujici identitu Kanady. Maple je vysledkem zhruba desetileteho vyzkumneho projektu, ktery dale probiha na kanadske University of Waterloo a svycarskem ETH Zu- rich. Komercne se system poprve objevil v roce 1985 (jako verze 3.3) a je dnes jednim ze svetove dosti rozsirenych programovych prostredku, vyuzivanych jak v badatelske a inzenyrske, tak i pedagogicke sfere. V soucasnosti existuji verze pro siroke spektrum pocitacu (od osobnich az po superpocitace) s ruznymi operacnimi systemy (Unix, DOS, SunOS, VMS, AIX a dalsi). 2. Zakladni rysy Zakladnim rysem Maple, jakozto systemu pro symbolicke manipulace, je schopnost ponechat elementy vypoctu nevyhodnocene, avsak provadet s nimi zjednoduseni a dalsi transformace. Uvedme jednoduchy priklad: > f := x^3 - y^3; f := x - y > factor(f); (x - y) (x + x y + y ) Povsimneme si, ze symboly ("identifikatory") jsou uzity pro dva odlis- ne ucely. Symbol f je uzit jako promenna, je mu prirazena hodnota. Symboly x a y jsou uzity jako nezname, nebot dosud zadnou hodnotu ne- maji. V Maple jsou prikazy obvykle vyhodnocovany tak daleko, jak jen je v aktualnim prostredi mozne. Napr. prikaz a := 1; priradi hodnotu 1 jmenu a. Jestlize nasleduje prikaz x := a + b; potom je jmenu x prirazena hodnota 1 + b. Po vykonani prikazu b := -1; f := sin(x); se x vyhodnoti jako 0 a 0 se priradi jmenu f. (Vyraz sin(0) se automa- ticky zjednodusil na 0.) Jestlize nakonec provedeme prirazeni b := 0; g := sin(x); x se vyhodnoti jako 1 a jmenu g je prirazena hodnota sin(1). V danem symbolickem kontextu se sin(1) jiz dale nevyhodnoti nebo nezjednodusi, ale existuje prostredek, jak vyraz vyhodnotit do tvaru cisla s pohyb- livou desetinnou carkou, pricemz pocet cislic desetinneho rozvoje je rizen uzivatelem; zde napr. evalf(g). Jakmile je uzivatelem zadan cely prikaz, dojde k jeho vyhodnoceni a vysledky se objevi na vystupnim za- rizeni, kterym je obvykle v interaktivnim rezimu uzivateluv terminal. Vyrazy jsou obvykle zobrazeny ve dvoudimenzionalnim, viceradkovem tva- ru, aby byly na terminalu dobre citelne. Existuji vsak zpusoby, ktery- mi uzivatel muze tento tvar zobrazeni zmenit. Jednim z nich je nasta- vit prikazem interface(prettyprint=false); hodnotu promenne rozhrani prettyprint na false; vyrazy jsou potom zobrazovany v jednodimenzionalnim, jednoradkovem tvaru, ktery lze pou- zit napr. jako vstup pro dalsi pocitacove zpracovani, pro uzivatele je vsak hure citelny. (Implicitni hodnota prettyprint je true.) Globalni promenna printlevel urcuje velikost vystupu. Nastaveni teto promenne na -1 chrani pred vystupem jakychkoliv vysledku. Jeji implicitni hodnota je 1 a ve vseobecnosti plati, ze cim vyssi je jeji celociselna hodnota, tim vice je zobrazen prubeh mezikroku behem vy- poctu. Vysledek prikazu lze take potlacit oddelovacem prikazu ':'. (Obvykly oddelovac prikazu je ';'.) V systemu Maple je prostredek na ziskani informaci o jeho ruznych soucastech, funkce help. Zakladni informaci o tomto prostredku ziskame zadanim prikazu help(); Mapleovska seance se obvykle vyvola zadanim prikazu maple, i kdyz se na ruznych typech pocitacu muze zpusob vyvolani ponekud lisit. Po inicializaci seance se objevi uvodni hlavicka a prompt '>'. Ten nazna- ci, ze uzivatel muze zadavat mapleovske prikazy. Prikaz je ukoncen od- delovacem prikazu (';' nebo ':'). Teprve po nem zacne Maple zadany prikaz provadet. Potom se objevi hodnota tohoto prikazu (jestlize ne- jaka existuje nebo jestlize jsme jeji vystup nepotlacili). Moznost za- dat dalsi mapleovsky prikaz je az po znovunabidnutem promptu. Na hod- noty predchozich prikazu se muzeme odvolavat znaky '"' (hodnota po- sledniho prikazu), '""' (hodnota predposledniho prikazu) a '"""' (hod- nota prikazu tretiho od konce). Prikaz muze byt zapsan na nekolika radkach nebo muze byt nekolik prikazu zapsano na jedne radce. V pripade potreby muzeme vkladat do vstupniho textu poznamky. Jako poznamka se chape vse od znaku '#' do konce radky. Na nekolik radek muzeme umistit cislo nebo jmeno zapsanim '\' bezprostredne pred znak "nova radka", napr. 3.141592653\ 589793; # Toto je Pi Maple reaguje na syntakticke chyby zpravou "syntax error:", ktera je nasledovana obvykle ukazatelem na radku, ktera byla prave zadana, napr.: (a + b))/2 + c; syntax error: (a + b))/2 + c; ^ Maple muze generovat kod v jazykach Fortran a C (samotny system na "Cecku stoji") nebo vystup zaraditelny do dokumentu LATEXu. Maple obsahuje dale prostredky pro diagnostiku programu, monito- rovani vypoctu, vytvareni aliasu a maker, kontrolu spotrebovaneho casu a pameti, popis uzivatelskeho rozhrani a dalsi. 3. Maple pod UNICOSem 3.1 Vyvolani mapleovske seance Abychom vyvolali mapleovskou seanci na pocitaci Cray, je zapotre- bi nasledujici prikaz: /usr/maple/bin/maple -b /usr/maple/lib Volba -b urcuje slovnik, kde je umistena mapleovska knihovna. Protoze je tento text ponekud dlouhy, doporucujeme uzivateli pred tim, nez zacne Maple pouzivat, provest nasledujici kroky: 1) Pri interakci pracujete obvykle pod C shellem. Pridejte si do Vaseho souboru .cshrc (je pod Vasim domovskym adresarem) tuto radku: alias maple '/usr/maple/bin/maple -b /usr/maple/lib' Od tohoto okamziku muzete mapleovskou seanci pod C shellem vyvolat prikazem maple 2) V davkovych ulohach casto pracujete take s Bourne shellem. Pridejte si do Vaseho souboru .profile (je pod Vasim domovskym adresa- rem) tyto dve radky: MAPLE='/usr/maple/bin/maple -b /usr/maple/lib' export MAPLE Od nynejska muzete mapleovskou seanci pod Bourne shellem vyvolat pri- kazem eval $MAPLE Po zapsani prislusneho prikazu se objevi: |\^/| ._|\| |/|_. Licensed by the University of Waterloo \ MAPLE / X-MP Version 4.3 Aug. 1990 <____ ____> For on-line help, type help(); | > 3.2 Mapleovske inicializacni soubory V systemu Maple existuji dva inicializacni soubory, ktere se vy- konaji pred tim, nez se zacnou provadet uzivatelovy prikazy. Prvni z nich, src/init v mapleovske knihovne, nastavuje pocatecni hodnoty pro mapleovske systemove promenne, s nimiz pracuji funkce gc (garbage collector), words (nastaveni hlaseni o alokovane a uzite pa- meti) a jine. Obsah souboru src/init vytvari spravce systemu. Druhy mapleovsky inicializacni soubor, .mapleinit, ktery se pro- vede po vykonani src/init, si muze vytvorit uzivatel pod svym domov- skym adresarem. Mohou se v nem doplnit nebo zmenit nektere hodnoty, nastavene v souboru src/init, a v podstate se v nem mohou vyskytovat libovolne mapleovske prikazy. Uzivatel vsak nemusi tento soubor nutne vytvaret. 3.3 Ukonceni mapleovske seance Abyste mapleovskou seanci ukoncili, muzete napsat nektere z tech- to tri slov: quit, done nebo stop. Za temito prikazy nemusi, na rozdil od vsech ostatnich prikazu, ktere jste v seanci vykonali, nasledovat omezovac prikazu. Pote obdrzite zpravu o celkovem souctu vsech pameto- vych pozadavku (ve slovech), o aktualni alokaci pameti (v bytech) a o casu CPU spotrebovaneho mapleovskou seanci (v sekundach), napr. > quit words used=18171, alloc=65533, time=Float(68,-3) 3.4 Znaky pro preruseni Systemu je mozne zaslat nektere signaly pro preruseni mapleovske- ho vypoctu kombinaci klavesy Ctrl a nektere dalsi. Ctrl-\ Tato kombinace klaves zrusi mapleovskou seanci se zpravou "Quit (core dumped)", rizeni se vrati uzivatelovu shellu a pod pracov- nim adresarem se vytvori soubor core. (Pozor, byva dosti velky, proto je vhodne jej zrusit, jakmile jej jiz k nicemu nepotrebujete!) Ctrl-Z Kombinace zastavi mapleovskou seanci s hlasenim "Stopped". Seanci muzeme znovu rozbehnout prikazem fg, napr. Stopped cray81% jobs [1] + Stopped /usr/maple/bin/maple -b /usr/maple/lib cray82% fg %1 /usr/maple/bin/maple -b /usr/maple/lib a kurzor se nastavi na nasledujici prazdnou radku, na ktere muzete pokracovat v zadavani mapleovskych prikazu. Ctrl-C Kombinace zrusi prave vykonavany mapleovsky prikaz, seance se vsak neopusti a uzivatel muze po nabidnutem promptu zadat dalsi prikaz. 3.5 Prikazy UNICOSu z mapleovske seance Z mapleovske seance muzete vykonat prikaz UNICOSu tak, ze jako prvni znak radku napisete vykricnik nasledovany prikazem, napr. !who, !vi apod. Kdyz je prikaz UNICOSu vykonan, mapleovska seance pokracuje tam, kde byla pozastavena. 3.6 Presmerovani vstupu a vystupu Maple pod UNICOSem pouziva pro cteni informaci standardni vstup a pro jejich zapis standardni vystup. (V interaktivnim rezimu to jsou implicitne klavesnice a obrazovka uzivatelova terminalu.) Obvyklymi prostredky operacniho systemu mame moznost toto nastaveni zmenit. Jestlize pouzijeme prikazu vyvolani mapleovske seance s kombinaci soubor, pak vy- sledky pujdou do specifikovaneho souboru, v interaktivnim rezimu tedy ne na obrazovku terminalu. Presmerovani vstupu a vystupu muze byt pouzito soucasne, napr.: maple output_file 3.7 Priklad zadani davkove ulohy V souboru maplejob1 mame tyto prikazy: #QSUB -s /bin/sh #QSUB -lm 99MB #QSUB -lT 1000 #QSUB -o maplejob1.out #QSUB -eo cd $HOME/MAPLES eval $MAPLE m3.out Ulohu tedy spoustime pod Bourne shellem, narokujeme 99 megabytu pameti a maximalne 1000 sekund CPU, vystup ulohy spolecne s chybovymi hlase- nimi pujde do souboru maplejob1.out, nastavime se na adresar $HOME/MAPLES, v souboru m3.in pod timto adresarem mame pripraveny pri- kazy pro Maple, posledni je quit (nebo nektery z jeho ekvivalentu), vystup mapleovske seance smerujeme do souboru m3.out. Ulohu posleme do NQS prikazem qsmart maplejob1 cimz zajistime jeji zarazeni do odpovidajici fronty. 4. Naznak moznosti Maple a pristup k informacim Maple umoznuje silne diferencovany pristup ke svym prostredkum: lze jej pouzit jako luxusni kalkulator se znacnymi moznostmi zpracova- ni dat a presnosti vysledku, lze vyuzit jeho rozsahle knihovny funkci, ktere jsou rozdeleny do jednotlivych sad podle matematickych oboru (linearni algebra, kombinatorika, Euklidova dvourozmerna geometrie, Grobnerova baze, matematicka statistika, reprezentace konecnych grup, teorie cisel, linearni optimalizace aj.), a nebo psat vice ci mene rozsahle aplikace v jeho jazyku, ktery krome prostredku znamych z ji- nych programovacich jazyku (rizeni behu vypoctu, prikazy vstupu a vy- stupu, psani vlastnich funkci a procedur aj.), umoznuje uzivateli vy- tvaret prakticky neomezene mnozstvi vlastnich datovych typu vyrazu a operatoru, ktere s nimi pracuji. Uvedme nyni nekolik prikladu pro zakladni predstavu. Priklad 1: Kolik ze to chtel vynalezce sachove hry zrnicek obili na svem vladari? (Symbol '^' zde zastupuje operator umocneni.) > 2^64-1; 18446744073709551615 Symboly pro nektere dalsi aritmeticke operace: +, -, *, /, ^ nebo **, iquo(delenec,delitel) (celociselne deleni), irem(delenec,delitel) (zbytek po celociselnem deleni), abs(ciselny_vyraz), ! (faktorial, napr. 10!). Priklad 2: Prirazeni hodnot mapleovskym promennym. > sila:=hmotnost*zrychleni; sila:=hmotnost zrychleni > hmotnost:=3000: zrychleni:=9.81: > silA; silA > sila; 29430.00 > vzdal1:=10: vzdal2:=50: > `Celkova energie`:=sila*(vzdal2-vzdal1); Celkova energie := .117720000*10 Maple rozlisuje mala a velka pismena. Jmena mapleovskych promennych jsou bud retezce pismen, cislic a znaku '_' do delky 498 zacinajicich pismenem, nebo libovolnych znaku klavesnice uzavrenych ve dvojici zna- ku '``'. Priklad 3: Kolik je 2*|sin(-p/2)|? > 2*abs(sin(-Pi/2); 2 Maple ma vestavene nektere konstanty (Pi,I,E aj.) a matematicke funkce (sin, cos, tan, cot, exp, ln, log10, sqrt, abs, min, max a mnoho dal- sich) a provadi automaticky nektera matematicka zjednoduseni. Priklad 4: Naleznete koreny rovnice ln(x -1)=a. > solve(ln(x^2-1)=a,x); -1/2 (4 exp(a) + 4) , 1/2 (4 exp(a) + 4) Vypocet funkce solve teto jedine rovnice poskytl dve reseni (obdrzeli jsme tzv. posloupnost); rovnic i promennych muze byt vice. Priklad 5: Jeste jedno numericke reseni rovnice cos x = x: > fsolve(cos(x)=x); .7390851332 Priklad 6: Spoctete druhou parcialni derivaci zadaneho vyrazu: > diff((t^2-s)/(s^3-1),t,s); -6 - - - - - - - - - V Maple muzeme nejen symbolicky derivovat, ale take integrovat, resit diferencialni rovnice, pocitat limity, pracovat s mocninnymi radami nebo sumami, resit rekurentni relace aj. Priklad 7: Spoctete vlastni cisla a determinant dane matice. > with (linalg): Warning: new definition for trace > A:=array([[1,2,3],[3,-1,6],[4,8,12]]); [1 2 3] [ ] A:=[3 -1 6] [ ] [4 8 12] > det(A); 0 > eigenvals(A); 0, 6 + 103 , 6 - 103 Nejprve jsme prikazem with zavedli sadu linalg, ktera nam umozni dany problem resit. Priklad 8: Nejjednodussi znakovy diagram funkce v danem rozsahu dostaneme napsanim prikazu jako > plot(sin(x),x=0..2*Pi); At se vsak jiz rozhodnete vyuzivat Maple na jakekoli urovni, po- trebujete mit o nem blizsi informace. Z knih je k dispozici v knihovne Cray [1], [2] a [3], kazda zatim jen v jednom exemplari. Tyto publika- ce navic popisuji v soucasne dobe nejnovejsi verzi systemu, s jejimz dodanim do Fyzikalniho ustavu se pocita na podzim 1993. Proto je dule- zite vyuzivat informace, ktere poskytuje samotny system prostrednic- tvim funkce help. Volame ji vetsinou s jednim nebo dvema parametry. Nektera dulezita volani podava nasledujici prehled. help(); odkazy na nejdulezitejsi volani help help(intro); strucny uvod do Maple help(index); seznam kategorii funkce help pro pouziti help(index,kategorie); Kategorie: library index popisu standardnich knihovnich funkci packages index popisu pro knihovni sady funkci libmisc index popisu pro dalsi knihovni funkce statements index popisu pro mapleovske prikazy expressions index popisu pro mapleovske vyrazy datatypes index popisu pro mapleovske datove typy tables index popisu pro tabulky a pole v Maple procedures index popisu pro mapleovske procedury misc index popisu pro dalsi mapleovske prostredky help(keywords); seznam rezervovanych mapleovskych klicovych slov help(`klicove_slovo`); vysvetleni klicoveho slova prikazu help(tema); vysvetleni specifikovaneho tematu help(sada,tema); vysvetleni specifikovaneho tematu z uvedene sady 5. Literatura Autory uvedenych knih jsou: B. W. Char, K. O. Geddes, G. H. Go- met, B. L. Leong, M. M. Monagan, S. M. Watt. [1] First Leaves: A Tutorial Introduction to Maple V, 1992, Waterloo Maple Publishing [2] Maple V Language Reference Manual, 1991, Waterloo Maple Publish- ing [3] Maple Library Reference Manual, 1991, Waterloo Maple Publishing