Úvodní seznámení Sbírka příkladů

Text diplomové práce


Úvodní seznámení

Mathematica 7
Maple 12
MathCad 14
wxMaxima 0.8.5 (M. 5.21)


wxMaxima 0.8.5 (M. 5.21)

Základy používání programu
Základní operace
Řešení rovnic a nerovnic
Úprava výrazů
Vektory a matice
Integrální a diferenciální počet
Posloupnosti a řady
Grafy 2D a 3D
Fyzikální jednotky
Zajímavosti pro učitele
Závěrečné shrnutí
Doporučená literatura
Odkazy
Soubory ke stažení



Sbírka příkladů

Ú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)".

(%i1) kill(all);

Result



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á %.

(%i1) 1+2;

Result

(%i2) 2^5-10*3;

Result

(%i3) 2/(5+3);

Result

Čí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.

(%i4) sin(3);

Result

(%i5) float(sin(3));
sin(3),numer;
bfloat(sin(3));

Result

(%i8) fpprintprec:13$
float(sin(3));
sin(3),numer;
bfloat(sin(3));
fpprintprec:0$

Result

Trik

(%i13) sin(3.0);

Result

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.

(%i14) %pi;
%e;
%i;
inf;

Result

Definování proměnné

U definování názvů proměnné se hodí nepoužívat háčky a čárky, případně speciální znaky.

(%i18) promenna:3;

Result

(%i19) promenna;

Result

Definování vlastní funkce

(%i20) funkce(x):=(x+1)/(x^2-1);
funkce(2);

Result

Definovani funkce pokud je výraz funkce v jiné proměnné

(%i22) vyraz:x+1$
funkce2(x):=''vyraz;

Result



Řešení rovnic a nerovnic

wxMaxima 0.8.5 (M. 5.21) - Řešení rovnic a nerovnic

Řešení rovnice

(%i24) solve(x+3=4,x);

Result

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]);

Result

Řešení soustavy rovnic

(%i27) solve([x+y=1,x-y=2],[x,y]);

Result

Ř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);

Result

(%i30) load(fourier_elim)$
fourier_elim(x-2> 5*x, [x]);

Result

Řešení rovnice s podmínkami

Řešení rovnic s podmínkami nefunguje pod Windows.

(%i32) to_poly_solve(x^3-1=0, [x]);

Result

(%i33) realonly:true$
to_poly_solve(x^3-1=0, [x]);
realonly:false$

Result

(%i36) to_poly_solve([x^2+x-6=0,x>0], x);

Result



Ú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));

Result

(%i38) radcan((x^3-1)/(x-1));

Result

Rozklad výrazu

(%i39) expand((x-1)^3);

Result

Složení výrazu

(%i40) factor(x^3-3*x^2+3*x-1);

Result

Převedení na společného jmenovatele

(%i41) factor(1/(x+1)+1/(x-1));

Result

Rozklad na parciální zlomky

(%i42) partfrac(2*x/(x^2-1),x);

Result



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]);

Result

Složky vektoru

(%i46) vektor[1];
vektor2[1][1];

Result

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]);

Result

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])));

Result

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]);

Result

Zápis matice II - pomocí nabídky Algebra/Enter Matrix

(%i54) matrix(
 [1,2],
 [3,1]
);

Result

Složky matice

(%i55) matice[1][2];

Result

Determinant matice

(%i56) determinant(matrix([1,2],[3,1]));

Result

Vlastní čísla

(%i57) eigenvalues(matrix([1,2],[3,1]));

Result

Stopa matice

Pro určení stopy se nejdřív musí zavolat balík functs.

(%i58) load(functs)$
tracematrix(matrix([1,2],[3,1]));

Result

Vlastní vektory

(%i60) eigenvectors(matrix([1,2],[3,1]));

Result



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);

Result

Limita zleva

(%i62) limit(1/x^3,x,0,minus);

Result

Limita zprava

(%i63) limit(1/x^3,x,0,plus);

