Úvodní seznámení s matematickými programy
Základy používání programu
wxMaxima 0.8.5 (M. 5.21) - Základy používání programu
Pozor! Jelikož Maxima je určena hlavně pro Linux, některé funkce
programu nefungují pod operačním systém Windows - např. animace,
řešení nerovnic, podmínky při řešení rovnic.
Jelikož je wxMaxima jen uživatelské rozhraní, které má zpřehlednit
výstupy programu Maxima může se stát, že některé funkce nebudou
dostupné - např. balíček vect.
Pozor! Tento dokument byl vytvořen ve Windows a je v něm použitá
diakritika. V systému Linux jej proto není možné otevřít v programu
wxMaxima.
Je možné použít alternativně rozhraní xmaxima, případně v Linuxu také terminál a další. Příkazy wxMaximy - grafy začínající wx a příkazy s with_slider nebudou v těchto rozhraních fungovat.
Výpočty se ukončují středníkem (není nutné pro jeden výpočet v jedné sekci označené -->, tam je dopněn automaticky).
Shift + Enter provede výpočet.
Enter posune na další řádek.
Klávesová zkratka CTRL + G přeruší výpočet. Případně lze použít v nabídce Maxima možnost Interupt, nebo červené tlačítko na horní liště.
Při opětovném otevření dokumentu Maximy, je potřeba znovu provést výpočty, jejikož v souboru jsou uloženy pouze zadání, nikoli výstupy.
Výpočty jsou prováděny v časovém pořadí v jakém jste spustili výpočty.
Je tedy možné přiradit nějakou proměnnou na konci notebooku a pokud poté provede s proměnnou výpočet např. na počátku, tak již bude program počítat s vaší zadanou hodnotou proměné.
Pokud chcete nechat propočítat celý pracovní list stiskněte CTRL + R, případně zvolte v nabídce Cell možnost Evaluate All Cells.
Pokud konec zadání ukočíme $, výsledek se provede, ale nevypíše.
Pro většinu složitějších funkcí je nutné zavolat balíčky příkazem
load např. load(draw).
Pokud kliknete na danou funkci a stiknete klávesu F1, zobrazí se
k dané funkci nápověda.
Pro zápis příkazů jako např. x^2, integrate(sin(x),x), je možné
využít klávesnici případně si nechat vypsat syntax příkazu pomocí
příkazů v horní liště (např. Calculus/Integrate). Poslední možností
je nechat si nejprve zobrazit palety v nabídce Maxima/Panes a poté
jen nakliknout příslušný příkaz.
Hodí se na počátku pracovního listu použít příkaz kill(all). Jednak se tím odstraní přiřazení proměnných a také načtené balíčky.
Předejde se tím např. zavolání funkce z balíčku ještě před jeho načtením.
Program standartně nezalamuje psaný text, je potřeba to udělat ručně.
Pro práci s programem doporučuji požívat anglickou klávesnici, jelikož se snadněji zadávají např. mocniny (^) apod..
Má-li program nějaké speciální funkce vůči ostatním je za příslušným
názvem odstavce "(navíc)".
Základní operace
wxMaxima 0.8.5 (M. 5.21) - Základní operace
Základní početní operace
Základní operace +-*/ se používají stejně jako v jakémkoli
jiném programovacím jazyku. U tototo progamu se musí strinkně
dodržovat operace násobení - např. 2x se musí zapsat jako 2*x,
jinak program napíše chybovou hlášku a výpočet neprovede.
U dělení je dobré si dát pozor, aby složitější výrazy byly
v závorkách, jejikož dělení má přednost před sčítáním.
Poslední výpočet se zavolá %.
Číselný výpočet
U definovaných funkcí a zlomků se výrazy automaticky nepřevádějí
na číselnou hodnotu (z důvodu přesnosti). Pokud ale je nějaké z čísel
je desetiné, dostaneme číselnou hodnotu, ne zlomek (což se dá využít
i jako trik, pro rychlé získání číselné hodnoty).
Pozor! Pro čísla z intervalu (-1,1) zlobí počet cifer zaokrouhlování,
nastavených příkazem fpprintprec. Příkaz float a numer nevypíše počet
platných cifer, ale počet znaků (tzn. počet platných čísel - 2).
Příkaz fpprintprec:0$ vrací zpět přesnost vypsaného čísla
na standartní hodnotu (16 cifer). Maximální hodnota příkazu
fpprintprec se dá zvýšit příkazem fpprec.
(%i5)
|
float(sin(3));
sin(3),numer;
bfloat(sin(3));
|
(%i8)
|
fpprintprec:13$
float(sin(3));
sin(3),numer;
bfloat(sin(3));
fpprintprec:0$
|
Trik
Matematické konstanty
Matematické konstanty se píší pomocí klávesnice se znakem %
na počátku.
U nekonečna se znak % nepřidává a rozlišuje se mezi reálným
a komplexním nekonečnem.
Definování proměnné
U definování názvů proměnné se hodí nepoužívat háčky a čárky,
případně speciální znaky.
Definování vlastní funkce
(%i20)
|
funkce(x):=(x+1)/(x^2-1);
funkce(2);
|
Definovani funkce pokud je výraz funkce v jiné proměnné
(%i22)
|
vyraz:x+1$
funkce2(x):=''vyraz;
|
Řešení rovnic a nerovnic
wxMaxima 0.8.5 (M. 5.21) - Řešení rovnic a nerovnic
Řešení rovnice
Příkaz solve řeší pouze algebraické rovnice, na složitější rovnice hodí balík to_poly_solver s funkcí to_poly_solve.
(%i25)
|
load("to_poly_solver")$
to_poly_solve([sin(x)+cos(x)=1], [x]);
|
Řešení soustavy rovnic
(%i27)
|
solve([x+y=1,x-y=2],[x,y]);
|
Řešení nerovnice
Maxima umí řešit nerovnice za pomoci balíku solve_rat_ineq,
který ale nefunguje pod Windows.
U nerovnic s neznámými v první mocnině je možné využít balík
fourier_elim, který pod Windows funguje.
(%i28)
|
load(solve_rat_ineq)$
solve_rat_ineq(x^2-1>5);
|
(%i30)
|
load(fourier_elim)$
fourier_elim(x-2> 5*x, [x]);
|
Řešení rovnice s podmínkami
Řešení rovnic s podmínkami nefunguje pod Windows.
(%i32)
|
to_poly_solve(x^3-1=0, [x]);
|
(%i33)
|
realonly:true$
to_poly_solve(x^3-1=0, [x]);
realonly:false$
|
(%i36)
|
to_poly_solve([x^2+x-6=0,x>0], x);
|
Úprava výrazů
wxMaxima 0.8.5 (M. 5.21) - Úprava výrazů
Zjednodušení výrazu
Maxima používá více příkazů na zjednodušení výrazů - mnohé příkazy nejsou tak komplexní jako např. v Maple případně Mathematice.
(%i37)
|
ratsimp((x^3-1)/(x-1));
|
(%i38)
|
radcan((x^3-1)/(x-1));
|
Rozklad výrazu
Složení výrazu
(%i40)
|
factor(x^3-3*x^2+3*x-1);
|
Převedení na společného jmenovatele
(%i41)
|
factor(1/(x+1)+1/(x-1));
|
Rozklad na parciální zlomky
(%i42)
|
partfrac(2*x/(x^2-1),x);
|
Vektory a matice
wxMaxima 0.8.5 (M. 5.21) - Vektory a matice
Pro práci s vektory a maticemi budeme pro některé funkce potřebovat
balíček Lineární algebry a balíček pro práci s vektory.
Pozor! Balíček vect v programu wxMaxima nefunguje.
Funkce související z maticemi se dají najít v nabídce Algebra.
load(vect)$
(%i43)
|
load(linearalgebra)$
|
Vektory
Zápis vektoru
Na elementární práci s vektory, je možné použít jen zápis v hranatých
závorkách. Hranaté závorky reprezentují seznam, který nemění pořadní
členů.
(%i44)
|
vektor:[3,1,2];
vektor2:matrix([3,1,2]);
|
Složky vektoru
(%i46)
|
vektor[1];
vektor2[1][1];
|
Velikost vektoru
Bohužel Maxima nema funkci na velikost vektoru. Musí se tedy počítat standartně podle vzorce.
(%i48)
|
sqrt([3,1,2].[3,1,2]);
|
Skalární součin
(%i49)
|
[1,2,0].[0,1,2];
matrix([1,2,0]).matrix([0,1,2]);
dotproduct(transpose(matrix([1,2,0])),transpose(matrix([0,1,2])));
|
Vektorový součin
Pozor! Vektorový součet v programu wxMaxima nefunguje, jelikož je součástí balíčku vect.
express([1,2,0]~[0,1,2]);
Matice
Základní funkce pro práci s maticemi je možné najít v nabídce Algebra.
Zápis matice
(%i52)
|
matice:[[1,2],[3,1]];
matrix([1,2],[3,1]);
|
Zápis matice II - pomocí nabídky Algebra/Enter Matrix
(%i54)
|
matrix(
[1,2],
[3,1]
);
|
Složky matice
Determinant matice
(%i56)
|
determinant(matrix([1,2],[3,1]));
|
Vlastní čísla
(%i57)
|
eigenvalues(matrix([1,2],[3,1]));
|
Stopa matice
Pro určení stopy se nejdřív musí zavolat balík functs.
(%i58)
|
load(functs)$
tracematrix(matrix([1,2],[3,1]));
|
Vlastní vektory
(%i60)
|
eigenvectors(matrix([1,2],[3,1]));
|
Integrální a diferenciální počet
wxMaxima 0.8.5 (M. 5.21) - Integrální a diferenciální počet
Funkce související s integrálním a diferenciálním počtem lze nalést v nabídce Calculus, v případě diferenciálních rovnic v nabídce Equations.
Limity
Limita
(%i61)
|
limit((x^2-x-2)/(x^3+1),x,-1);
|
Limita zleva
(%i62)
|
limit(1/x^3,x,0,minus);
|
Limita zprava
(%i63)
|
limit(1/x^3,x,0,plus);
|
Pozor!
Výsledkem limity níže je komplexní nekonečno.
Derivace
První derivace
Vyšší derivace
Derivace podle více proměnných
(%i67)
|
diff(y^2*(x^3+y),x,1,y,1);
|
Integrály
Neurčitý integrál
(%i68)
|
integrate(sin(x),x);
|
Určitý integrál
(%i69)
|
integrate(sin(x),x,0,%pi/2);
|
Numerické počítání integrálů
(%i70)
|
quad_qags(sin(x)/x, x, 0, %pi/2);
|
Vícerozměrné integrály
(%i71)
|
integrate(integrate(y*sin(x),x,0,%pi/2),y,0,1);
|
Taylorův rozvoj řady
(%i72)
|
taylor(log(x),x,1,5);
|
(%i73)
|
powerseries(log(x),x,1);
|
Diferenciální rovnice
Pro řešení diferenciálních rovnic není jen jeden příkaz, ale
příkazy se liší podle typu diferenciálních rovnic a počátečních
podmínek.
Diferenciální rovnice
(%i74)
|
ode2('diff(y,x)+y/(1+x)=exp(-x), y, x);
|
Diferenciální rovnice s počátečními podmínkami
(%i75)
|
ode2('diff(y,x)+y/(1+x)=exp(-x), y, x);
|
(%i76)
|
ic1(ode2('diff(y,x)+y/(1+x)=exp(-x), y, x), x=5, y=1);
|
Numerické řešení diferenciálních rovnic
Pro numerické řešení diferenciálních rovnic se musí nejprve zavolat balíček dynamics, přičemž je možno řešit jen rovnice prvního stupně a počáteční podmínky se dají zadat jen v počátečním bodě.
Do funkce pro řešení (rk) diferenciálních rovnic se zadává vztah pro první derivaci tzn. ze vztahu y'=f(y(x),x) se zadává do funkce rk jen f(y(x),x).
(%i78)
|
reseni:rk([-y/(1+x)+exp(-x)],y,1,[x,0,50,0.5])$
wxplot2d([discrete,reseni]);
|
Posloupnosti a řady
wxMaxima 0.8.5 (M. 5.21) - Posloupnosti a řady
Posloupnosti
(%i80)
|
makelist(i^2,i,1,10);
|
Řady
(%i81)
|
sum(1/n^2,n,1,10);
|
(%i82)
|
simpsum:true$
sum(1/n^2,n,1,inf);
|
Grafy 2D a 3D
wxMaxima 0.8.5 (M. 5.21) - Grafy 2D a 3D
Maxima umožňuje kreslit grafy dvěmi typy příkazů. První je pomocí příkazů typu plot. Druhým způsobem je použití balíčku draw a příslušných příkazů pro grafy v něm. Příkazy typu plot, dělají přehlednější grafy (barevně, volí velikost a typ bodů), grafy přes balík draw na druhou stranu umožňují více nastavení grafu.
Výhodou otevírání grafů v novém okně je možnost interaktivně otáčet 3D grafy.
Přidáním příkazu wx před plot se ve wxMaximě zobrazí graf přímo v programu.
Pozor! Pokud si necháte nějaký z grafů vykreslit (v novém okně), je důležité toto okno následně zavřít, jinak není možné v programu dále pracovat.
Grafy 2D
Graf x,y
(%i85)
|
wxplot2d(sin(x),[x,0,4*%pi]);
|
(%i86)
|
wxdraw2d(explicit(sin(x),x,0,4*%pi));
|
Parametrický graf
(%i87)
|
wxplot2d([parametric,2*sin(t),cos(t)],[t,0,2*%pi]);
|
(%i88)
|
wxdraw2d(parametric(2*sin(t),cos(t),t,0,2*%pi));
|
Graf na zobrazení dat
Pozor! U příkazu draw2d se musí uvést jak má příslušný bod v grafu vypadat příkazem point_type. Jinak se body nevykreslí.
(%i89)
|
wxplot2d([discrete,[[0,3],[2,8],[-1,5]]],[style, points]);
|
(%i90)
|
wxdraw2d(point_type=7,points([[0,3],[2,8],[-1,5]]));
|
Grafy 3D
Graf x,y,z
(%i91)
|
wxplot3d(x^3+y^2,[x,-3,3],[y,-5,5]);
|
(%i92)
|
wxdraw3d(explicit(x^3+y^2,x,-3,3,y,-5,5));
|
Parametrický graf - křivka
Příkaz plot neumožňuje vykreslení 3d křivky. Křivku je ale možné nakreslit trikem jakožto plochu, přičemž hodnoty druhého parametru jsou malé.
(%i93)
|
wxplot3d([sin(t),t,t+u],[t,0,2*%pi],[u,0,0.001]);
|
(%i94)
|
wxdraw3d(parametric(sin(t),t,t,t,0,2*%pi));
|
Parametrický graf - plocha
(%i95)
|
wxplot3d([u*sin(t),t*u^2,t*u],[t,-5,5],[u,-2.5,2.5]);
|
(%i96)
|
wxdraw3d(parametric_surface
(u*sin(t),t*u^2,t*u,t,-5,5,u,-2.5,2.5));
|
Zobrazení více typů grafů v jednom
Pomocí příkazu typu plot je možné zobrazit více typů grafů v jednom jen u plot2d. Křivka parametrického grafu se ale nemusí zobrazit celá.
(%i97)
|
wxplot2d([[parametric,sin(t),cos(t)],[t,0,2*%pi],x^3],
[x,-1.5,1.5],[nticks, 200]);
|
(%i98)
|
wxdraw3d(
color=red,
explicit(x^3+y^2,x,-3,3,y,-5,5),
color=blue,
parametric_surface(sin(t),cos(t),u,t,0,2*%pi,u,-50,50)
);
|
Fyzikální jednotky
wxMaxima 0.8.5 (M. 5.21) - Fyzikální jednotky
Pro práci s jednotkami se dají použít 2(3) balíčky - unit,(units), ezunits. Každý pracuje s jednotkami svým vlastním způsobem, přičemž balíček unit a units k sobě mají blízko typem zápisu, ale balíček units není podporován nápovědou. Ne všechny jednotky jsou však v balíčcích definovány (např. balíček unit nemá hodinu).
Je dobré zvolit jeden ze stylu zápisu jednotek - unit nebo ezunits.
Fyzikální jednotky - balíček unit
(%i2)
|
convert(50.0*km/s,[m,s]);
|
(%i3)
|
mass:10*kg;
v:7.9*km/s;
Energie:1/2*mass*v^2;
convert(Energie,[J]);
|
Fyzikální jednotky - balíček ezunits
(%i3)
|
mass:10`kg;
v:7.9`km/s;
Energie:1/2*mass*v^2;
Energie``[J];
|
Zajímavosti pro učitele
wxMaxima 0.8.5 (M. 5.21) - Zajímavosti pro učitele
Interaktivní změna dokumentu
wxMaxima umožňuje měnit interaktivně pouze grafy. Použité příkazy jsou with_slider (využívající plot2d), with_slider_draw a with_slider_draw3d.
(%i7)
|
with_slider(
a, makelist(i, i, -20, 20)/10,
sin(a*x),[x,0,4*%pi])$
|
(%i8)
|
with_slider_draw(
a, makelist(i, i, -20, 20)/10,
explicit(sin(a*x),x,0,4*%pi))$
|
Převedení na html
Soubor je možné převést na html stránku za pomoci nabídky File/Export.
Převedení do pdfLaTeXu
Je možné převést jen určitý výraz příkazem tex, případně převést celý dokument za pomocí File/Export. Při exportu celého dokumentu se špatně vyexportují znaky $ a mezer \quad.
Závěrečné shrnutí
wxMaxima 0.8.5 (M. 5.21) - Závěrečné shrnutí
Výše nastíněné funkce jsou jen základní funkce programu, které by měl student znát, pro snadnější práci s programem během studia. Samozřejmě, že Maxima nabízí mnohem více funkcí. Mnoho funkcí jako např. plot, případně to_poly_solve mají množství nastavení, které můžeme nastavit tak, aby výsledek odpovídal našemu očekávání (např. změnit vzhled grafu, případně nastavit podmínky pro řešené
rovnice).
Problémem tohoto programu ale je, že nemá až tak přehlednou nápovědu (případně k danému příkazu není) a tudíž pro řešení problémů je někdy lepší zkusit internetový prohlížeč. Taktéž se může stát, že některé funkce nemusí dobře fungovat - nedokreslený graf, špatně spočtený integrál s odmocninami apod..
Na druhou stranu se jedná o projekt typu GNU, takže je možné jej zdarma využívat při výuce a také je možné upravit si program a balíčky podle svých představ.
Doporučená literatura
wxMaxima 0.8.5 (M. 5.21) - Doporučená literatura
Jelikož Maxima je GNU projekt, literatura je zdarma ke stažení ve formátu .pdf. Všem autorům patří velký dík.
http://wxmaxima.sourceforge.net/wiki/index.php/Animations
http://maxima.sourceforge.net/docs/manual/en/maxima.pdf
http://maxima.sourceforge.net/docs/tutorial/en/minimal-maxima.pdf
http://www.telefonica.net/web2/biomates/maxima/gpdraw/index.html
Odkazy
wxMaxima 0.8.5 (M. 5.21) - Odkazy
http://maxima.sourceforge.net/
http://wxmaxima.sourceforge.net/
http://www.ma.utexas.edu/pipermail/maxima/
Soubory ke stažení
wxMaxima 0.8.5 (M. 5.21) - Soubory ke stažení
Úvodní seznámení ve formátu pdf a formátu programu wxMaxima 0.8.5 (wxm) je možné stáhnout
zde.
Pozor! Pod operačním systémem Linux není možné tento soubor otevřít v programu wxMaxima, jelikož byl napsán v operačním systému Windows a v něm použitá diakritika (která způsobuje tuto chybu).