- Stahuj zápisky z přednášek a ostatní studijní materiály
- Zapisuj si jen kvalitní vyučující (obsáhlá databáze referencí)
- Nastav si své předměty a buď stále v obraze
- Zapoj se svojí aktivitou do soutěže o ceny
- Založ si svůj profil, aby tě tví spolužáci mohli najít
- Najdi své přátele podle místa kde bydlíš nebo školy kterou studuješ
- Diskutuj ve skupinách o tématech, které tě zajímají
Studijní materiály
Zjednodušená ukázka:
Stáhnout celý tento materiál7, g)) ;
-.5577025965
[ > evalf(f(0.7) - subs( x = 0.7, p));
-.0112397765
Neurčitý integrál.
Příkaz pro výpočet neurčitého integrálu ( primitivní funkce ) z dané funkce - integrandu (výrazu) podle zadané integrační proměnné má tvar
int ( funkce , integrační proměnná )
Příkaz
Int ( funkce , integrační proměnná )
provede matematický přepis dané úlohy.
Na rozdíl od obecného zápisu užívaného v matematice jazyk Maple vypouští konstantu, tj. výsledek je tvaru EMBED Equation.3 .
[ > Int ( x^3*cos(x), x) = int ( x^3*cos(x), x) ;
EMBED Equation.3
[ > Int ( ( 5*x - 7) / ( x^2 + 2*x + 3), x) = int ( ( 5*x - 7) / ( x^2 + 2*x + 3), x) ;
EMBED Equation.3
simplify(%);
EMBED Equation.3
Poslední příkaz provedl vykrácení dvojkou.
Maple při provádění příkazu int zkusí integrál spočítat. Na rozdíl od výpočtu derivace není zaručena úspěšnost výpočtu. Může se stát, že výsledek určený Maplem je komplikovanější, než bychom očekávali, nebo Maple odpoví stejným nebo zjednodu- šeným výrazem, který mu byl zadán k integraci.
Na příklad :
nebo , . . .
Jazykem Maple lze řešit také vícenásobné integrály, kdy ale opět nedostaneme zcela obecný výsledek, jak uvidíme na příkladu. Uvedeme si několik příkladů :
[ > Int ( Int ( (x*y^3), x), y) = int ( int ( (x*y^3), x), y) ;
[ > Int ( Int ( x / sqrt(1- x^2 - y^2), x), y) = int ( int ( x / sqrt(1- x^2 - y^2), x), y) ;
Maple umí provést také následující příkaz, ale výsledek i po po příkazu simplify je tak ukrutně nepřehledný a rozsáhlý, že jej zde neuvádím.
[ > Int ( Int ( x^2 / sqrt(1- x^2 - y^2), x), y) = int ( int ( x^2 / sqrt(1- x^2 - y^2), x), y) ;
Problematiku vhodné volby substituce najde čtenář v příspěvcích RNDr. Krupkové CSc. pro laboratorní cvičení v adresáři R: \ UMAT \ KRUPKOVA \ LAB_MAPL \*.*
Určitý integrál.
Příkaz pro výpočet určitého integrálu má tvar
int( funkce, x = a..b )
a podobně pro matematický přepis
Int( funkce, x = a..b )
Vypočteme určitý integrál . Dobře víme, že výsledek je roven dvěma. Skutečně,
aplikujme Maple :
[ > Int ( cos( x ), x = - Pi/2..Pi/2 ) = int ( cos( x ), x = - Pi/2..Pi/2 ) ;
= 2
Podobně příkaz
[ > Int ( cos( x )^2, x = - Pi/2..Pi/2 ) = int ( cos( x )^2, x = - Pi/2..Pi/2 ) ;
dává výsledek
[ > Int( x^3*sqrt( x^2-a^2), x = a..2*a) = int( x^3*sqrt( x^2-a^2), x = a..2*a) ;
Výsledek lze upravit použitím příkazu simplify.
Víme, že určitý integrál je limitou vytvořujících součtů pro normu dělení jdoucí k nule. Pokusíme se v dalším o reprezentaci těchto vytvořujících součtů. Rozsáhlejším studiem tohoto problému se zabývá RNDr. Krupková, CSc. v již uvedeném příspěvku.
Použijeme skupiny příkazů, počínajících vyvoláním knihovny student.
[ > with(student) :
[ > f : = cos(x) :
[ > middlebox( f , x = -Pi/2..Pi/2,16,color =green);
Obr. 16
Pro tvorbu i-tého příspěvku do integrálního součtu lze volit hodnotu f ( xi ) v libo- volném bodě i-tého dílku. My jsme zvolili střední hodnoty jednotlivých dílků. Další možnosti najde čtenář v již uvedené stati.
Provedeme nyní formální zápis integrálního součtu a dalším příkazem vypočítáme jeho hodnotu.
[ > middlesum (f , x = -Pi/2..Pi/2,16 ) ;
ation.3
Další dvojicí příkazů obdržíme součet rozepsaný do jednotlivých sčítanců - pro rozsáhlost nebudeme tisknout - a konečně hodnotu součtu :
[ > value(%) :
[ > evalf(%) ;
2.003216379
Propočteme-li rightsum event. leftsum pro danou funkci cos ( x ) dostaneme (vzhledem k symetrií funkce) stejnou hodnotu 1.993570344 .
Při zdvojnásobení počtu dílků dělení je hodnota integrálního součtu middlesum 2.000803417.
Lze počítat také nevlastní integrály vzhledem k dolní nebo horní, případně k oběma mezím.
[ > Int(1/( x^2 + 1), x = 0..infinity) = int(1/( x^2 + 1), x = 0..infinity) ;
Maple dá výsledek i pro mnoho integrálů, které jsou na výpočet náročnější . Na př.
a jiné.
Maple umí počítat i nevlastní integrály pro případ, kdy funkce je v hraničním bodě integračního intervalu neohraničená, ale jsou splněny podmínky konvergence integrálu na uzavřeném intervalu. Tak na př.
[ > Int(ln(x)/( x-1), x = 0..1) = int(ln(x)/( x-1), x = 0..1) ;
Konvergence předchozího integrálu je zaručena větou o integrovatelnosti funkce se singularitami v koncových bodech konvergenčního intervalu, kterou lze ověřit následujícími limitami.
[ > limit(x^0.1*ln(x)/(x-1),x=0,right); 0
[ > limit((x - 1)^0.1*ln(x)/(x-1),x=1,left); 0
( Za p položíme 0.1 )
_______________________________________________________
Ať f(x) je neohraničená v bodě b zleva. Pak
1) konverguje absolutně, existuje-li p < 1 tak, že limita
L =
je konečná.
Maple umí provést i výpočet vícenásobných určitých integrálů, ale hlavně takových, které lze rozepsat jako součin integrálů. Umí vypočítat přímo např. objem kvádru, nikoli však již tak jednoduše objem obecného hranolu, případně koule a podobně. Dovede provést např. následující výpočet :
[ > int(int(cos(t*s), t = 0..Pi/2), s = 0..Pi/2);
Si()
[ > evalf(%) ;
1.770494677
APLIKACE JAZYKA MAPLE
V ALGEBŘE
.
Několik poznámek k jazyku Maple .
Klíčová slova : Pi , I ,
Operátory : násobení a dělení jsou : * a / ,
umocnění : ^ .
Operace s čísly :
abs . . . absolutní hodnota
> plot ( abs ( x^2 + x - 2), x = -3..2 );
iquo . . . celočíselné dělení
> iquo ( 25, 3 ) ;
8
irem . . . zbytek po celočíselném dělení
> irem ( 25, 3 ) ;
1
! . . . faktoriál
> 6! ;
720
numer . . . čitatel zlomku
denom . . . jmenovatel zlomku
> 2*numer (7/8) + ( denom(7/8) )^2;
78
sqrt . . . výpočet druhé odmocniny
> sqrt ( 16 ) + sqrt ( 2 );
4 +
min, max . . . nejmenší a největší číslo množiny
> A : = 7, 3, -1, 4 ;
A : = 7, 3, -1, 4
> min(A);
-1
> max( %% );
7
round . . . zaokrouhlení na celá čísla
> round ( Pi + 6 ) ;
9
> round ( Pi + 6.4 ) ;
10
trunc . . . vynechání desetinné části čísla
> trunc (-1.372 );
-1
gcd . . . největší společný dělitel
> gcd ( 123, 45) ;
3
lcm . . . nejmenší společný násobek
> lcm ( 123, 45 );
1845
frac . . . vynechání celé části čísla
> frac ( -1.372 );
- 0.372
binominal . . . binomický koeficient
> binominal ( 6,3 );
20
length . . . počet číslic
> 6 ! :
> length ( % );
3
ifactor . . . rozklad čísla na prvočísla
> ifactor ( 5! ) ;
(2)3, 3, 5
rhs . . . pravá strana rovnice
lhs . . . levá strana rovnice
> a : = 29 ;
> r1 : = 12 - 6*a = 14 + 3/2 + x :
> lhs ( % ) ;
- 162
> rhs ( %% ) ;
+ x
Počítání s komplexními čísly.
> ( 2 + 5*I ) + ( 1 – I ) ;
3 + 4I
> ( 1 + I ) / ( 3 – 2*I ) ;
+ I
> ( 1 + I )^2 ;
2I
Další úlohy .
> sin(alfa)^2 + cos(alfa)^2 ;
sin(alfa) 2 + cos(alfa) 2
Maple sice automaticky krátí zlomky, ne však automaticky zjednodušuje všechny výrazy. K tomu v mnoha případech slouží příkaz simplify.
> simplify (%) ;
1
Příkaz evalf. Uvedli jsme, že Maple umí pracovat s celými, s racionálními i iracionálními čísly. Umí také převést všechna tato čísla do desetinné reprezentace a pak s nimi pracovat. K převodu slouží příkaz evalf. Má jeden z následujících tvarů
evalf ( výraz, počet číslic )
evalf ( výraz )
Rozdíl je v tom, že ve druhém případě Maple automaticky bere za počet číslic hodnotu pojmenovanou klíčovým slovem Digits. Po nastartování Maplu je tato hodnota vždy rovna číslu 10.
> evalf (Pi, 20);
3.1415926535897932385
> evalf ( Pi );
3.141592654
> Digits : = 5;
Digits: = 5
> evalf ( Pi ) ;
3.1416
> Digits : = 10 :
Zapsáním dvojtečky místo středníku jsme potlačili tisk výsledku.Příkaz však byl proveden.
> 1 + evalf ( 2/3*7 ) ;
5.666666667
Příkaz evalf může být i operandem v aritmetickém výrazu.
Příkazy solve, assign a allvalues.
Příkaz pro nalezení řešení rovnice má tvar
solve(rovnice) ,
příkaz pro řešení rovnice vzhledem k dané neznámé má tvar
solve( rovnice, neznámá ) ,
příkaz pro řešení soustavy rovnic vzhledem k neznámým má tvar
solve( množina rovnic, množina neznámých ).
Pokud Maple nalezne více než jednoo řešení, vytiskne je všechna ve tvaru posloupnosti. Pojmenováním této posloupnosti lze pracovat s jednotlivými řešeními pomocí jména s indexy.
> solve (3*x+ 2 = 5 ) ;
1
> reseni1 : = solve ( x^4 – b, x ) ;
reseni1 : = b1/4 , I b1/4 , -b1/4 , - Ib1/4
Pokud je dán pouze výraz místo rovnice, Maple jej automaticky chápe jako rovnici s nulovou pravou stranou.
Vypočteme nyní podíl čtvrtého a třetího kořene.
> reseni1[ 4 ] / reseni1 [ 3 ] ;
I
> reseni2 : = solve ( { x + y = 1, 2*x + y = 3 }, { x, y }) ;
reseni2 : = { x = 2 , y = -1 }
Maple nalezl řešení a pojmenoval je jménem reseni2. Identifikátorům x a y však hodnoty 2 a –1 nepřiřadil. Pro přiřazení těchto hodnot má Maple v tomto případě k dispozici příkaz assign
Maple umi vyřešit i složitější a nelineární soustavy rovnic.
> assign( reseni2);
Maple nevytiskne nic, ve skutečnosti ale provedl příkazy x:=2, y:=-1. To je okamžitě zřejmé při provedení následujícího příkazu.
> x + 3*y ;
-1
> x : = ‘x’; y:=’y’;
x:= x
y:= y
> solve({ x*y + x – 2 = 10, y^2 + x – y = 12 }, { x, y }) ;
{x=12,y=0}
{y=RootOff(_Z2 –13), x=RootOff(_Z2 –13)-1}
> evalf(%) ;
{y=0,x=12}, {y = -3.605551275,x=-4.605551275}
Doc. RNDr. Ing. Josef Nedoma doporučuje ve svém skriptu MATEMATIKA I v první části po vyjádření kořenů pomocí RootOff aplikovat příkaz allvalues, tento příkaz ale u předchozího příkladu nevede k cíli. Zatím co jím uváděný příklad , jak uvidíme, vede k řešení.
>solve({y^2 + 1 = x, x+2 = y},{x, y});
{y = RootOf(_Z2 + 3 - _Z), x = -2 + RootOf(_Z2 + 3 - _Z)}
> allvalues(%);
{y = 1/2 + 1/2 I EMBED Equation.3 , x = -3/2 + 1/2 I EMBED Equation.3 },
{y = 1/2 - 1/2 I EMBED Equation.3 , x = -3/2 - 1/2 I EMBED Equation.3 }
Budeme-li aplikovat příkaz evalf, obdržíme jako výsledek pouze poslední dvojici kořenů ve tvaru racionálních čísel, (i když jde samozřekmě o irracionální výrazy).
> evalf(%%);
{x = -1.500000000 - 1.658312395 I, y = .5000000000 - 1.658312395 I}
V příkazu allvalues musí být jen jeden argument. Takže nedostatek při nalezení řešení soustavy rovnic x*y + x – 2 = 10, y^2 + x – y = 12, který jsme řešili obejítím příkazu allvalues pomocí příkazu evalf lze „spravit“ příkazem allvalues([%]), což si může laskavý čtenář ověřit, když tento příkaz zařadí okamžitě za příkaz solve(soustava rovnic). Dostane pak:
> allvalues([%]);
[{y = 0, x = 12}, {y = EMBED Equation.3 , x = - 1}],
[{y = 0, x = 12}, {y = -, x = -- 1}]
Zároveň vidíme, že příkaz evalf neposkytl všechna řešení.
Příkaz subs. Tento příkaz umožňuje nahradit ve výrazu jeden nebo více dílčích výrazů. Má tvar
subs( původní1 = náhrada1, . . . , původní r = náhrada r , výraz )
Příklady.
> reseni4 : = solve( 3*x – y = x , x ) ;
reseni4 : = y
> subs ( x = reseni4, 3*x – y = x ) ;
y = y
Příkaz subs zde byl použit ke kontrole správnosti řešení rovnice.
> reseni5 : = solve ( e = f*g^2, f ) ;
reseni5 : = e / g2quation.3 EMBED Equation.3
> subs ( f = reseni5, h = 9.8, g = 300000, i = f*h ) ;
i = .1088888889*10 –9 e
> subs ( g = 300000, f =reseni5, h = 9.8 , i = f*h ) ;
i = 9.8 e / g2
Nahrazuje se zleva doprava, proto jsou výsledky různé.
> j : = x*y^2 + z ;
j : = xy2 + z
> subs ( x = y, y = x, j ) ;
x3 + z
> subs(tan(x) = sin(x)/cos(x), cos(x)^2 = 1 - sin(x)^2, cos(x)^2 + tan(x)^2 );
1 – sin2(x) + sin2(x)/cos2(x)
Příkazy expand a factor.
Na základě příkazu tvaru expand(výraz) se roznásobí výraz a upraví na součet členů.
Příkaz tvaru factor provádí činnost opačnou.
> vyraz1 : = (x + y + z)^2 – (x + y)^2 ;
vyraz1 : = (x + y + z)2 – (x + y) 2
> simplify(vyraz1) ;
2xz +2yz + z2
> expand (vyraz1) ;
2xz +2yz + z2
Zde příkaz expand provede totéž jako příkaz simplify.
> vyraz2 : = cos(x+y) – e^(x+y) + (n + 1)!^2 / (n!^2) ;
vyraz2 : = cos(x+y) – e(x+y) + ((n+1)!)2/(n!)2
> simplify(vyraz2);
cos(x+y) – ex+y + n2 + 2n + 1
> expand(vyraz2);
cos(x)cos(y) – sin(x)sin(y) – exey + (n+1)2
> vyraz3 : = ( x + y )^4;
vyraz3 : = ( x + y ) 4
> simplify(vyraz3) ;
( x + y ) 4
> expand(vyraz3) ;
x4 + 4x3y + 6x2y2+ 4xy3 + y4
> factor(%);
( x + y ) 4
> factor ( x^2 + 2*x +1);
( x + y ) 2
> vyraz4 : = x^4*sin(y)^4 + x^4*sin(y)^3 + x^2*sin(y) + x^2 ;
vyraz4 : = x4*sin(y)4 + x4*sin(y)3 + x2sin(y) + x2
> factor( vyraz4);
x2(sin(y) + 1)(x2sin(y)3 + 1 )
Matice a determinanty.
Všeobecně se tvrdí, že lineární algebra je jednou z nejlépe propracovaných částí Maplu. Většina příkazů je ve speciální knihovně linalg . V první části budeme studovat problematiku lineární algebry pomocí příkazů, nevyžadujících spolupráci knihovny linalg, ve druhé části se zmíníme o použití knihovny.
Maticové a vektorové operace přímo zabudované v jazyku Maple a příkaz evalm. Matice i vektory se nazývají pole. Pro vektory je to jednorozměrné pole a jako příkaz pro vytvoření takového pole lze volit některý z následujících tvarů
array( 1..n ),
array( 1..n, [ v1, v2, . . . , vn ] ),
array( [ v1, v2, . . . , vn ] ),
kde n je přirozené číslo udávající počet složek vektoru a v1, v2, . . . , vn jsou výrazy pro výpočet odpovídajících složek vektoru.
Podobně matice typu (m/n) je dvojrozměrné pole, které je definováno některým z výrazů
array( 1..m, 1..n ),
array( 1..m, 1..n , [[v11, v12, . . . , v1n] ,[ v21, v22, . . . , v2n], . . . ,
[vm1, vm2, . . . , vmn ]] ),
array([[v11, v12, ... , v1n] ,[ v21, v22, ... , v2n ] , ... , [ vm1, vm2, ... , vmn ]]),
kde m, n jsou přirozená čísla a vij jsou výrazy pro výpočet prvků v i-tém řádku a j-tém sloupci matice.
Pro operace s poli je zaveden příkaz evalm a operátory + ( sečítání polí ) , &* ( násobení pole polem), * ( násobení pole číslem ), ^(-1) (inverze matice ), ^n ( n tá mocnina ), &*( ) ( vytvoření jednotkové matice ) . Uvedeme si nyní příklady, na kterých budeme demonstrovat použití předchozích příkazů.
> array(1..3);
[ ?1, ?2, ? 3 ]
Vidíme, že nejsou-li složky konkrétně definovány, vytvoří se pouze oindexované pole.
> a : = array(1..3, [2, 1, -1] );
a : = [2, 1, -1]
> b : = array (1..3, [-2, -1, 1] );
b : = [-2, -1, 1]
> a+b = evalm( a + b );
a + b = [0, 0, 0]
> a.b = evalm(a&*b);
ab = -6
A:=array(1..2,1..3);
A := array(1 .. 2, 1 .. 3, [])
> print(%);
EMBED Equation.3
> A[2,2]:=x;
A2, 2 := x
> print(%%);
EMBED Equation.3
Použijeme k definování pole další možnost.
> B:=array(1..2,1..3, [ [1,2,3], [5,3,-2] ] );
> C:=array([[-2,1],[1,-3],[1,4]]);
> K:=evalm(B&*C);
Jednotkovou matici - konkrétně typu 3/3 – definujeme v následujícím příkazu.
> Id : = array (1..3,1..3,identity) ;
Id : = array (identity, 1..3,1..3, [])
> evalm(Id);
Ukázali jsme si různé možnosti, pomocí kterých lze definovat matici jako dvojrozměrné pole a provedli jsme operaci součinu dvou matic. Pomocí příkazu map (diff, matice, proměnná ) lze danou matici derivovat,tj najít matici, jejíž prvky jsou derivace prvků původní matice. .
R:=array(1..2,1..2,[[sin(x)-x,cos(x^2)],[exp(x),x^5+5*x^3-x]]);
> DerivaceR : = map(diff,R,x);
DerivaceR : = 3
Všimneme si nyní problémů, které vznikají při násobení matice vektorem a vektoru maticí. Ukážeme si některé příklady. Definujme nejdříve vektor v.
v : = array (1..2, [y, z]);
v := [y, z],
zřejmě vektor v lze považovat za matici typu 1 / 2, tj. jeden řádek dva sloupce. Následujícím příkazem provedeme násobení matice R vektorem v zleva. To znamená, že provádíme operaci násobení mezi typy 1 / 2 a 2 / 2 s výsledkem typu 1 / 2. Skutečně
> evalm(v&*R);
[(sin(x) - x) y + z exp(x), y cos(x2 ) + (x5 + 5 x3 - x) z]
Provedeme-li ale příkaz násobit matici R zprava vektorem v , což formálně odporuje pravidlům pro násobení matic, příkaz se opět provede.
> evalm(R&*v);
[(sin(x) - x) y + z cos(x2 ), y exp(x) + (x5 + 5 x3 - x) z]
Maple při násobení matice vektorem pohlíží na vektor o n složkách jako na matici typu 1/n nebo matici typu n/1 tak, aby vyhověl pravidlům o násobení matic.
Definujeme-li vektor jako dvojrozměrné pole (array), pak Maple dodržuje pravidlo o násobení matic.
> v1: = array( 1 .. 2, 1.. 1, [ [y], [z] ] );
v1 : =
> evalm(v1&*R);
error …
Pro operace s algebraickými strukturami s výhodou používáme knihovnu linalg , kterou vyvoláme příkazem
> with(linalg) :
za který je vhodné dávat dvojtečku, abychom se vyhnuli záplavě informací, která následuje při aplikaci středníku.
Potom kromě již uvedených příkazů array a evalm lze použít i následující příkazy pro popis struktur jako je vektor a matice
vector([v1, v2, . . . vn])
vector ( n, i -> výraz )
matrix([[v11, v12, ... , v1n], [v21, v22, ... , v2n], ... , [vm1, vm2, .. , vmn]])
matrix(m,n,[v11, v12,..., v1n, v21, v22,..., v2n, ... , vm1, vm2,..., vmn])
matrix (m, n, ( i, j ) -> výraz)
kde zároveň vi a vij jsou výrazy.
V následující části si uvedeme další příkazy pro operace s vektory a maticemi. ( Pro označení matic budeme i nadále používat velká písmena, pro označení vektorů, i když je budeme vyjadřovat jako matice s jednou dimenzí jednorozměrnou , malá písmena. Zdůrazňujeme, že je to pouze naše dohoda, nikoliv požadavek jazyka Maple. )
příkaz matematický zápis nebo vyjádření
add ( u,v ) .…. u + v
add ( A, B ) ….. A + B
multiply ( A, B) ….. A . B
multiply ( A, v) …. A . v
crossprod ( u, v ) …. u x v
transpose ( A ) …. AT
inverse ( A ) .… A -1
trace ( A ) …. stopa matice A
rank ( A ) …. hodnost matice A
det ( A ) …. determinant matice A
eigenvals ( A ) …. vlastní čísla matice A
eigenvects ( A ) …. vlastní vektory matice A
charpoly ( A ) .… charakteristický polynom matice A
gausselim ( A ) …. převod matice A na gaussovský tvar
gaussjord ( A ) ….. převod na gaussovsko-jordanovský tvar
linsolve ( A, b ) ….. řešení soustavy AxT = bT
Uvedeme si nyní aplikace předchozích příka
Vloženo: 28.05.2009
Velikost: 562,00 kB
Komentáře
Tento materiál neobsahuje žádné komentáře.
Mohlo by tě zajímat:
Skupina předmětu BMA2 - Matematika 2
Reference vyučujících předmětu BMA2 - Matematika 2
Copyright 2025 unium.cz