Result

Pozor!

Výsledkem limity níže je komplexní nekonečno.

(%i64) limit(1/x^3,x,0);

Result

Derivace

První derivace

(%i65) diff(x^3,x);

Result

Vyšší derivace

(%i66) diff(x^3,x,3);

Result

Derivace podle více proměnných

(%i67) diff(y^2*(x^3+y),x,1,y,1);

Result

Integrály

Neurčitý integrál

(%i68) integrate(sin(x),x);

Result

Určitý integrál

(%i69) integrate(sin(x),x,0,%pi/2);

Result

Numerické počítání integrálů

(%i70) quad_qags(sin(x)/x, x, 0, %pi/2);

Result

Vícerozměrné integrály

(%i71) integrate(integrate(y*sin(x),x,0,%pi/2),y,0,1);

Result

Taylorův rozvoj řady

(%i72) taylor(log(x),x,1,5);

Result

(%i73) powerseries(log(x),x,1);

Result

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);

Result

Diferenciální rovnice s počátečními podmínkami

(%i75) ode2('diff(y,x)+y/(1+x)=exp(-x), y, x);

Result

(%i76) ic1(ode2('diff(y,x)+y/(1+x)=exp(-x), y, x), x=5, y=1);

Result

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).

(%i77) load(dynamics)$

(%i78) reseni:rk([-y/(1+x)+exp(-x)],y,1,[x,0,50,0.5])$
wxplot2d([discrete,reseni]);

Result



Posloupnosti a řady

wxMaxima 0.8.5 (M. 5.21) - Posloupnosti a řady

Posloupnosti

(%i80) makelist(i^2,i,1,10);

Result

Řady

(%i81) sum(1/n^2,n,1,10);

Result

(%i82) simpsum:true$
sum(1/n^2,n,1,inf);

Result



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.

(%i84) load(draw)$

Grafy 2D

Graf x,y

(%i85) wxplot2d(sin(x),[x,0,4*%pi]);

Result

(%i86) wxdraw2d(explicit(sin(x),x,0,4*%pi));

Result

Parametrický graf

(%i87) wxplot2d([parametric,2*sin(t),cos(t)],[t,0,2*%pi]);

Result

(%i88) wxdraw2d(parametric(2*sin(t),cos(t),t,0,2*%pi));

Result

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]);

Result

(%i90) wxdraw2d(point_type=7,points([[0,3],[2,8],[-1,5]]));

Result

Grafy 3D

Graf x,y,z

(%i91) wxplot3d(x^3+y^2,[x,-3,3],[y,-5,5]);

Result

(%i92) wxdraw3d(explicit(x^3+y^2,x,-3,3,y,-5,5));

Result

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]);

Result

(%i94) wxdraw3d(parametric(sin(t),t,t,t,0,2*%pi));

Result

Parametrický graf - plocha

(%i95) wxplot3d([u*sin(t),t*u^2,t*u],[t,-5,5],[u,-2.5,2.5]);

Result

(%i96) wxdraw3d(parametric_surface
(u*sin(t),t*u^2,t*u,t,-5,5,u,-2.5,2.5));

Result

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]);

Result

(%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)
);

Result



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

(%i99) kill(all);

Result

(%i1) load(unit);

Result

(%i2) convert(50.0*km/s,[m,s]);

Result

(%i3) mass:10*kg;
v:7.9*km/s;
Energie:1/2*mass*v^2;
convert(Energie,[J]);

Result

Fyzikální jednotky - balíček ezunits

(%i7) kill(all);

Result

(%i1) load(ezunits)$

Result

(%i2) 50.0`km/hour``m/s;

Result

(%i3) mass:10`kg;
v:7.9`km/s;
Energie:1/2*mass*v^2;
Energie``[J];

Result



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])$

Result

(%i8) with_slider_draw(
   a, makelist(i, i, -20, 20)/10,
  explicit(sin(a*x),x,0,4*%pi))$

Result

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).