Masarykova univerzita Pˇr´ırodovˇedeck´a fakulta
Syst´ em poˇ c´ıtaˇ cov´ e algebry Maxima ´ RSK ˇ A ´ PRACE ´ BAKALA
Zdena Trefil´ıkov´ a
Vedouc´ı pr´ace: RNDr. Roman Plch, Ph.D. Studijn´ı program: Matematika Studijn´ı obor: Matematika se zamˇ eˇ ren´ım na vzdˇ el´ av´ an´ı
Brno 2011
R´ada bych podˇekovala RNDr. Romanu Plchovi, Ph.D. za veden´ı bakal´aˇrsk´e pr´ace, ochotu ke konzultac´ım, trpˇelivost a cenn´e rady pˇri zpracov´an´ı dan´eho t´ematu.
Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci napsala samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Brnˇe, dne 4.1.2011
Zdena Trefil´ıkov´a
N´ azev pr´ ace: Syst´em poˇc´ıtaˇcov´e algebry Maxima Autor: Zdena Trefil´ıkov´a ´ Ustav matematiky a statistiky Pˇ r´ırodovˇ edeck´ e fakulty, MU Vedouc´ı bakal´ aˇ rsk´ e pr´ ace: RNDr. Roman Plch, Ph.D. Abstrakt: Pr´ace se zab´ yv´a syst´emem poˇc´ıtaˇcov´e algebry Maxima a pˇredstavuje struˇcn´ y manu´al k tomuto programu urˇcen´ y pˇredevˇs´ım student˚ um matematiky. ´ Uvodn´ ı kapitoly popisuj´ı instalaci programu a jeho z´akladn´ı ovl´ad´an´ı, pot´e se jiˇz pr´ace zamˇeˇruje na jednotliv´e pˇr´ıkazy t´ ykaj´ıc´ı se matematick´ ych v´ yraz˚ u a funkc´ı, matic, ˇreˇsen´ı soustav rovnic a tvorby graf˚ u. Posledn´ı kapitola se vˇenuje vyuˇzit´ı programu pˇri v´ yuce matematick´e anal´ yzy, pˇriˇcemˇz je kladen d˚ uraz zejm´ena na sekci o vyˇsetˇrov´an´ı pr˚ ubˇehu funkce, v n´ıˇz jsou aplikov´any pˇr´ıkazy z pˇredch´azej´ıc´ıch kapitol. Ke kaˇzd´emu pˇr´ıkazu je vˇzdy uveden kr´atk´ y koment´aˇr a alespoˇ n jeden pˇr´ıklad. Pr´ace tak´e poukazuje na nˇekter´e probl´emy, s nimiˇz se uˇzivatel programu m˚ uˇze setkat, a navrhuje jejich ˇreˇsen´ı. Kl´ıˇ cov´ a slova: Maxima, syst´em poˇc´ıtaˇcov´e algebry, matematick´a anal´ yza, pr˚ ubˇeh funkce Title: Computer Algebra System Maxima Author: Zdena Trefil´ıkov´a Department of Mathematics and Statistics, Faculty of Science, MU Supervisor: RNDr. Roman Plch, Ph.D. Abstract: The thesis treats of the computer algebra system Maxima and represents a brief manual, primarily intended for students of mathematics. The introductory chapters describe the installation and basic control of the program, then the thesis focuses on particular commands related to mathematical expressions and functions, matrices, equation system solving and graph plotting. The last chapter deals with the use of the program in mathematical analysis. The emphasis is placed on the section about investigation of the course of function, in which commands from previous chapters are applied. A short commentary and at least one example are introduced to every command. The thesis also points out some of the problems that the user can come across and proposes their solutions. Keywords: Maxima, computer algebra system, mathematical analysis, course of function
OBSAH
5
Obsah ´ Uvod 1 Prvn´ı kroky 1.1 Staˇzen´ı a instalace . . . . . . 1.2 Spuˇstˇen´ı programu . . . . . . 1.3 Pravidla pro zad´av´an´ı pˇr´ıkaz˚ u 1.4 Ukl´ad´an´ı, export a tisk . . . . 1.5 Ukonˇcen´ı programu . . . . . . 1.6 N´apovˇeda . . . . . . . . . . .
7
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
8 8 9 10 11 11 12
2 Z´ aklady pr´ ace 2.1 Jednoduch´e operace . . . . . . . 2.2 Moˇznosti zobrazov´an´ı v´ ystupu . 2.3 Zn´am´e konstanty a jejich z´apis . 2.4 Pˇriˇrazov´an´ı hodnot a v´ yraz˚ u . . 2.5 Volba pˇresnosti v´ ypoˇctu . . . . 2.6 Komplexn´ı ˇc´ısla . . . . . . . . . 2.7 Zad´av´an´ı pˇredpoklad˚ u . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
14 14 14 15 16 18 19 20
3 Pr´ ace s v´ yrazy 3.1 Pˇr´ıkazy expand, factor a gfactor 3.2 Pˇr´ıkazy num, denom a partfrac 3.3 Pˇr´ıkazy rat, ratsimp a radcan . 3.4 Substituce . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
24 24 25 26 27
4 Funkce 4.1 Definov´an´ı funkc´ı . . . . . . . . . . . 4.2 Funkˇcn´ı operace . . . . . . . . . . . . 4.3 Exponenci´aln´ı a logaritmick´a funkce . 4.4 Goniometrick´e a cyklometrick´e funkce
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
29 29 30 31 32
ˇ sen´ı rovnic a jejich soustav 5 Reˇ 5.1 Pˇr´ıkaz solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33 33
OBSAH
6
5.2 5.3
34 34
Pˇr´ıkaz linsolve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pˇr´ıkaz find root . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Matice 6.1 Vytv´aˇren´ı matic . . . . . . . . . . 6.2 Operace s maticemi . . . . . . . . 6.3 Determinant . . . . . . . . . . . . 6.4 Hodnost matice . . . . . . . . . . 6.5 Transponovan´a a inverzn´ı matice
. . . . .
35 35 35 37 38 38
7 Tvorba graf˚ u 7.1 2D grafy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 3D grafy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Uloˇzen´ı grafu do souboru . . . . . . . . . . . . . . . . . . . . . . .
39 39 43 44
8 Matematick´ a anal´ yza 8.1 Limity . . . . . . . . . . . . 8.2 Derivace . . . . . . . . . . . 8.3 Integr´aly . . . . . . . . . . . 8.4 Taylor˚ uv polynom . . . . . . 8.5 Vyˇsetˇrov´an´ı pr˚ ubˇehu funkce
45 46 46 49 50 50
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Z´ avˇ er
57
Seznam pouˇ zit´ e literatury
58
´ UVOD
7
´ Uvod Syst´em poˇc´ıtaˇcov´e algebry je software, kter´ y sv´emu uˇzivateli umoˇzn ˇuje ˇreˇsit velk´e mnoˇzstv´ı matematick´ ych u ´loh. Dok´aˇze pracovat s re´aln´ ymi i komplexn´ımi ˇc´ısly a um´ı bˇehem okamˇziku vyˇreˇsit i obt´ıˇznˇejˇs´ı u ´lohy jako jsou integr´aly, ˇreˇsen´ı soustavy rovnic nebo n´asoben´ı matic. Prvn´ı syst´emy poˇc´ıtaˇcov´e algebry se objevuj´ı jiˇz v 60. letech 20. stolet´ı. V roce 1963 pˇredstavil Martinus J. G. Veltman, laure´at Nobelovy ceny za fyziku, sv˚ uj program Schoonschip. Jen o rok pozdˇeji se na sc´enˇe objevuje Mathlab. V dalˇs´ıch letech spatˇr´ı svˇetlo svˇeta tak´e Mumath, Derive a Macsyma, pˇredch˚ udce dneˇsn´ıho syst´emu Maxima. V dneˇsn´ı dobˇe je na trhu ˇrada syst´em˚ u poˇc´ıtaˇcov´e algebry. Nˇekter´e z nich jsou komerˇcn´ı programy, jako napˇr´ıklad Maple nebo Mathematika, jin´e jsou volnˇe dostupn´e (tzv. open source programy), mezi kter´e patˇr´ı napˇr´ıklad Axiom, Sage a tak´e syst´em Maxima, kter´ ym se tato pr´ace zab´ yv´a. Syst´em Macsyma byl vytvoˇren v pr˚ ubˇehu let 1968 aˇz 1982 jako souˇc´ast projektu MAC v MIT (Massachusetts Institute of Technology). V roce 1982 byl zdrojov´ y k´od syst´emu Maxima pˇred´an Oddˇelen´ı energie (Department of Energy). Tato verze je zn´ama jako DOE Macsyma. Program byl pot´e udrˇzov´an profesorem Williamem F. Schelterem z univerzity v Texasu, a to aˇz do jeho smrti v roce 2001. V roce 1998 z´ıskal Schelter souhlas ke zveˇrejnˇen´ı zdrojov´eho k´odu programu DOE MacSyma pod veˇrejnou licenc´ı GNU a v roce 2000 inicializoval projekt Maxima na SourceForge, aby se program DOE Macsyma mohl nad´ale udrˇzovat a vylepˇsovat pod sv´ ym nov´ ym n´azvem Maxima. Od t´e doby proch´az´ı program pravideln´ ymi aktualizacemi. Nynˇejˇs´ı nejnovˇejˇs´ı verze je Maxima 5.22.1., kter´a vyˇsla 13. srpna 2010. Nejvˇetˇs´ı v´ yhoda t´eto nov´e verze je, ˇze jej´ı grafick´a nadstavba wxMaxima byla ˇc´asteˇcnˇe pˇreloˇzena do ˇceˇstiny, coˇz v´ yznamnˇe usnadn´ı pr´aci ˇcesk´emu uˇzivateli. Vˇsechny potˇrebn´e informace o programu Maxima, jeho instalaci a aktualizac´ıch se nach´azej´ı na ofici´aln´ıch internetov´ ych str´ank´ach programu http://maxima.sourceforge.net.
PRVN´I KROKY
8
Kapitola 1 Prvn´ı kroky 1.1
Staˇ zen´ı a instalace
Vˇsechny informace potˇrebn´e k instalaci programu Maxima najdeme v sekci Download jeho ofici´aln´ıch webov´ ych str´anek. Zde si m˚ uˇzeme tyto soubory tak´e st´ahnout.
Instalace na OS Windows Pro instalaci na OS Windows st´ahneme soubor maxima-x.y.z.exe, kde x.y.z. je verze programu. Jakmile soubor spust´ıme, objev´ı se klasick´e instalaˇcn´ı okno. Po klepnut´ı na tlaˇc´ıtko Next a akceptov´an´ı licenˇcn´ıho ujedn´an´ı m˚ uˇzeme zaˇc´ıt s nastaven´ım parametr˚ u pro instalaci. Je moˇzn´e vybrat u ´plnou instalaci, kompaktn´ı instalaci ke spouˇstˇen´ı programu pouze v pˇr´ıkazov´e ˇra´dce nebo vlastn´ı instalaci, kde zaˇskrtneme ty komponenty, kter´e chceme instalovat. Jednou z tˇechto komponent je tak´e grafick´a nadstavba wxMaxima, kterou doporuˇcuji nainstalovat, nebot’ s n´ı budeme pracovat. Pro u ´plnou instalaci je nutn´e m´ıt cca 92 MB voln´eho m´ısta na disku. Nakonec zvol´ıme, kam chceme um´ıstit z´astupce programu, popˇr. vytvoˇr´ıme ikonu na ploˇse. V dalˇs´ım kroku jiˇz vid´ıme vˇsechny informace o instalaci. V tomto okamˇziku se jeˇstˇe poˇra´d m˚ uˇzeme vr´atit kliknut´ım na Back a zmˇenit nastaven´ı. Pokud jsme s nastaven´ım spokojeni, klikneme na Install a spust´ı se samotn´a instalace. Pot´e se zobraz´ı soubor Readme. Naposledy klikneme na Next a instalaci ukonˇc´ıme klepnut´ım na tlaˇc´ıtko Finish.
Instalace na OS Linux Existuje nˇekolik moˇznost´ı, jak nainstalovat program Maxima na Linux, my si vˇsak uk´aˇzeme jen jednu z nich. Informace o dalˇs´ıch moˇznostech instalace najdeme na ofici´aln´ıch webov´ ych str´ank´ach syst´emu Maxima. Nejprve st´ahneme soubor maxima-x.y.z.tar.gz. Jestliˇze m´ame operaˇcn´ı syst´em postaven´ y na Debianu, po instalaci bychom nemohli spouˇstˇet grafickou nadstavbu wxMaxima.
PRVN´I KROKY
Tento probl´em vyˇreˇs´ıme napˇr´ıklad tak, ˇze si jeˇstˇe pˇred samotnou instalac´ı programu nainstalujeme bal´ık cmucl pˇr´ıkazem sudo apt-get install cmucl a pot´e program Maxima s t´ımto bal´ıkem zkompilujeme. Instalaˇcn´ı soubor programu nejprve rozbal´ıme pˇr´ıkazem tar xzf maxima-x.y.z.tar.gz a pˇrejdeme do sloˇzky programu pˇr´ıkazem cd maxima-x.y.z. Program zkompilujeme s bal´ıkem cmucl pˇr´ıkazem ./configure --enable-cmucl. Nyn´ı program nainstalujeme pomoc´ı pˇr´ıkazu make install a nakonec nainstalujeme grafickou nadstavbu programu pˇr´ıkazem apt-get install wxmaxima.
1.2
Spuˇ stˇ en´ı programu
Program Maxima lze spustit nˇekolika r˚ uzn´ ymi zp˚ usoby. Nejjednoduˇsˇs´ı moˇznost´ı je poklep´an´ı na ikonu XMaxima nebo wxMaxima. Program m˚ uˇzeme tak´e spouˇstˇet z pˇr´ıkazov´e ˇra´dky, a to pˇr´ıkazy maxima, xmaxima nebo wxmaxima. Pˇr´ıkaz maxima spust´ı program v r´amci pˇr´ıkazov´e ˇra´dky, xmaxima v samostatn´em oknˇe a wxmaxima spust´ı grafickou nadstavbu programu. At’ pouˇzijeme kter´ ykoliv pˇr´ıkaz, spust´ıme tent´ yˇz program se stejn´ ymi funkcemi. Rozd´ıl uvid´ıme pouze v grafick´em rozhran´ı. Grafick´a nadstavba wxMaxima nab´ız´ı velmi pˇr´ıjemn´e grafick´e prostˇred´ı a jej´ı velkou v´ yhodou je jej´ı lokalizace do ˇceˇstiny, i kdyˇz ne u ´pln´a. Zat´ım m˚ uˇzeme vyuˇz´ıt ˇcesk´e hlavn´ı menu, kter´e n´am v´ yznamnˇe ulehˇc´ı pr´aci, avˇsak na kompletn´ı pˇreklad programu nebo ˇcesk´ y manu´al si budeme muset jeˇstˇe poˇckat. Nad´ale bude tato pr´ace pouˇz´ıvat pr´avˇe grafickou nadstavbu wxMaxima.
Obr´azek 1.1: Grafick´a nadstavba wxMaxima
9
PRVN´I KROKY ´ Na Ustavu matematiky a statistiky Pˇr´ırodovˇedeck´e fakulty Masarykovy Univerzity je syst´em Maxima nainstalov´an na serveru Bart, odkud se spouˇst´ı pˇr´ıkazy maxima, xmaxima nebo wxmaxima.
1.3
Pravidla pro zad´ av´ an´ı pˇ r´ıkaz˚ u
Abychom mohli zaˇc´ıt pracovat s programem Maxima, je nutn´e nejdˇr´ıve uv´est nˇekolik z´akladn´ıch pravidel pro zad´av´an´ı pˇr´ıkaz˚ u. Pˇr´ıkaz standardnˇe ukonˇcujeme stˇredn´ıkem. Aby byl pˇr´ıkaz n´aslednˇe proveden, stiskneme kl´avesy Shift+Enter. (%i1) sqrt(4); (%o1)
2
Pokud stiskneme pouze Enter, pˇr´ıkaz nebude proveden a program bude ˇcekat na dalˇs´ı pˇr´ıkaz. T´ımto zp˚ usobem lze zadat nˇekolik pˇr´ıkaz˚ u souˇcasnˇe. Po zad´an´ı posledn´ıho pˇr´ıkazu opˇet stiskneme Shift+Enter a program provede vˇsechny pˇr´ıkazy souˇcasnˇe. (%i2) sqrt(4); sqrt(9);
(%o2)
2
(%o3)
3
Pokud chceme prov´adˇet pˇr´ıkazy pouze pomoc´ı kl´avesy Enter, klikneme na moˇznost Nastaven´ ı v z´aloˇzce Editovat. Zde zaˇskrtneme u ´plnˇe posledn´ı poloˇzku Enter vyhodnocuje v´ yraz, ˇc´ımˇz prohod´ıme funkce Enter a Shift+Enter. D´ale m´ame moˇznost prov´adˇet pˇr´ıkazy bez toho, aby se zobrazil v´ ysledek. K takov´emu u ´ˇcelu slouˇz´ı znak $, kter´ y nap´ıˇseme za pˇr´ıkaz m´ısto stˇredn´ıku. V´ ysledek samozˇrejmˇe m˚ uˇzeme kdykoliv zobrazit nebo s n´ım d´ale pracovat. (%i4) sqrt(4)$ Je tu tak´e moˇznost zadan´ y pˇr´ıkaz neprov´adˇet a pouze jej opsat. Vyuˇz´ıv´a se k tomu apostrof ’, kter´ y um´ıst´ıme na zaˇca´tek pˇr´ıkazu. (%i5) ’limit(x^2/(x^3+2), x, inf);
10
PRVN´I KROKY x2 x→∞ x3 + 2
(%o5)
lim
Maxima automaticky ˇc´ısluje kaˇzd´ y vstup i v´ ystup. Vstupy jsou znaˇceny (%ix) a v´ ystupy (%ox), kde x je jejich poˇradov´e ˇc´ıslo. V dalˇs´ıch pˇr´ıkazech pot´e m˚ uˇzeme odkazovat na pˇredeˇsl´e pˇr´ıkazy bez opˇetovn´eho opisov´an´ı. Pokud odkazujeme na posledn´ı zadan´ y pˇr´ıkaz, pouˇz´ıv´ame pouze znak %. Pro odkazov´an´ı na starˇs´ı pˇr´ıkazy mus´ıme pouˇz´ıt jejich oznaˇcen´ı. Obˇe moˇznosti jsou uk´az´any v n´asleduj´ıc´ım pˇr´ıkladu: (%i6) x^2-3; x2 − 3
(%o6) (%i7) sqrt(%);
√ x2 − 3
(%o7) (%i8) diff(%i6,x); (%o8)
1.4
2x
Ukl´ ad´ an´ı, export a tisk
Po ukonˇcen´ı pr´ace m˚ uˇzeme data v z´apisn´ıku uloˇzit, exportovat nebo tisknout. Pouˇzijeme z´aloˇzku Soubor hlavn´ıho menu, kde vˇsechny tyto moˇznosti najdeme. Zvol´ıme-li poloˇzku Uloˇ zit jako, uloˇz´ıme z´apisn´ık do .wxm souboru. Soubor exportujeme pomoc´ı poloˇzky Export. Exportujeme bud’ do form´atu HTML nebo do zdrojov´eho k´odu programu TEX. Pro tisk pouˇzijeme poloˇzku Tisk, kde n´aslednˇe vybereme, jestli chceme soubor pˇr´ımo vytisknout na tisk´arnˇe nebo pˇrev´est do form´atu PDF ˇci PS.
1.5
Ukonˇ cen´ı programu
Program lze ukonˇcit nˇekolika zp˚ usoby. Prvn´ı moˇznost´ı je ukonˇcen´ı pomoc´ı pˇr´ıkazu quit(), pˇriˇcemˇz pr´azdn´e z´avorky za quit jsou nutn´e. Pokud zad´ame pˇr´ıkaz bez z´avorek, program se neukonˇc´ı a pouze slovo quit op´ıˇse, jak je uk´az´ano n´ıˇze. Tento postup pouˇzijeme, jestliˇze pracujeme v pˇr´ıkazov´e ˇra´dce. (%i1) quit; 11
PRVN´I KROKY
(%o1)
quit
(%i2) quit(); CLIENT: Lost socket connection ... Restart Maxima with ’Maxima->Restart Maxima’. Pokud pracujeme s grafickou nadstavbou, ukonˇc´ıme program v hlavn´ım menu volbou Ukonˇ cit z´aloˇzky Soubor nebo stisknut´ım kl´aves Ctrl + Q.
1.6
N´ apovˇ eda
Velmi d˚ uleˇzitou vˇec´ı nejen pro zaˇc´ınaj´ıc´ı uˇzivatele je syst´em n´apovˇedy, na kter´ y se zamˇeˇr´ıme nejdˇr´ıve. Vybereme-li v z´aloˇzce N´ apovˇ eda moˇznost N´ apovˇ eda programu Maxima nebo stiskneme-li kl´avesu F1, objev´ı se rozs´ahl´ y manu´al programu, kter´ y obsahuje des´ıtky kapitol s popisy pˇr´ıkaz˚ u a jejich pˇr´ıklady. Manu´al najdeme tak´e na webov´ ych str´ank´ach Sourceforge1 . K dispozici m´ame tak´e dalˇs´ı formy n´apovˇedy a to pˇr´ıkazy describe(), example() a apropos(). Pˇr´ıkaz describe(pˇ rı ´kaz) pop´ıˇse funkci zadan´eho pˇr´ıkazu. (%i1) describe(float); -- Function: float (<expr>) Converts integers, rational numbers and bigfloats in <expr> to floating point numbers. It is also an ‘evflag’, ‘float’ causes non-integral rational numbers and bigfloat numbers to be converted to floating point. There are also some inexact matches for ‘float’. Try ‘?? float’ to see them. (%o1) true Pˇr´ıkaz example(pˇ rı ´kaz) vyp´ıˇse pˇr´ıklady pro zadan´ y pˇr´ıkaz. Tento pˇr´ıkaz je vhodn´e vyuˇz´ıt, pokud nev´ıme, jak se dan´ y pˇr´ıkaz pouˇz´ıv´a, napˇr. pokud si nejsme jisti poˇctem a poˇrad´ım argument˚ u, kter´e do pˇr´ıkazu dosazujeme. Ukaˇzme si pˇr´ıklady pro pˇr´ıkaz coeff. (%i2) example(coeff); (%i3) coeff(b+tan(x)+2*a*tan(x) = 3+5*tan(x),tan(x)) (%o3) 2 a+1=5 (%i4)coeff(1+x*%e^x+y,x,0) (%o4) y+1 (%o4) done 1
http://maxima.sourceforge.net/docs/manual/en/maxima.html
12
PRVN´I KROKY
Pˇr´ıkaz apropos() n´am vyp´ıˇse veˇsker´e pˇr´ıkazy, kter´e obsahuj´ı zadan´e seskupen´ı p´ısmen, coˇz je uˇziteˇcn´e, pokud si nejsme jisti, zda pˇr´ıkaz p´ıˇseme spr´avnˇe nebo hled´ame podobn´ y pˇr´ıkaz. (%i5) apropos("sin"); (%o5) [asin,asinh,decreasing,increasing,maxpsinegint,maxpsiposint, poisint,require\_posinteger,sin,sinh,sinsert,sinvertcase, piargs-sin/cos]
13
´ ´ ZAKLADY PRACE
14
Kapitola 2 Z´ aklady pr´ ace V t´eto kapitole se sezn´am´ıme se z´akladn´ımi operacemi a pˇr´ıkazy, kter´e se pouˇz´ıvaj´ı v syst´emu poˇc´ıtaˇcov´e algebry Maxima.
2.1
Jednoduch´ e operace
Pro z´akladn´ı operace jako je sˇc´ıt´an´ı, odˇc´ıt´an´ı, n´asoben´ı a dˇelen´ı se pouˇz´ıvaj´ı obvykl´e znaky +,−,∗ a /. V pˇr´ıpadˇe n´asoben´ı vkl´ad´ame hvˇezdiˇcku tak´e mezi ˇc´ıslo a promˇennou. Umocˇ nov´an´ı se prov´ad´ı pomoc´ı znaku ˆ, v pˇr´ıpadˇe odmocˇ nov´an´ı dosazujeme vhodn´ y zlomek. Druhou odmocninu zad´av´ame pˇr´ıkazem sqrt(v´ yraz). U pˇr´ıkaz˚ u mus´ıme sledovat prioritu operac´ı a pˇr´ıpadnˇe spr´avnˇe uz´avorkovat. Ukaˇzme si jednoduch´ y pˇr´ıklad. (%i1) x^2/3; x2 3
(%o1) (%i2) x^(2/3);
2
(%o2)
2.2
x3
Moˇ znosti zobrazov´ an´ı v´ ystupu
V programu Maxima existuje nˇekolik moˇznost´ı pro zobrazov´an´ı v´ ystupu. Mezi jednotliv´ ymi form´aty pˇrep´ın´ame pomoc´ı pˇr´ıkazu set display(). Implicitnˇe je nastaven form´at xml. (%i1) x^x/sqrt(x^2+1);
´ ´ ZAKLADY PRACE xx √ x2 + 1
(%o1) Nyn´ı zvol´ıme form´at ascii. (%i2) set_display(ascii)$ (%i3) %i1;
x x -----------2 sqrt(x + 1)
(%o3)
Pokud zad´ame none, bude se pˇr´ıkaz zobrazovat pouze v jedin´em ˇra´dku. (%i4) set_display(none)$ (%i5) %i1; (%o5) x^x/sqrt(x^2+1) Posledn´ı moˇznost´ı je v´ ystup v podobˇe zdrojov´eho k´odu programu TEX. Pro tento druh v´ ystupu slouˇz´ı pˇr´ıkaz tex(). Pro pˇr´ıklad uved’me zobrazen´ı v´ yrazu x √ . x2 −1 (%i6) tex(x/sqrt(x^2-1))$ $${{x}\over{\sqrt{x^2-1}}}$$
2.3
Zn´ am´ e konstanty a jejich z´ apis
Pˇred konstanty e (Eulerovo ˇc´ıslo), i (imagin´arn´ı jednotka) a π (Ludolfovo ˇc´ıslo) p´ıˇseme vˇzdy znak %. Pokud tento znak vynech´ame, program bude pˇredpokl´ad´at, ˇze se nejedn´a o ˇz´adnou speci´aln´ı konstantu a nebude schopen ji vyˇc´ıslit. Uk´aˇzeme si jednoduch´e pˇr´ıklady, na kter´ ych ihned vid´ıme rozd´ıl. (%i1) i^2; (%o1)
i2
(%i2) %i^2; 15
´ ´ ZAKLADY PRACE −1
(%o2) (%i3) log(e); (%o3)
log (e)
(%i4) log(%e); (%o4)
1
Program pouˇz´ıv´a znak % tak´e u v´ ystup˚ u s v´ yjimkou Ludolfova ˇc´ısla, kter´e zapisuje pˇr´ımo jako π. Konstantu ∞, resp. −∞ p´ıˇseme ve tvaru inf, resp. minf. V tomto pˇr´ıpadˇe znak % nepouˇz´ıv´ame.
2.4
Pˇ riˇ razov´ an´ı hodnot a v´ yraz˚ u
Pro pˇriˇrazov´an´ı pouˇz´ıv´ame znak :. T´ımto znakem m˚ uˇzeme promˇenn´ ym pˇriˇrazovat hodnoty i v´ yrazy s jin´ ymi promˇenn´ ymi (ne vˇsak funkce). (%i1) y:x^2+3; (%o1)
x2 + 3
(%i2) sqrt(y); (%o2)
√ x2 + 3
Vid´ıme, ˇze kdyˇz jsme zadali do n´asleduj´ıc´ıho pˇr´ıkazu y, program automaticky pracoval s v´ yrazem x2 + 3. Jestliˇze potˇrebujeme zruˇsit nˇekter´e z pˇriˇrazen´ ych hodnot, pouˇz´ıv´ame k tomuto u ´ˇcelu pˇr´ıkaz kill(). V pˇr´ıpadˇe, ˇze chceme zruˇsit vˇsechna pˇriˇrazen´ı, pouˇzijeme pˇr´ıkaz kill(all). (%i3) a:1; (%o3)
1
(%i4) a; (%o4)
1 16
´ ´ ZAKLADY PRACE
(%i5) kill(a); (%o5)
done
(%i6) a; (%o6)
a
Nyn´ı se pod´ıvejme na rozd´ıln´e v´ ysledky u n´asleduj´ıc´ıch dvou pˇr´ıklad˚ u. V obou pˇr´ıpadech budeme pˇriˇrazovat stejn´e hodnoty, avˇsak pˇrehod´ıme poˇrad´ı. (%i7) b:3; (%o7)
3
(%i8) a:b; (%o8)
3
(%i9) a; (%o9)
3
(%i10) kill(a,b); (%o10)
1
(%i11) a:b; (%o11)
b
(%i12) b:3; (%o12)
3
(%i13) a; (%o13)
b
V prvn´ım pˇr´ıpadˇe jsme nejprve pˇriˇradili promˇenn´e b hodnotu 3. Kdyˇz jsme pak n´aslednˇe pˇriˇradili promˇenn´e a hodnotu promˇenn´e b, program ji automaticky vyhodnotil jako ˇc´ıslo 3. Ve druh´em pˇr´ıpadˇe jsme postupovali opaˇcnˇe. Program by mˇel v tomto pˇr´ıpadˇe reagovat stejnˇe, avˇsak Maxima bohuˇzel nedok´aˇze vyhodnotit dvˇe takov´a po sobˇe jdouc´ı pˇriˇrazen´ı, a proto bere v u ´vahu pouze prvn´ı pˇriˇrazen´ı promˇenn´e a. 17
´ ´ ZAKLADY PRACE
2.5
Volba pˇ resnosti v´ ypoˇ ctu
Maxima pracuje s pˇresn´ ymi ˇc´ısly, v symbolick´em tvaru. Standardnˇe √ kter´a zapisuje 1 tedy nezaokrouhluje ˇc´ısla jako 2, e nebo 3 . Form´at v´ ypisu nastavujeme pˇr´ıkazy numer:true a numer:false. (%i1) %pi; (%o1)
π
(%i2) numer:true; (%o2)
true
(%i3) %pi; (%o3)
3.141592653589793
(%i4) numer:false; (%o4)
true
(%i5) %pi; (%o5)
π
Pˇr´ıkaz float() pˇrevede ˇc´ıslo zapsan´e v symbolick´em tvaru na desetinn´e ˇc´ıslo. Zobrazuje vˇzdy 16 cifer. (%i6) float(%pi); (%o6)
3.141592653589793
Pokud chceme zobrazovat hodnotu s jinou pˇresnost´ı, nastav´ıme ji nejprve pˇr´ıkazem fpprec: a n´aslednˇe pouˇzijeme bfloat() pro zobrazen´ı hodnoty. (%i7) fpprec:25; (%o7)
25
(%i8) bfloat(%pi); (%o8)
3.141592653589793238462643b0 18
´ ´ ZAKLADY PRACE
2.6
Komplexn´ı ˇ c´ısla
Komplexn´ı ˇc´ısla zad´av´ame v algebraick´em tvaru pomoc´ı imagin´arn´ı jednotky %i. (%i1) k1:1+2*%i; (%o1)
2 %i + 1
(%i2) k2:4-3*%i; (%o2)
4 − 3 %i
Nyn´ı budeme s tˇemito ˇc´ısly d´ale pracovat. Vypoˇc´ıt´ame jejich souˇcin a pod´ıl. Dostaneme vˇsak neupraven´e v´ ysledky. V´ ysledky v z´akladn´ım tvaru z´ısk´ame aˇz po uˇzit´ı pˇr´ıkazu rectform. (%i3) k1*k2; (%o3)
(4 − 3 %i) (2 %i + 1)
(%i4) rectform(k1*k2); (%o4)
5 %i + 10
(%i5) k1/k2;
(%o5)
2 %i + 1 4 − 3 %i
(%i6) rectform(k1/k2);
(%o6)
2 11 %i − 25 25
Jestliˇze chceme zobrazit re´alnou, resp. imagin´arn´ı, ˇc´ast komplexn´ıho ˇc´ısla, pouˇzijeme pˇr´ıkaz realpart, resp. imagpart. Samozˇrejmˇe tyto pˇr´ıkazy m˚ uˇzeme pouˇz´ıt i u souˇcinu nebo pod´ılu a to i v pˇr´ıpadˇe, ˇze souˇcin ani pod´ıl nevyˇc´ısl´ıme. (%i7) y:1+%i; (%o7)
%i + 1 19
´ ´ ZAKLADY PRACE
(%i8) z:3+2*%i; (%o8)
2 %i + 3
(%i9) realpart(y*z); (%o9)
1
(%i10) imagpart(y/z); 1 13
(%o10)
2.7
Zad´ av´ an´ı pˇ redpoklad˚ u
V programu Maxima existuje nˇekolik moˇznost´ı, jak zadat pˇredpoklady, kter´e budou platn´e pro dalˇs´ı zadan´e pˇr´ıkazy. Uk´aˇzeme si, jak zad´av´ame pˇredpoklady pomoc´ı pˇr´ıkaz˚ u ev, assume a declare.
Pˇ r´ıkaz ev Pˇr´ıkaz ev(v´ yraz,p1,p2,...) definuje podm´ınky v r´amci jednoho pˇr´ıkazu. V´ yraz se vyhodnot´ı za pˇredpokladu platnosti zadan´ ych podm´ınek. Pouˇzijeme podm´ınku a = e u ˇreˇsen´ı n´asleduj´ıc´ı rovnice1 . (%i1) solve(2*x+a=4,x); [ (%o1)
a−4 x=− 2
]
(%i2) ev(solve(2*x+a=4),x,a=%e); [ (%o2)
%e − 4 x=− 2
]
Zkus´ıme zadat v´ıce podm´ınek. Pˇrid´ame podm´ınku, aby se v´ ystup zobrazil ve formˇe desetinn´eho ˇc´ısla. 1
Popis pˇr´ıkazu solve najdeme v kapitole 5, kter´a se zab´ yv´a ˇreˇsenm rovnic.
20
´ ´ ZAKLADY PRACE
(%i3) ev(solve(2*x+a=4),x,a=%e,numer); rat: replaced -1.28171817154095 by -10951/8544 = -1.28171816479401 rat: replaced -1.28171816479401 by -9668/7543 = -1.28171814927748 rat: replaced 2.651464934376242E-4 by 2/7543 = 2.651464934376242E-4 rat: replaced -0.6408590746387 by -4834/7543 = -0.6408590746387 (%o3)
[x = 0.64085907463874]
(%i4) a; (%o4)
a
Vid´ıme, ˇze pˇredpoklady opravdu plat´ı pouze v r´amci pˇr´ıkaz˚ u s prostˇred´ım ev, u dalˇs´ıho pˇr´ıkazu je pˇriˇrazen´ı jiˇz zruˇseno.
Pˇ r´ıkazy assume a forget Pˇr´ıkazem assume(p1,p2,...) definujeme pˇredpoklady pro dalˇs´ı pˇr´ıkazy. Tyto podm´ınky, narozd´ıl od pˇr´ıkazu ev, jsou platn´e pro vˇsechny n´asleduj´ıc´ı pˇr´ıkazy aˇz do doby, kdy je zruˇs´ıme pˇr´ıkazem forget(p1,p2,...). Tyto pˇredpoklady mohou b´ yt zad´any pouze pomoc´ı oper´ator˚ u pro relaci, tzn. <,>,<=,>=, = a ̸=. (%i1) sqrt((a+b)^2); (%o1)
|b + a|
(%i2) assume(a+b>0); (%o2)
[b + a > 0]
(%i3) sqrt((a+b)^2); (%o3)
b+a
(%i4) assume(a+b<0); (%o4)
[inconsistent]
Na tomto m´ıstˇe program negativnˇe reagoval na pokus o pˇredefinov´an´ı jiˇz dan´ ych podm´ınek. Abychom mohli zmˇenit pˇredpoklad a + b > 0 na pˇredpoklad a + b < 0, mus´ıme nejprve platn´ y pˇredpoklad zruˇsit a teprve potom definovat druh´ y. 21
´ ´ ZAKLADY PRACE
(%i5) forget(a+b>0); (%o5)
[b + a > 0]
(%i6) assume(a+b<0); (%o6)
[b + a < 0]
(%i7) sqrt((a+b)^2); (%o7)
−b − a
V pˇr´ıpadˇe rovnosti a nerovnosti do pˇr´ıkazu nep´ıˇseme = nebo ̸=, ale pouˇz´ıv´ame pˇr´ıkazy equal a notequal. (%i8) assume(equal(x,0),notequal(y,1)); (%o8)
[equal (x, 0) , notequal (y, 1)]
Pravidla pro tyto dva pˇredpoklady jsou stejn´a jako u pˇredchoz´ıch pˇredpoklad˚ u.
Pˇ r´ıkaz declare Pˇr´ıkaz declare(x1,p1,x2,p2,...) definuje pˇredpoklad p1 pro promˇennou x1, pˇredpoklad p2 pro promˇennou x2, atd. Pˇredpoklady ruˇs´ıme pˇr´ıkazem kill(xi), kde i je ˇc´ıslo promˇenn´e. Pˇr´ıkazem kill m˚ uˇzeme zruˇsit libovoln´ y poˇcet promˇenn´ ych najednou, napˇr. kill(x1,x4,x5). Nemus´ı se jednat pouze o promˇennou, m˚ uˇzeme zadat pˇredpoklad i pro pˇr´ıkaz, funkci,... K pˇr´ıkazu declare se v´aˇzou r˚ uzn´e druhy argument˚ u, kter´e najdeme v manu´alu. My si vezmeme na uk´azku jednoduch´ y pˇr´ıklad. (%i1) (-1)^(n+1); (%o1)
(−1)n+1
Nyn´ı zavedeme pˇredpoklad, ˇze n je lich´e ˇc´ıslo (anglicky odd). (%i2) declare(n,odd); (%o2)
done 22
´ ´ ZAKLADY PRACE
(%i3) (-1)^(n+1); (%o3)
1
Stejnˇe jako u pˇr´ıkazu assume mus´ıme zruˇsit souˇcasn´ y pˇredpoklad, abychom mohli definovat nov´ y. (%i4) kill(n); (%o4)
done
(%i5) (-1)^(n+1); (%o5)
(−1)n+1
Nyn´ı pro zmˇenu zavedeme pˇredpoklad, ˇze n je sud´e (anglicky even). (%i6) declare(n,even); (%o6)
done
(%i7) (-1)^(n+1); (%o7)
−1
23
´ ´ PRACE S VYRAZY
24
Kapitola 3 Pr´ ace s v´ yrazy 3.1
Pˇ r´ıkazy expand, factor a gfactor
Pˇr´ıkazy expand, factor a gfactor vyuˇz´ıv´ame pˇri pr´aci s polynomy. Mˇejme jednoduch´ y v´ yraz ve tvaru souˇcinu. (%i1) a:(x^2+1)*(x-3)*(x+2)^2; (%o1)
( ) (x − 3) (x + 2)2 x2 + 1
Pˇr´ıkaz expand() rozn´asob´ı vˇsechny z´avorky. (%i2) expand(a); (%o2)
x5 + x4 − 7 x3 − 11 x2 − 8 x − 12
Pˇr´ıkaz factor() pˇrevede rozn´asoben´ y tvar opˇet na tvar souˇcinu koˇrenov´ ych ˇcinitel˚ u. (%i3) factor(%); (%o3)
( ) (x − 3) (x + 2)2 x2 + 1
D´ale m˚ uˇzeme pouˇz´ıt pˇr´ıkaz gfactor, kter´ y m´a stejnou funkci jako factor, pracuje vˇsak s oborem komplexn´ıch ˇc´ısel, a rozloˇz´ı tedy i z´avorku (x2 + 1). (%i4) gfactor(%); (%o4)
(x − 3) (x + 2)2 (x − %i) (x + %i)
´ ´ PRACE S VYRAZY
3.2
Pˇ r´ıkazy num, denom a partfrac
Jestliˇze pracujeme s v´ yrazy ve tvaru zlomku, m˚ uˇzeme pracovat zvl´aˇst’ s ˇcitatelem nebo jmenovatelem. Slouˇz´ı k tomu pˇr´ıkazy num (z anglick´eho numerator)a denom (z anglick´eho denominator). (%i1) v:((x+1)*(x+2))/((x^2+1)*(x-4)); (x + 1) (x + 2) (x − 4) (x2 + 1)
(%o1) (%i2) num(v); (%o2)
(x + 1) (x + 2)
(%i3) denom(v); ( ) (x − 4) x2 + 1
(%o3)
Tyto dva pˇr´ıkazy m˚ uˇzeme tak´e kombinovat s jin´ ymi. (%i4) expand(num(v)); x2 + 3 x + 2
(%o4) (%i5) gfactor(denom(v)); (%o5)
(x − 4) (x − %i) (x + %i)
Pˇri pr´aci s racion´aln´ımi funkcemi pouˇz´ıv´ame pˇr´ıkaz partfrac(), kter´ y rozloˇz´ı funkci (v naˇsem pˇr´ıpadˇe v´ yraz v) na parci´aln´ı zlomky. (%i6) partfrac(v,x);
(%o6)
13 x + 1 30 − 17 (x − 4) 17 (x2 + 1)
25
´ ´ PRACE S VYRAZY
3.3
Pˇ r´ıkazy rat, ratsimp a radcan
Pˇr´ıkazy rat, ratsimp a radcan slouˇz´ı ke zjednoduˇsov´an´ı v´ yraz˚ u. Pˇr´ıkaz rat zjednoduˇs´ı v´ yrazy, kter´e obsahuj´ı pouze z´akladn´ı operace. (%i1) p:(x^2-1)/((x+1)*(x+2)); x2 − 1 (x + 1) (x + 2)
(%o1) (%i2) rat(p);
x−1 x+2
(%o2)
Se sloˇzitˇejˇs´ımi v´ yrazy si porad´ı pˇr´ıkaz ratsimp. (%i3) q:sin(x/(x^2+x))=exp((log(x)+1)^2-log(x)^2); ( (%o3)
sin
x 2 x +x
) = %e(log x+1)
2
−log2 x
(%i4) ratsimp(q); ( (%o4)
sin
1 x+1
) = %e x2
Pˇr´ıkaz radcan m´a podobnou funkci, avˇsak um´ı zjednoduˇsit tak´e ˇc´asti v´ yrazu, kter´e obsahuj´ı exponenty, odmocniny nebo logaritmy. (%i5) r:a+b*x+3*(a+b*x)+log(a/2)+sqrt((a+b*x)^(-1)); √ (%o5)
(a) 1 + 3 (b x + a) + b x + log +a bx + a 2
(%i6) radcan(r);
(%o6)
√ b x + a (4 b x + log a + 4 a − log 2) + 1 √ bx + a
26
´ ´ PRACE S VYRAZY
3.4
Substituce
Substituce se zad´av´a pˇr´ıkazem subst(), kter´ y m´a tˇri povinn´e parametry. Je d˚ uleˇzit´e dodrˇzovat urˇcit´e poˇrad´ı. Pod´ıvejme se na rozd´ıl v substituc´ıch ve v´ yrazu 2 y 2 + y + (x + 1)2 . (%i1) subst(x+1,y,2*y^2+y+(x+1)^2); (%o1)
3 (x + 1)2 + x + 1
(%i2) subst(y,x+1,2*y^2+y+(x+1)^2); (%o2)
3 y2 + y
V prvn´ım pˇr´ıpadˇe jsme nahradili promˇennou y v´ yrazem x + 1, ve druh´em pˇr´ıpadˇe naopak. M˚ uˇzeme tak´e pouˇz´ıt jin´ y zp˚ usob z´apisu substituce. Ukaˇzme si z´apis ekvivalntn´ı k prvn´ımu pˇr´ıkladu. (%i3) subst(y=x+1,2*y^2+y+(x+1)^2); (%o3)
3 (x + 1)2 + x + 1
Chceme-li, aby program provedl jednu substituci a ve v´ ysledku dalˇs´ı substituci, pouˇzijeme tzv. posloupnost substituc´ı. Substituce p´ıˇseme do hranat´ ych z´avorek a oddˇel´ıme je ˇc´arkou. V tomto pˇr´ıpadˇe lze pouˇz´ıt pouze z´apis s rovn´ıtkem. M˚ uˇzeme samozˇrejmˇe prov´adˇet i v´ıce neˇz dvˇe substituce za sebou. (%i4) subst([y=x+1,(x+1)^2=z],2*y^2+y+(x+1)^2); (%o4)
3z + x + 1
Nyn´ı si uk´aˇzeme dalˇs´ı druh substituce. Vezmˇeme si v´ yraz 3 (x + 1)2 + x + 1 a zkusme nahradit x + 1 promˇennou y. (%i5) subst(x+1=y,3*(x+1)^2+x+1); (%o5)
3 y2 + x + 1
V tomto pˇr´ıpadˇe n´am pˇr´ıkaz subst nepomohl, protoˇze konec v´ yrazu nenahradil, pˇrestoˇze se v nˇem vyskytuje x+1. K substituci tohoto v´ yrazu proto pouˇzijeme pˇr´ıkaz ratsubst, kter´ y si vˇs´ım´a matematick´eho v´ yznamu v´ yrazu, a proto nahrad´ı i tuto ˇc´ast. V pˇr´ıpadˇe ratsubst lze pouˇz´ıt pouze jeden zp˚ usob z´apisu. 27
´ ´ PRACE S VYRAZY
(%i6) ratsubst(y,x+1,3*(x+1)^2+x+1); (%o6)
3 y2 + y
Posledn´ım druhem substituce, kter´ y si uk´aˇzeme, je substituce za oper´atory. K tomuto u ´ˇcelu n´am slouˇz´ı pˇr´ıkaz opsubst. Tuto funkci mus´ıme nejprve naˇc´ıst zad´an´ım pˇr´ıkazu load("opsubst"). (%i7) load("opsubst"); (%o7) "C:/PROGRA~1/MAXIMA~1.1/share/maxima/5.22.1/share/contrib/ opsubst.lisp" (%i8) opsubst(g,f,f(x)); (%o8)
g (x)
28
FUNKCE
29
Kapitola 4 Funkce N´asleduj´ıc´ı kapitola popisuje, jak se v programu Maxima definuj´ı funkce a jak´e operace u nich m˚ uˇzeme pouˇz´ıt. Uvedeme si tak´e z´apisy nˇekolika ˇcasto pouˇz´ıvan´ ych funkc´ı.
4.1
Definov´ an´ı funkc´ı
Pro definov´an´ı funkc´ı pouˇz´ıv´ame oper´ator :=. Pˇri zad´av´an´ı mus´ıme do z´avorky uv´est vˇzdy n´azev promˇenn´e, popˇr. promˇenn´ ych, pokud zad´av´ame funkci dvou nebo v´ıce promˇenn´ ych. (%i1) f(x):=x^2+3; (%o1)
f (x) := x2 + 3
Funkˇcn´ı hodnoty se poˇc´ıtaj´ı velmi jednoduˇse, zde vid´ıme funkˇcn´ı hodnotu pro x = 1. (%i2) f(1); (%o2)
4
Funkci je moˇzn´e zadat tak´e tak, ˇze nadefinujeme, jak se bude funkce chovat v jednotliv´ ych bodech nebo intervalech. Pouˇz´ıv´ame k tomu vˇetven´ı if then, elseif then a else. (%i3) g(x):=if x<0 then -1 elseif x>1 then 1 else 0$ Funkce g(x) je definov´ana tak, ˇze jestliˇze x < 0, pak g(x) = −1, jestliˇze x > 1, pak g(x) = 1 a ve vˇsech ostatn´ıch bodech g(x) = 0. Pro kontrolu vypoˇc´ıt´ame nˇekter´e funkˇcn´ı hodnoty.
FUNKCE
(%i4) g(0); (%o4)
0
(%i5) g(1); (%o5)
0
(%i6) g(-2); −1
(%o6) (%i7) g(6/5); (%o7)
4.2
1
Funkˇ cn´ı operace
Funkce m˚ uˇzeme sˇc´ıtat, odˇc´ıtat, n´asobit, dˇelit a tak´e skl´adat. Vˇsechny tyto operace zad´av´ame obvykl´ ymi pˇr´ıkazy, a nen´ı tedy nutn´e tuto ˇca´st rozs´ahle popisovat. Uved’me si pouze jeden pˇr´ıklad na kaˇzd´ y pˇr´ıkaz. (%i1) f(x):=x^2+x-2; (%o1)
f (x) := x2 + x − 2
(%i2) g(x):=x-1; (%o2)
g (x) := x − 1
(%i3) f(x)+g(x); (%o3)
x2 + 2 x − 3
(%i4) f(x)-g(x); (%o4)
x2 − 1 30
FUNKCE
(%i5) f(x)*g(x); ( ) (x − 1) x2 + x − 2
(%o5) (%i6) f(x)/g(x);
x2 + x − 2 x−1
(%o6) (%i7) f(g(x));
x + (x − 1)2 − 3
(%o7)
4.3
Exponenci´ aln´ı a logaritmick´ a funkce
Exponenci´aln´ı funkci zad´av´ame pomoc´ı pˇr´ıkazu exp(), pˇr´ıpadnˇe m˚ uˇzeme pouˇz´ıt konstantu e. (%i1) f(x):=exp(x^3+2); (%o1)
( ) f (x) := exp x3 + 2
(%i2) g(x):=%e^(x^3+2); (%o2)
g (x) := %ex
3 +2
Logaritmickou funkci zad´av´ame netradiˇcnˇe pˇr´ıkazem log(), nikoliv ln(). Tento zp˚ usob z´apisu se m˚ uˇze pl´est s dekadick´ ym logaritmem, avˇsak pro jin´ y neˇz pˇrirozen´ y logaritmus Maxima nem´a pˇr´ıkaz. (%i3) h(x):=log(x); (%o3)
h (x) := log (x)
Zda se opravdu jedn´a o pˇrirozen´ y logaritmus, m˚ uˇzeme ovˇeˇrit zjiˇstˇen´ım funkˇcn´ı hodnoty pro konstantu e, kter´a mus´ı b´ yt rovna 1. (%i4) h(%e); (%o4)
1
Pokud bychom pˇrece jen chtˇeli poˇc´ıtat s dekadick´ ym logaritmem, pouˇzijeme log(x) definici log10 (x) = log(10) . 31
FUNKCE
4.4
Goniometrick´ e a cyklometrick´ e funkce
Funkce sinus a cosinus zad´av´ame podle oˇcek´av´an´ı sin() a cos(). Z´apis funkc´ı tangens a cotangens se trochu liˇs´ı od bˇeˇzn´eho z´apisu, zad´av´ame je pˇr´ıkazy tan() a cot(). Jestliˇze zn´ame tyto z´apisy, m˚ uˇzeme jednoduˇse odvodit z´apis cyklometrick´ ych funkc´ı, tedy funkc´ı inverzn´ıch ke goniometrick´ ym. Tvary tˇechto funkc´ı jsou n´asleduj´ıc´ı - asin(), acos(), atan() a acot(). Ukaˇzme si pˇr´ıklad pro funkce tan() a atan(). (%i1) tan(%pi/4); (%o1)
1
(%i2) atan(1); (%o2)
π 4
32
ˇ SEN ˇ ´I ROVNIC A JEJICH SOUSTAV RE
33
Kapitola 5 ˇ sen´ı rovnic a jejich soustav Reˇ V t´eto kapitole si pop´ıˇseme pˇr´ıkazy, pomoc´ı kter´ ych ˇreˇs´ıme rovnice a jejich soustavy. Pˇr´ıkaz˚ u existuje samozˇrejmˇe v´ıce, my si vˇsak uvedeme pouze tˇri z nich.
5.1
Pˇ r´ıkaz solve
Pˇr´ıkazem solve() ˇreˇs´ıme rovnice i jejich soustavy. V pˇr´ıpadˇe jedn´e rovnice p´ıˇseme solve(rovnice, promˇ enn´ a). Parametr promˇenn´a nemus´ıme uv´adˇet, pokud rovnice obsahuje pouze jednu promˇennou. Jestliˇze m´ısto rovnice nap´ıˇseme jen v´ yraz, program bude pˇredpokl´adat, ˇze chceme spoˇc´ıtat rovnici, kde je zadan´ y v´ yraz roven nule. N´asleduj´ıc´ı dva pˇr´ıklady jsou dva r˚ uzn´e zp˚ usoby z´apisu t´eˇze rovnice. (%i1) solve(x+2=0,x); (%o1)
[x = −2]
(%i2) solve(x+2); (%o2)
[x = −2]
Nyn´ı si uk´aˇzeme pˇr´ıklad s funkc´ı sin(x). (%i3) solve(sin(x)=0,x); solve: using arc-trig functions to get a solution. Some solutions will be lost. (%o3)
[x = 0]
ˇ SEN ˇ ´I ROVNIC A JEJICH SOUSTAV RE
V tomto pˇr´ıpadˇe n´as program upozornil, ˇze nˇekter´a ˇreˇsen´ı budou ztracena“. Tato ” rovnice m´a samozˇrejmˇe nekoneˇcnˇe mnoho ˇreˇsen´ı. Pˇriˇcten´ım k-n´asobku konstanty π z´ısk´ame dalˇs´ı ˇreˇsen´ı. Maxima vˇsak zobrazuje pouze jedno z nich. Jestliˇze chceme zadat soustavu rovnic, p´ıˇseme solve([rovnice 1,...,rovnice n],[promˇ enn´ a 1,...,promˇ enn´ a n]). (%i4) solve([y^2+x=1,x-2=3],[y,x]); (%o4)
5.2
[[y = −2 %i, x = 5], [y = 2 %i, x = 5]]
Pˇ r´ıkaz linsolve
Pˇr´ıkaz linsolve() slouˇz´ı pro ˇreˇsen´ı line´arn´ıch rovnic a jejich soustav. (%i1) linsolve([y^2+x=1,x-2=3],[y,x]); (%o1)
[]
Zadali jsme soustavu z pˇredch´azej´ıc´ıho pˇr´ıkladu, prvn´ı rovnice vˇsak nebyla line´arn´ı, a tud´ıˇz jsme neobdrˇzeli ˇz´adn´ y v´ ysledek. Nyn´ı zmˇen´ıme prvn´ı rovnici na line´arn´ı. (%i2) linsolve([y+x=1,x-2=3],[y,x]); (%o2)
[y = −4, x = 5]
V tomto pˇr´ıpadˇe jsme jiˇz soustavu pomoc´ı linsolve vyˇreˇsili.
5.3
Pˇ r´ıkaz find root
Pˇr´ıkaz find root() slouˇz´ı pro pˇribliˇzn´e ˇreˇsen´ı rovnic - zobraz´ı v´ ysledek ve formˇe desetinn´eho ˇc´ısla. Pˇr´ıkaz m´a ˇctyˇri povinn´e parametry. Prvn´ı dva urˇcuj´ı rovnici a promˇennou stejnˇe jako u pˇredchoz´ıch pˇr´ıkaz˚ u a dalˇs´ı dva argumenty urˇcuj´ı interval, na kter´em se rovnice ˇreˇs´ı. Pomoc´ı tohoto pˇr´ıkazu m˚ uˇzeme vyˇreˇsit napˇr´ıklad x rovnici cos(x) = 2 na intervalu ⟨0, π⟩. (%i1) find_root(cos(x)=x/2,x,0,%pi); (%o1)
1.029866529322259
34
MATICE
35
Kapitola 6 Matice Tato kapitola se zab´ yv´a maticovou algebrou. Uk´aˇzeme si, jak se matice vytv´aˇrej´ı, jak´e operace u nich m˚ uˇzeme pouˇz´ıt, a d´ale tak´e uvid´ıme, jak se zjiˇst’uje determinant, hodnost, transponovan´a matice a inverzn´ı matice.
6.1
Vytv´ aˇ ren´ı matic
Pro vytvoˇren´ı matice pouˇz´ıv´ame pˇr´ıkaz matrix([],[],...,[]), pˇriˇcemˇz v hranat´ ych z´avork´ach vypisujeme jednotliv´e ˇr´adky matice. Matici a b c d e f tedy zad´ame t´ımto zp˚ usobem: (%i1) A:matrix([a,b],[c,d],[e,f]); a b c d e f
(%o1)
6.2
Operace s maticemi
Matice m˚ uˇzeme sˇc´ıtat a odˇc´ıtat velmi jednoduˇse, samozˇrejmˇe je nutn´e m´ıt matice stejn´ ych rozmˇer˚ u. (%i1) A:matrix([2,a],[-1,-2*b]); ( (%o1)
2 a −1 −2 b
)
MATICE
(%i2) B:matrix([3*a,2],[1-b,1]); (
3a 2 1−b 1
(%o2)
)
(%i3) A+B; ( ) 3a + 2 a + 2 −b 1 − 2b
(%o3) (%i4) A-B;
( ) 2 − 3a a−2 b − 2 −2 b − 1
(%o4)
N´asoben´ı matic jiˇz nen´ı tak jednoduch´e, nebot’ zde existuj´ı dva r˚ uzn´e druhy n´asoben´ı - pomoc´ı znak˚ u . a ∗. (%i5) A.B; ( (%o5)
a (1 − b) + 6 a a+4 −2 (1 − b) b − 3 a −2 b − 2
)
(%i6) A*B; ( (%o6)
6a 2a b − 1 −2 b
)
Vid´ıme, ˇze n´asoben´ı s pouˇzit´ım teˇcky je obvykl´e n´asoben´ı matic, kdy n´asob´ıme jednotliv´e ˇra´dky a sloupce, zat´ımco pouˇzit´ım hvˇezdiˇcky pouze vyn´asob´ıme prvky na odpov´ıdaj´ıc´ıch si pozic´ıch. Ukaˇzme si jeˇstˇe jeden pˇr´ıklad. (%i7) C:matrix([1,b],[3,c-1],[2*a,-3]); (%o7)
1 b 3 c − 1 2 a −3
(%i8) D:matrix([2,c-3,4],[b+1,2,a]);
36
MATICE (
2 c−3 4 b+1 2 a
(%o8)
)
(%i9) C*D; fullmap: arguments must have same formal structure. -- an error. To debug this try: debugmode(true); U tˇechto matic nen´ı moˇzn´e n´asobit pouze jednotliv´e prvky, jelikoˇz matice nejsou stejn´eho typu. M˚ uˇzeme je vˇsak n´asobit pomoc´ı teˇcky, protoˇze matice C je typu 3 × 2 a matice D typu 2 × 3. (%i10) C.D;
b (b + 1) + 2 c + 2b − 3 ab + 4 (b + 1) (c − 1) + 6 2 (c − 1) + 3 (c − 3) a (c − 1) + 12 4 a − 3 (b + 1) 2 a (c − 3) − 6 5a
(%o10)
Dˇelen´ı matic prov´ad´ıme pouze u matic stejn´eho typu, kde se opˇet dˇel´ı prvky na stejn´ ych pozic´ıch. (%i11) A/B; (
2 3a 1 − 1−b
(%o11)
6.3
a 2
)
−2 b
Determinant
Pro v´ ypoˇcet determinantu ˇctvercov´ ych matic pouˇz´ıv´ame pˇr´ıkaz determinant(). (%i1) determinant(A); (%o1)
a − 4b
(%i2) determinant(D); determinant: matrix must be square; found 2 rows, 3 columns. -- an error. To debug this try: debugmode(true); V pˇr´ıpadˇe matice D n´as program upozornil, ˇze jsme pouˇzili pˇr´ıkaz na matici, kter´a nen´ı ˇctvercov´a, a nelze tedy vypoˇc´ıtat jej´ı determinant.
37
MATICE
6.4
Hodnost matice
Hodnost matice zjist´ıme zad´an´ım pˇr´ıkazu rank(). (%i1) rank(A); (%o1)
2
(%i2) rank(C); (%o2)
6.5
2
Transponovan´ a a inverzn´ı matice
Pro transponov´an´ı matic pouˇz´ıv´ame pˇr´ıkaz transpose(). Inverzn´ı matici z´ısk´ame pomoc´ı pˇr´ıkazu invert(). (%i1) transpose(B); ) ( 3a 1 − b 2 1
(%o1) (%i2) invert(B); ( (%o2)
1 2 (b−1)+3 a b−1 2 (b−1)+3 a
2 − 2 (b−1)+3 a
)
3a 2 (b−1)+3 a
(%i3) transpose(D); (%o3)
2 b+1 c − 3 2 4 a
(%i4) invert(D); determinant: matrix must be square; found 1 rows, 2 columns. -- an error. To debug this try: debugmode(true); Inverzn´ı matici jsme, podobnˇe jako u determinantu, nemohli z´ıskat z matice, kter´a nen´ı ˇctvercov´a. 38
TVORBA GRAF˚ U
39
Kapitola 7 Tvorba graf˚ u V n´asleduj´ıc´ı kapitole se budeme vˇenovat tvorbˇe 2D a 3D graf˚ u. Uvedeme si pˇr´ıkazy, kter´e se k tomuto u ´ˇcelu pouˇz´ıvaj´ı a zamˇeˇr´ıme se tak´e na ˇreˇsen´ı nˇekter´ ych probl´em˚ u, na kter´e zde m˚ uˇzeme narazit.
7.1
2D grafy
2D grafy zobrazujeme pomoc´ı pˇr´ıkaz˚ u plot2d() nebo wxplot2d(). Tyto dva pˇr´ıkazy pln´ı stejnou funkci; rozd´ıl je pouze v tom, ˇze pˇr´ıkaz plot2d uk´aˇze graf funkce v nov´em oknˇe, wxplot2d (pouˇziteln´ y pouze pro grafickou nadstavbu wxmaxima) graf zobraz´ı pˇr´ımo pod pˇr´ıkaz. D´ale budeme pouˇz´ıvat pouze pˇr´ıkaz plot2d. Abychom mohli zobrazit graf funkce, mus´ıme uv´est nejm´enˇe dva parametry. Prvn´ı parametr ˇr´ık´a, kterou funkci chceme zobrazit, a druh´ y definuje interval na ose x, na kter´em bude funkce zobrazena. (%i1) plot2d(x^2,[x,-2,2]); 4 3.5 3
x2
2.5 2 1.5 1 0.5 0 -2
-1.5
-1
-0.5
0 x
0.5
1
1.5
2
Obr´azek 7.1: Graf funkce f (x) = x2 Je vˇsak vhodn´e uv´adˇet jeˇstˇe tˇret´ı parametr, a to interval osy y, na kter´em
TVORBA GRAF˚ U
chceme funkci zobrazit. Jestliˇze jej neuvedeme, program vybere interval s´am podle funkˇcn´ıch hodnot. Pod´ıvejme se na graf funkce tg x. (%i2) plot2d(tan(x),[x,-%pi,%pi]); 2e+016 1.5e+016 1e+016
tan(x)
5e+015 0 -5e+015 -1e+016 -1.5e+016 -2e+016 -3
-2
-1
0 x
1
2
3
Obr´azek 7.2: Graf funkce f (x) = tg x Funkce tg x se v nˇekter´ ych bodech bl´ıˇz´ı nekoneˇcnu, a program tedy zobrazil graf na pˇr´ıliˇs velk´em intervalu osy y. Z takov´eho grafu nelze nic vyˇc´ıst. Proto pˇrid´ame parametr s mezemi intervalu na ose y. (%i3) plot2d(tan(x),[x,-%pi,%pi],[y,-5,5]);
4
tan(x)
2
0
-2
-4
-3
-2
-1
0 x
1
2
3
Obr´azek 7.3: Graf funkce f (x) = tg x upraven´ y Nyn´ı m˚ uˇzeme dobˇre vidˇet pr˚ ubˇeh funkce tg x na intervalu (−π, π). Ukaˇzme si jeˇstˇe jeden pˇr´ıklad. (%i4) plot2d(x+sin(2*%pi*x),[x,-200,200]);
40
TVORBA GRAF˚ U
250 200 150
sin(2*%pi*x)+x
100 50 0 -50 -100 -150 -200 -250 -200
-150
-100
-50
0 x
50
100
150
200
Obr´azek 7.4: Pˇr´ıliˇs velk´ y interval Na prvn´ı pohled se zd´a, ˇze pr˚ ubˇeh t´eto funkce vid´ıme velmi dobˇre. Nen´ı tomu tak. Jakmile zmenˇs´ıme interval na (−10, 10), nastane velk´a zmˇena. (%i5) plot2d(x+sin(2*%pi*x),[x,-10,10]); 15
10
sin(2*%pi*x)+x
5
0
-5
-10
-15 -10
-5
0 x
5
10
Obr´azek 7.5: Vhodn´ y interval Na tomto grafu vid´ıme vlnky, kter´e byly v pˇredchoz´ım pˇr´ıpadˇe mal´e a nahuˇstˇen´e vedle sebe tak, ˇze splynuly v pˇr´ımku. Funkce m˚ uˇzeme zad´avat tak´e parametricky pˇr´ıkazem plot2d([parametric]). Zkus´ıme zobrazit kruˇznici. (%i6) plot2d([parametric,cos(t),sin(t),[t,-%pi,%pi]], [x,-1.3,1.3]);
41
TVORBA GRAF˚ U
1
sin(t)
0.5
0
-0.5
-1 -1
-0.5
0 cos(t)
0.5
1
Obr´azek 7.6: Kruˇznice 1 V tomto grafu se kruˇznice zd´a b´ yt trochu kostrbat´a“. Tuto vadu odstran´ıme ” pˇrid´an´ım referenˇcn´ıch bod˚ u. Implicitnˇe je nastaveno 29 bod˚ u, kter´e program vyhodnot´ı a pot´e je spoj´ı. Pomoc´ı parametru nticks nyn´ı nastav´ıme 500 referenˇcn´ıch bod˚ u. (%i7) plot2d([parametric,cos(t),sin(t),[t,-%pi,%pi]], [x,-1.3,1.3],[nticks,500]); 1 0.8 0.6 0.4
sin(t)
0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1
-0.5
0 cos(t)
0.5
1
Obr´azek 7.7: Kruˇznice 2 Nyn´ı je kostrbatost odstranˇena. St´ale vˇsak nem´ame kruˇznici. Program si s´am upravuje mˇeˇr´ıtko os, a proto m´ısto kruˇznice dost´av´ame elipsu. I kdybychom zadali na ose x a y stejn´ y interval, bude interval osy x na v´ ystupu delˇs´ı. V n´asleduj´ıc´ım pˇr´ıkladˇe je uk´az´ano, jak´ ym zp˚ usobem uprav´ıme mˇeˇr´ıtka na os´ach. (%i8) plot2d([parametric,cos(t),sin(t),[t,-%pi,%pi]], [x,-1.3,1.3],[y,-1.3,1.3],[nticks,500], [gnuplot_preamble,"set size ratio 1"]);
42
TVORBA GRAF˚ U
1
sin(t)
0.5
0
-0.5
-1
-1
-0.5
0 cos(t)
0.5
1
Obr´azek 7.8: Kruˇznice 3
7.2
3D grafy
Tvorba 3D graf˚ u je obdobou tvorby 2D graf˚ u, a proto uvedeme jen nˇekolik pˇr´ıklad˚ u. Pro zobrazen´ı 3D graf˚ u pouˇz´ıv´ame pˇr´ıkazy plot3d() a wxplot3d(). V tomto pˇr´ıpadˇe mus´ıme zadat tˇri povinn´e parametry - funkci, interval na ose x a interval na ose y. (%i1) plot3d(x^2*y^2,[x,-5,5],[y,-5,5]); x2*y2
700 600 500 400 300 200 100 0
700 600 500 400 300 200 100 0 6 4 -6
2 -4
0 -2
0
-2 2
4
-4 6 -6
Obr´azek 7.9: Graf funkce f (x, y) = x2 y 2 Podobnou funkci jako parametr nticks u 2D graf˚ u pln´ı u 3D graf˚ u parametr grid, kter´ ym zad´ame mnoˇzstv´ı referenˇcn´ıch bod˚ u pro osu x a y. Implicitnˇe je nastaveno 30 bod˚ u na kaˇzd´e ose. Nˇekdy je vˇsak vhodn´e poˇcet bod˚ u zv´ yˇsit. Ukaˇzme si rozd´ıl na n´asleduj´ıc´ı funkci. (%i2) plot3d(sin(x)*sin(y),[x,-5,5],[y,-5,5]);
43
TVORBA GRAF˚ U
sin(x)*sin(y)
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 6 4 -6
2 -4
0 -2
0
-2 2
4
-4 6 -6
Obr´azek 7.10: Funkce bez parametru grid (%i3) plot3d(sin(x)*sin(y),[x,-5,5],[y,-5,5],[grid,70,70]); sin(x)*sin(y)
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 6 4 -6
2 -4
0 -2
0
-2 2
4
-4 6 -6
Obr´azek 7.11: Funkce s parametrem grid
7.3
Uloˇ zen´ı grafu do souboru
2D i 3D grafy m˚ uˇzeme ukl´adat do postscriptov´eho souboru. U pˇr´ıkazu plot2D nebo plot3D nejprve nastav´ıme form´at PS parametrem [gnuplot term, ps] a n´aslednˇe urˇc´ıme m´ısto, kam v´ ystupn´ı soubor chceme uloˇzit pomoc´ı parametru [gnuplot out file,".../jmenosouboru.eps"]. (%i1) plot3d(sin(x)*sin(y), [x,-5,5], [y,-5,5],[grid,70,70], [gnuplot_term, ps], [gnuplot_out_file, "C:/Documents and Settings/Admin/ Dokumenty/graf.eps"])$
44
´ ANALYZA ´ MATEMATICKA
45
Kapitola 8 Matematick´ a anal´ yza N´asleduj´ıc´ı kapitola se bude zab´ yvat vyuˇzit´ım programu Maxima pˇri v´ yuce matematick´e anal´ yzy. Pop´ıˇseme si pˇr´ıkazy t´ ykaj´ıc´ı se v´ ypoˇctu limit, derivac´ı, integr´al˚ u, Taylorova polynomu a pr˚ ubˇehu funkce. M´ısto zad´av´an´ı pˇr´ıkaz˚ u m˚ uˇzeme pouˇz´ıt poloˇzky v z´aloˇzce Anal´ yza hlavn´ıho menu (viz obr. 8.1), my vˇsak budeme pracovat pˇr´ımo s jednotliv´ ymi pˇr´ıkazy. Na pˇr´ıkladech si tak´e uk´aˇzeme vyuˇzit´ı nˇekter´ ych pˇr´ıkaz˚ u z pˇredchoz´ıch kapitol. Vˇetˇsina zad´an´ı pˇr´ıklad˚ u t´eto kapitoly byla pˇrevzata z knihy [2].
Obr´azek 8.1: Z´aloˇzka Anal´ yza
´ ANALYZA ´ MATEMATICKA
8.1
Limity
V programu Maxima pouˇz´ıv´ame k v´ ypoˇctu limit pˇr´ıkaz limit() se tˇremi povinn´ ymi argumenty. Prvn´ı argument je funkce, jej´ıˇz limitu poˇc´ıt´ame, druh´ y argument je promˇenn´a a tˇret´ı argument je bod, ke kter´emu se funkce bl´ıˇz´ı. Vypoˇc´ıtejme limitu x2 − 1 lim . x→1 2 x2 − x − 1 (%i1) limit((x^2-1)/(2*x^2-x-1), x, 1); 2 3
(%o1)
Je nutn´e d´avat pozor na v´ ysledek n´asleduj´ıc´ıho pˇr´ıkladu. (%i3) limit((x^2+1)/(x+1),x,-1); (%o3)
inf inity
Na prvn´ı pohled se zd´a, ˇze limita je rovna nekoneˇcnu (infinity=nekoneˇcno), avˇsak nen´ı tomu tak. T´ımto v´ ystupem Maxima oznamuje, ˇze dan´a limita neexistuje. Pokud by byla rovna nekoneˇcnu, dostali bychom v´ ysledek ∞. Spr´avnost v´ ysledku m˚ uˇzeme jednoduˇse ovˇeˇrit porovn´an´ım jednostrann´ ych limit. Limitu zleva, resp. zprava, najdeme pˇrid´an´ım voliteln´eho argumentu minus, resp. plus. (%i4) limit((x^2+1)/(x+1),x,-1,minus); −∞
(%o4)
(%i5) limit((x^2+1)/(x+1),x,-1,plus); ∞
(%o5)
Jednostrann´e limity jsou r˚ uzn´e, oboustrann´a limita tedy nem˚ uˇze existovat.
8.2
Derivace
Pro v´ ypoˇcet vyuˇzijeme pˇr´ıkazu diff() se dvˇema argumenty. Prvn´ı argument n´am ud´av´a funkci, jej´ıˇz derivaci poˇc´ıt´ame, druh´ y argument je promˇenn´a, podle kter´e 2 derivujeme. Vypoˇc´ıtejme derivaci funkce y = 1+x−x . 1−x+x2 46
´ ANALYZA ´ MATEMATICKA
(%i1) diff((2*x)/(1-x^2),x);
(%o1)
4 x2 2 + 1 − x2 (1 − x2 )2
Vid´ıme, ˇze v´ ysledek lze pˇrev´est na spoleˇcn´ y jmenovatel, proto jej uprav´ıme, napˇr´ıklad takto: (%i2) subst(z,1-x^2,%);
(%o2)
2 4 x2 + 2 z z
(%i3) factor(%);
(%o3)
2 (z + 2 x2 ) z2
(%i4) subst(1-x^2,z,%);
(%o4)
2 (x2 + 1) (1 − x2 )2
Nyn´ı si uk´aˇzeme v´ ypoˇcet derivace druh´eho ˇra´du funkce y = x ln x. Tuto derivaci m˚ uˇzeme spoˇc´ıtat dvˇema n´asleduj´ıc´ımi zp˚ usoby: (%i5) diff(diff(x*log(x),x),x);
(%o5)
1 x
(%i6) diff(x*log(x),x,2);
(%o6)
1 x
Vid´ıme, ˇze v´ yhodnˇejˇs´ı je druh´a varianta, kde jsme pˇridali voliteln´ y argument 2. Obzvl´aˇstˇe u derivac´ı ˇra´du 3 a v´ yˇse by bylo nepraktick´e opakovanˇe opisovat pˇr´ıkaz diff se vˇsemi z´avorkami. Na dalˇs´ım pˇr´ıkladˇe si uk´aˇzeme, jak se v programu Maxima poˇc´ıtaj´ı derivace parci´aln´ı. Vezmˇeme funkci x u(x, y) = xy + y a vypoˇc´ıtejme parci´aln´ı derivace prvn´ıho a druh´eho ˇra´du. 47
´ ANALYZA ´ MATEMATICKA
(%i7) u(x,y):=x*y+x/y;
(%o7)
u (x, y) := x y +
x y
(%i8) diff(u(x,y),x);
(%o8)
y+
1 y
x−
x y2
∂2u ∂x2
a
(%i9) diff(u(x,y),y);
(%o9) Abychom spoˇc´ıtali parci´an´ı derivace ment 2.
∂2u , ∂y 2
staˇc´ı opˇet pˇridat voliteln´ y argu-
(%i10) diff(u(x,y),x,2); (%o10)
0
(%i11) diff(u(x,y),y,2);
(%o11)
2x y3
Na z´avˇer spoˇc´ıt´ame sm´ıˇsenou parci´aln´ı derivaci zp˚ usoby z´apisu. (%i12) diff(diff(u(x,y),x),y);
(%o12)
1−
1 y2
1−
1 y2
(%i13) diff(u(x,y),x,1,y,1);
(%o13)
48
∂2u . ∂x∂y
Opˇet je moˇzno pouˇz´ıt dva
´ ANALYZA ´ MATEMATICKA
8.3
Integr´ aly
Nyn´ı se budeme vˇenovat v´ ypoˇct˚ um neurˇcit´ ych a urˇcit´ ych integr´al˚ u. K v´ ypoˇctu neurˇcit´ ych integr´ u slouˇz´ı pˇr´ıkaz integrate(funkce,promˇ enn´ a). Jako pˇr´ıklad ∫al˚ ex uved’me integr´al 2+e dx. x (%i1) integrate((%e^x)/(2+%e^x),x); (%o1)
log (%ex + 2)
V pˇr´ıpadˇe urˇcit´ ych integr´al˚ u pouˇzijeme stejn´ y zp˚ usob, pouze pˇrid´ame dva argumenty, kter´e ∫ud´avaj´ı pˇr´ısluˇsn´ y interval, na nˇemˇz integr´al poˇc´ıt´ame. Vypoˇctˇeme 1 1 urˇcit´ y integr´al −1 √1−x 2 dx. (%i2) integrate(1/sqrt(1-x^2),x,-1,1); (%o2)
π
V nˇekter´ ych pˇr´ıpadech Maxima pouˇz´ıv´a ve v´ ysledku funkci erf (z anglick´eho error function). Tato funkce je definov´ana takto: ∫ z 2 2 erf (z) = √ e−t dt π 0 Jestliˇze obdrˇz´ıme v´ ystup obsahuj´ıc´ı funkci erf, mus´ıme vypoˇc´ıtat v´ ysledek jin´ ym ’ zp˚ usobem. M˚ uˇzeme pouˇz´ıt bud pˇr´ıkaz float nebo pˇr´ıkaz pro numerick´e integrov´an´ı romberg. (%i3) integrate(%e^(-x^2),x,1,3); √ √ π erf (3) π erf (1) − 2 2 (%i4) float(%); (%o4)
0.13938321544709
(%i5) romberg(%e^(-x^2),x,1,3); (%o5)
0.13938329641992
49
´ ANALYZA ´ MATEMATICKA
8.4
Taylor˚ uv polynom
K v´ ypoˇctu Taylorova polynomu pouˇz´ıv´ame pˇr´ıkaz taylor() se ˇctyˇrmi argumenty. Prvn´ı z nich je zadan´a funkce, n´asleduje promˇenn´a, pot´e stˇred a nakonec stupeˇ n polynomu. Urˇc´ıme Taylor˚ uv polynom stupnˇe 6 se stˇredem v bodˇe 0 pro funkci f (x) = ln
sin x . x
(%i1) taylor(log(sin(x)/x),x,0,6);
−
(%o1)
x2 x4 x6 − − + ··· 6 180 2835
Na konci v´ ysledku Maxima vˇzdy zobrazuje tˇri teˇcky, coˇz m˚ uˇze vyvolat dojem, ˇze se jedn´a o nekoneˇcnou ˇradu. Pomoc´ı pˇr´ıkazu expand se pˇresvˇedˇc´ıme, ˇze se skuteˇcnˇe jedn´a o polynom. (%i2) expand(%); x4 x2 x6 − − 2835 180 6
(%o2)
−
8.5
Vyˇ setˇ rov´ an´ı pr˚ ubˇ ehu funkce
Vyˇsetˇrov´an´ı pr˚ ubˇehu funkce patˇr´ı mezi jednu z nejd˚ uleˇzitˇejˇs´ıch u ´loh matematick´e anal´ yzy, kter´e ˇreˇs´ı studenti na vysok´ ych ˇskol´ach, proto se tomuto t´ematu budeme vˇenovat trochu podrobnˇeji. Vyˇsetˇreme pr˚ ubˇeh funkce f (x) =
x2 (x − 1) . (x + 1)2
(%i1) f(x):=(x^2*(x-1))/(x+1)^2;
(%o1)
f (x) :=
x2 (x − 1) (x + 1)2
Definiˇ cn´ı obor Urˇc´ıme definiˇcn´ı obor funkce. Zadan´a funkce je ve tvaru zlomku, a proto mus´ıme vylouˇcit body, v nichˇz je jmenovatel roven nule. (%i2) j:denom(f(x)); 50
´ ANALYZA ´ MATEMATICKA (x + 1)2
(%o2) (%i3) solve(j=0);
[x = −1]
(%o3)
Vid´ıme, ˇze bod x = −1 nepatˇr´ı do definiˇcn´ıho oboru.
Pr˚ useˇ c´ıky se souˇ radnicov´ ymi osami D´ale najdeme pr˚ useˇc´ıky grafu funkce se souˇradnicov´ ymi osami. Abychom nalezli pr˚ useˇc´ıky s osou x, poloˇz´ıme f (x) = 0. (%i4) solve(f(x)=0); (%o4)
[x = 0, x = 1]
Pr˚ useˇc´ıky s osou y z´ısk´ame dosazen´ım 0 za promˇennou x. (%i5) f(0); (%o5)
0
Lok´ aln´ı extr´ emy Nyn´ı urˇc´ıme stacion´arn´ı body funkce, tzn. body, v nichˇz je prvn´ı derivace funkce rovna nule. V tˇechto bodech m˚ uˇze funkce nab´ yvat lok´aln´ıch extr´em˚ u. Spoˇc´ıt´ame tedy nejprve prvn´ı derivaci funkce f (x). (%i6) d1:diff(f(x),x);
(%o6)
x2 2 (x − 1) x 2 (x − 1) x2 + − (x + 1)2 (x + 1)2 (x + 1)3
Z´ıskan´ y v´ ysledek zjednoduˇs´ıme (nen´ı to vˇsak nutn´e). (%i7) factor(d1);
(%o7)
x (x2 + 3 x − 2) (x + 1)3
Nyn´ı derivaci poloˇz´ıme rovnu nule. 51
´ ANALYZA ´ MATEMATICKA
(%i8) solve(d1=0); √ √ 17 + 3 17 − 3 [x = − ,x = , x = 0] 2 2
(%o8)
Vid´ıme, ˇze existuj´ı tˇri stacion´arn´ı body. Abychom zjistili, zda m´a funkce f (x) v tˇechto bodech lok´aln´ı maximum (resp. minimum), spoˇc´ıt´ame jej´ı druhou derivaci. (%i9) d2:diff(f(x),x,2);
(%o9)
4x 2 (x − 1) 4 x2 8 (x − 1) x 6 (x − 1) x2 + − − + (x + 1)2 (x + 1)2 (x + 1)3 (x + 1)3 (x + 1)4
(%i10) h:factor(d2);
(%o10)
2 (5 x − 1) (x + 1)4
Pokud je druh´a derivace funkce ve stacion´arn´ım bodˇe kladn´a (resp. z´aporn´a), pak funkce m´a v tomto bodˇe minimum (resp. maximum). Pomoc´ı substituce nyn´ı spoˇc´ıt´ame hodnoty druh´e derivace ve stacion´arn´ıch bodech a tak´e hodnoty funkce f (x) v tˇechto bodech. Ve v´ yrazech se vyskytuj´ı odmocniny, a proto pˇrepneme na v´ ystup ve formˇe desetinn´ ych ˇc´ısel, abychom mohli v´ ysledky l´epe porovnat. (%i11) numer:true; (%o11)
true
(%i12) subst(0,x,h); (%o12)
−2
(%i13) f(0); (%o13)
0
(%i14) subst(-((sqrt(17)+3)/2),x,h); (%o14)
−0.87368304210317 52
´ ANALYZA ´ MATEMATICKA
(%i15) f(-((sqrt(17)+3)/2)); −8.818299727218765
(%o15)
(%i16) subst((sqrt(17)-3)/2,x,h); (%o16)
0.60805804210317
(%i17) f((sqrt(17)-3)/2); −0.056700272781236
(%o17) (%i18) numer:false; (%o18)
f alse √
V´ ysledky uk´azaly, ˇze funkce nab´ yv´a v bodech x = 0, √ (f (0) = 0)√ a x = − 17+3 , 2 √ 17+3 17−3 17−3 (f (− 2 ) = −8,82) lok´aln´ıho maxima a v bodˇe x = 2 , (f ( 2 ) = −0,06) lok´aln´ıho minima. S pomoc´ı grafu prvn´ı derivace funkce f (x) si v´ ysledek ovˇeˇr´ıme. (%i19)plot2d(d1,[x,-5,3],[y,-4,4]); 4
x2/(x+1)2+2*(x-1)*x/(x+1)2-2*(x-1)*x2/(x+1)3
3 2 1 0 -1 -2 -3 -4 -5
-4
-3
-2
-1 x
0
1
2
3
Obr´azek 8.2: Graf prvn´ı derivace funkce f (x) √
), Vid´ıme, ˇze√ prvn´ı derivace funkce f (x) je kladn´a na intervalech (−∞, − 17+3 2 17−3 (−1, 0) a ( 2 , ∞) (funkce f (x) je√tedy na tˇechto intervalech rostouc´ı) a z´aporn´a √ 17+3 na intervalech (− 2 , −1) a (0, 17−3 ) (na tˇechto intervalech je funkce f (x) 2 klesaj´ıc´ı). Funkce f √ (x) tedy skuteˇcnˇe nab´ yv´a v bodech x = 0, (f (0) =√ 0) a √ 17+3 17+3 x =√ − 2 , (f (− 2 ) = −8,82) lok´aln´ıho maxima a v bodˇe x = 17−3 , 2 17−3 (f ( 2 ) = −0,06) nab´ yv´a lok´aln´ıho minima. 53
´ ANALYZA ´ MATEMATICKA
Inflexn´ı body, konvexnost, konk´ avnost Nyn´ı zjist´ıme, zda m´a funkce nˇejak´e inflexn´ı body, tzn. body, ve kter´ ych se mˇen´ı konvexita funkce na konk´avnost nebo naopak. Nejprve najdeme body podezˇrel´e“ ” z inflexe, tedy body, ve kter´ ych je druh´a derivace funkce f (x) rovna nule. (%i20) solve(d2=0); 1 [x = ] 5
(%o20) (%i21) f(1/5);
−
(%o21)
1 45
1 ). Z grafu druh´e derivace funkce Naˇsli jsme jedin´ y takov´ y bod x = 15 , (f ( 15 ) = − 45 vyˇcteme, na kter´ ych intervalech je funkce konvexn´ı a konk´avn´ı a jestli je nalezen´ y bod skuteˇcnˇe inflexn´ım bodem.
4*x/(x+1)2+2*(x-1)/(x+1)2-4*x2/(x+1)3-8*(x-1)*x/(x+1)3+6*(x-1)*x2/(x+1)4
(%i22)plot2d(d2,[x,-5,3],[y,-4,4]); 4 3 2 1 0 -1 -2 -3 -4 -5
-4
-3
-2
-1 x
0
1
2
3
Obr´azek 8.3: Graf druh´e derivace funkce f (x) Vid´ıme, ˇze druh´a derivace je na intervalech (−∞, −1) a (−1, 15 ) z´aporn´a a na intervalu ( 15 , ∞) kladn´a. V prvn´ıch dvou intervalech je tedy funkce konk´avn´ı a ve tˇret´ım intervalu je funkce konvexn´ı. Bod x = 15 je inflexn´ım bodem a mˇen´ı se v nˇem konk´avnost funkce na konvexnost.
Asymptoty bez smˇ ernice Jiˇz dˇr´ıve jsme zjistili, ˇze do definiˇcn´ıho oboru nepatˇr´ı bod −1. Je tedy moˇzn´e, ˇze j´ım proch´az´ı asymptota bez smˇernice. Vyˇsetˇr´ıme chov´an´ı funkce f (x) v okol´ı tohoto bodu pomoc´ı pˇr´ıkazu limit. 54
´ ANALYZA ´ MATEMATICKA
(%i23) limit(f(x),x,-1); −∞
(%o23)
V bodˇe x = −1 existuje nevlastn´ı limita rovna −∞, a proto pˇr´ımka x = −1 je asymptotou bez smˇernice.
Asymptoty se smˇ ernic´ı K v´ ypoˇctu asymptot se smˇernic´ı ve tvaru y = kx+q se uˇz´ıv´a n´asleduj´ıc´ıch vzorc˚ u: f (x) x→±∞ x Opˇet tedy pouˇzijeme pˇr´ıkaz limit. k = lim
q = lim [f (x) − kx] x→±∞
(%i24) k1:limit(f(x)/x, x, inf); (%o24)
1
(%i25) limit(f(x)-k1*x, x, inf); (%o25)
−3
(%i26) k2:limit(f(x)/x, x, minf); (%o26)
1
(%i27) limit(f(x)-k2*x, x, minf); (%o27)
−3
V obou pˇr´ıpadech n´am vyˇsla jedin´a asymptota se smˇernic´ı dan´a vzorcem y = x−3.
Zobrazen´ı grafu funkce Na z´avˇer zobraz´ıme graf funkce f (x). Rozhodneme o vhodn´ ych intervalech os x a y. Na ose x n´am bude staˇcit interval (−5, 4), v nˇemˇz se nach´azej´ı vˇsechny d˚ uleˇzit´e body, a na ose y interval (−15, 4), abychom vidˇeli vˇsechny jejich funkˇcn´ı hodnoty. Spolu s grafem funkce zobraz´ıme tak´e asymptotu se smˇernic´ı y = x − 3. Graf je zn´azornˇen na obr´azku 8.4. 55
´ ANALYZA ´ MATEMATICKA
(%i28) plot2d([f(x),x-3], [x,-5,4], [y,-15,4]); 4
(x-1)*x2/(x+1)2 x-3
2 0 -2
y
-4 -6 -8 -10 -12 -14 -5
-4
-3
-2
-1
0
1
x
Obr´azek 8.4: Graf funkce f (x)
56
2
3
4
´ ER ˇ ZAV
57
Z´ avˇ er Syst´em poˇc´ıtaˇcov´e algebry Maxima je v dneˇsn´ı dobˇe, kdy klademe velk´ y d˚ uraz na vyuˇz´ıv´an´ı poˇc´ıtaˇcov´e techniky, velmi uˇziteˇcn´ ym matematick´ ym programem. Grafick´e prostˇred´ı programu je pˇrehledn´e, ovl´ad´an´ı relativnˇe jednoduch´e, manu´al programu je obs´ahl´ y a velmi pˇeknˇe zpracovan´ y. Ned´avn´a lokalizace programu do ˇcesk´eho jazyka nab´ız´ı pohodlnˇejˇs´ı ovl´ad´an´ı pro ˇcesk´eho uˇzivatele. V r´amci komentovan´ ych v´ ystup˚ u vˇsak program st´ale komunikuje s uˇzivatelem v anglick´em jazyce a tak´e manu´al zat´ım nen´ı dostupn´ y v ˇceˇstinˇe, a proto je k uˇz´ıv´an´ı programu nutn´a znalost odborn´eho anglick´eho jazyka. Program vˇsak proch´az´ı neust´al´ ym v´ yvojem a je tedy pravdˇepodobn´e, ˇze se u ´pln´eho pˇrekladu do ˇceˇstiny brzy doˇck´ame. Velkou pˇrednost´ı syst´emu Maxima je jeho ovl´ad´an´ı, kter´e se moc neliˇs´ı od ovl´ad´an´ı komerˇcn´ıho syst´emu Maple. Pr´avˇe Maple je na Masarykovˇe univerzitˇe pomˇernˇe rozˇs´ıˇren´ ym matematick´ ym programem. Syst´em Maxima m´a vˇsak nespornou v´ yhodu v tom, ˇze jde o open source program, a lze jej tedy z´ıskat za nulov´e n´aklady a pouˇz´ıvat na jak´emkoliv pracoviˇsti i po ukonˇcen´ı studia. Program proto doporuˇcuji jako vhodnou alternativu syst´emu Maple, kterou je moˇzn´e pouˇz´ıvat bez jak´ehokoliv omezen´ı. Na pˇriloˇzen´em CD se nach´azej´ı z´apisn´ıky ve form´atu .wxm se vˇsemi pouˇzit´ ymi pˇr´ıkazy. Z´apisn´ıky, kter´e jsou rozˇclenˇeny podle jednotliv´ ych kapitol, mohou b´ yt vhodnou pom˚ uckou pro zaˇc´ınaj´ıc´ı uˇzivatele.
ˇ E ´ LITERATURY SEZNAM POUZIT
58
Seznam pouˇ zit´ e literatury ˇ [1] BUSA, J. MAXIMA. Open source syst´em poˇc´ıtaˇcovej algebry [online]. Koˇsice: V´ ychodoslovensk´e tlaˇciarne, 2006 [cit. 12. prosince 2010]. Dostupn´e z WWW: . ISBN 80-8073-640-5. ˇ ˇ B. P. Sb´ırka u [2] DEMIDOVI C, ´loh a cviˇcen´ı z matematick´e anal´yzy. 1. vyd´an´ı. Havl´ıˇck˚ uv Brod: Fragment, 2003. ISBN 80-7200-587-1. [3] DODIER, R. Maxima 5.22.1 Manual [online]. August 2010 [cit. 2. ledna 2011]. Dostupn´e z WWW:. ˇ A, ´ Z., PLCH, R., SOJKA, P. Matematick´a anal´yza s programem Ma[4] DOSL ple. D´ıl 1, Diferenci´aln´ı poˇcet funkc´ı v´ıce promˇenn´ych. Brno: Masarykova Univerzita, 1999. ISBN 80-210-2203-5. [5] Maxima, a Computer Algebra System [online]. [cit. 12. prosince 2010]. Dostupn´e z WWW:.