- 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álVYSOKÉ UČENÍ TECHNICKÉ V BRNĚ
FAKULTA ELEKTROTECHNIKY A INFORMATIKY
Ústav matematiky
Mgr. MARIE TOMŠOVÁ
Doc. RNDr. Josef ZAPLETAL, CSc.
POČÍTÁME S MAPLEM
Text byl zpracován s užitím skript Matematika1, části první a druhé doc. RNDr. Josefa Nedomy CSc. a skripta Úvod do programového souboru Maple V od prof. Ing. Jaroslava Buchara, DrSc.
MAPLE
Maple je počítačové prostředí vyvinuté na univerzitě ve Waterloo v Kanadě pro snažší používání matematiky. Jeho název je odvozen z anglického Mathematics pleasure tj. matematika potěšením. Patří mezi programy, které na rozdíl od standardních programů pro numerické výpočty modelují matematické operace se symbolickými výrazy. Systémy podobné MAPLU jsou např. program Excel, MATLAB, ve vědeckém světě se používa MATHEMATICA a pro jednodušší i symbolické výpočty jazyk Derive. Silnou stránkou jazyka Maple je podrobná nápověda a skutečnost, že může být používán jednak interaktivně (jako zobecněná kalkulačka), jednak jako programovací jazyk. My jej budeme
využívat pouze prvním způsobem.Interaktivní způsob spočívá v následujícím postupu práce:
1. Po spuštění vypíše Maple ohlašovací znak > zvaný prompt a umístí kurzor bezprostředně za ním.
2. Napíšeme maplovský výraz, který má být zpracován. Tento výraz musí mít přesně předepsaný, tzv. syntaktický tvar. Přípustné tvary postupně probereme. Jestliže nám na jeho zapsání nestačí řádek, stiskneme tlačítko ENTER anebo dopíšeme řádek až do konce. Maple reaguje promptem na dalším řádku a čeká na pokračování zápisu. Tak lze rozepsat výraz i na více řádků.
3. Výraz ukončíme středníkem a pokračujeme dalším maplovským výrazem. Stiskneme-li po středníku tlačítko ENTER, Maple zpracuje všechny předcházející výrazy ( od posledního zpracování ) a na obrazovce se objeví výsledky jejich zpracování. Chceme-li potlačit výpis některého výsledku na obrazovce, pak příslušný výraz ukončíme dvojtečkou místo středníku. Maple vypíše prompt a čeká na další mapleovský výraz.
Symboly, jména a přiřazovací příkaz.
Přejdeme nyní k základním pojmům Maplu.
Libovolnou posloupnost vytvořenou z malých a velkých písmen latinské abecedy a arabských číslic 0, . . . , 9 a symbolu podtržení, začínající písmenem nazveme identifikátorem .
Identifikátor může mít až 499 znaků. Maple rozlišuje malá a velká písmena. Příklady identifikátorů:
A15, x, Novak, alfa, atd. Pozor, A 15 nebo 1a nejsou identifikátory. V prvním případě posloupnost znaků obsahuje mezeru, ve druhém případě posloupnost začíná číslicí.
Některé identifikátory jsou v Maplu rezervovány pro označení maplovských příkazů a jiných speciálních objektů. Říkáme jim klíčová slova. Takový identifikátor nelze použít pro jiné účely. Je jich několik stovek, není ale nutné si je pamatovat. Maple sám nám oznámí chybu, použijeme-li jich k jinému účelu nežli jsou určeny.
S identifikátory, které nejsou klíčovými slovy, zachází Maple dvěma způsoby: jako se symboly a jako se jmény maplovských výrazů. Tak např výsledkem vyhodnocení maplovského výrazu
[> x + x ;
po odklepnutí ENTER bude 2 x pokud identifikátor x je symbolem a výsledk bude 14 pokud x je jménem čísla 7. Pojem jména bude definován na následující straně.
Po vyvolání ( spuštění ) Maple považuje každý identifikátor ( kromě klíčových slov ) za symbol.Identifikátor se stává jménem nějakého výrazu až na základě tzv. přiřazovacího příkazu, který má tvar
identifikátor : = výraz
Na základě tohoto příkazu se vyhodnotí výraz a výsledek se označí uvedeným idenfikátorem. Tak například příkazem
[ > x: = 3 + 4; se identifikátor x stane jménem čísla 7. To lze ověřit zmáčnutím tlačítka ENTER a jako výsledek dostaneme x:=7, a výsledkem příkazu
[> x + x ;
je po zmáčknutí tlačítka ENTER 14.
Obecně řečeno, při vyhodnocování výrazu zachází Maple s identifikátorem, který je jménem tak, jakoby na jeho místě byl výraz, který tento identifikátor pojmenovává.
Identifikátor, který se stal jménem, představuje příslušný výraz po celou dobu, až do nového vyvolání Maplu, s vyjímkou dvou případů:
a) novým přiřazovacím příkazem byl pojmenován jiný výraz,
b) ze jména se stal opět symbolem na základě speciálního přiřazovacího příkazu majícího tvar
identifikátor : = ´ identifikátor ´
Tak například vezmeme-li náš předchozí příklad kdy x je jménem čísla 7, po provedení příkazu
[> x:=´x´;
se z x stává opět pouhý symbol a výsledkem příkazu
[> x + x;
je 2 x, jak si laskavý čtenář může ověřit.
Podobný význam jako výskyt jména má v maplovském výrazu výskyt symbolu procenta. Označuje výsledek vyhodnocení posledního předcházejícího výrazu. Podobně symboly %% a %%% označují výsledky vyhodnocení předposledního a před - předposledního předcházejícího výrazu.
Množiny seznamy a posloupnosti.
V maplu je zaveden pojem množiny ve stejném smyslu jako v matematice.Je však omezen jenom na konečnou množinu. Zápis je stejný jako v matematice, mezi svorkové závorky, tj. mezi { }, se zapíší prvky (maplovské výrazy) a oddělí se čárkami. Pro množinové operace sjednocení, průnik a rozdíl se používají příkazy union, intersect a minus ( jsou to klíčová slova ).
Příklady.
[> A:={4,-3, 5, 5, 1, 2,10}; po odklepnutí klávesy ENTER dostaneme
A : = { 1, 2,-3, 4, 5, 10}
Maple zařadil do množiny číslo 5 pouze jednou ( ve shodě s pojmem množina ) a uspořádal si prvky v množině podle vlastních kritérií. Současně označil množinu identifikátorem A a tím se stal tento identifikátor jménem.
Provedeme a vypočteme další přiřazení a to
[>a:=3; po provedení přiřazení-ENTER dostaneme
a:=3 dále
[> B:={ 4, 2, a, b}; po ENTER dostaneme
B:={ 2, 3, 4, b} , poněvadž ve výrazu na pravé straně identifikátor a je jménem čísla 3, Maple s ním zachází jako s číslem 3.Napišme dále
[>AunionB ; po ENTER dostaneme
AunionB Maple považuje zápis AunionB za symbol ( je to pro něj identifikátor ). Chceme-li, aby považoval union za klíčové slovo označující příkaz ke sjednocení množin A a B, musíme použít mezery, tj. napsat[> A union B ;
{ 1, 2, -3, 3, 4, 5, 10, b }
Příkaz
[> % intersect %%% ; dá výsledek
{ 2,3,4,b }
Pomocí symbolu % jsme s vysledkem předchozí operace provedli průnik s výsledkem předpředpřed-chozí operace.
Příkaz
[> C:= %% minus {-3,a,10,b} ; Enter dá výsledek
C:={ 1, 2, 4, 5 }
Pozor, identifikátor a je ménem čísla 3.
V dalším nebudeme již psát za příkaz Enter, po kterém následuje realizace, případně přepis daného příkazu.
Kromě množin jsou v Maplu zavedeny tak zvané seznamy. Jejich zápisy se liší pouze tím, že místo svorkových závorek se používají hranaté závorky. Na rozdíl od množiny může v seznamu jeden a týž prvek vystupovat víckrát. Pro seznamy je zaveden příkaz member.[> presence:=[Tyc, Bayer, Havel, Krupková, Tyc] :
Dvojtečkou se potlačuje tisk, příkaz se však provede a lze aplikovat další příkaz member.
[> member ( Bayer, presence);
true Příkazem member se zjišťuje, zda seznam označený jménem presence obsahuje prvek Bayer. Odpověď je pozitivní.
[> member ( Zapletal, presence);
false
Odpověď je negativní.
Jestliže ke jménu seznamu přidáme do hranatých závorek číslo, hovoříme o jménu s indexem . Toto jméno s indexem označuje položku v seznamu v pořadí udaném číslem.
[> presence[2] ;
Bayer
[> D:= presence[3] ;
Error, attempting to assign to ´D´, which is protected
Maple upozorňuje, že identifikátor D je klíčovým slovem a nemůže být proto použit k pojmenování třetího prvku seznamu presence.
[> F:= presence[3] ;
F:= Havel
Jak pro množiny tak pro seznamy je v Maplu k dispozici příkaz nops na jehož základě se počítá počet prvků.
[> presence1 := {Tyc, Bayer, Havel, Krupková, Tyc}:
[> nops( presence ) ;
5
ale pozor
[> nops (presence1) ;
4
V případě seznamu započítává příkaz nops prvek tolikrát, kolikrát se v seznamu opakuje. V případu aplikace na množinu pouze a právě jedenkrát. Kromě množin a seznamů jsou v Maplu zavedeny posloupnosti. Zápisy se liší pouze tím, že se nepoužívají žádné závorky. Stejně jako v seznamu, může tentýž prvek vystupovat vícekrát. Stejně jako seznam, může i posloupnost být označena jménem a může být použito jméno s indexem.
[> Posl : = 7,4,1,3,4 ;
Posl := 7,4,1,3,4
[> Posl[2] + 6 ;
10
[> A : = [ Posl] ;
A : = [ 7,4,1,3,4]
Z posloupnosti byl vytvořen seznam a pojmenován identifikátorem A . Pokud jsme s jazykem Maple pracovali soustavně, původní pojmenování množiny {4,-3, 5, 5, 1, 2,10}
identifikátorem A na straně 2 bylo tímto zrušeno. Analogicky vytvoříme z posloupnosti množinu.
[> C : = { Posl } ;
C : = {1, 3, 4, 7}
[> nops( A ) ;
5
ale
[> nops ( C ) ;
4
Výpočet hodnoty funkce zadané explicitně.
Jestliže funkce u je zadána výrazem pro výpočet hodnoty, např. u(x) = x2 + 2 x - 1, potom výpočet její hodnoty v konkrétním bodě může být proveden na základě příkazu subs, který má tvar
subs ( původní proměnná = náhrada, výraz )
Tak v našem případě funkce u píšeme
[> subs ( x = 2, x^2 + 2*x - 1 ) ;
7
Protože z předchozího je a jménem čísla 3 a my je budeme chtít přiřadit proměnné x, musíme provést příkaz
[ > a : = ´a´ ;
a pak po provedení příkazu
[> subs ( x = a, x^2 + 2*x - 1 ) ;
dostaneme
a2+ 2a - 1
Je dobré pojmenovat výraz ( x2 + 2 x - 1 ) jménem, aby se zjednodušily další příkazy s ním prováděné.
[> u : = x^2 + 2*x - 1 :
[> subs ( x = 2, u) ;
7
Standardní funkce
V Maplu je zavedena řada funkcí. Jejich jména patří mezi klíčová slova. Uvedeme některé z nich.
ln(x) nebo log(x) . . . přirozený logaritmus
log10(x) . . . dekadický logaritmus
log[a](x) . . . logaritmus o základu a
sqrt (x) . . .
abs (x) . . .
signum (x) . . . znaménko čísla x
sin(x) , cos(x) , tan(x), cot(x) , sec(x) , csc(x) . . . goniometrické funkce
arcsin(x) , arccos(x) , arctan(x), arccot(x) , arcsec(x) , arccsc(x) . . . cyklometrické funkce
sinh(x) , cosh(x) , tanh(x), coth(x) , sech(x) , csch(x) . . . hyperbolické funkce
arcsinh(x) , arccosh(x) , arctanh(x), arccoth(x) , arcsech(x) , arccsch(x) . . . hyperbo- lometrické funkce
Haeviside(x) . . . Haevisideova funkce
Poznámka. Při výpočtu hodnoty goniometrické funkce v bodě x = k.Pi , kde k R je
výsledek příkazu subs opět ve tvaru násobku Pi.
Tak například
[> subs( x = Pi / 4, sin(x) + x^2 ) ;
sin() +
Zajímá-li nás konkrétní hodnota výsledku, lze užít příkaz
[ > evalf ( % ) ;
1.323957056
Podobně pokud za x dosazujeme libovolné reálné číslo, které ani nevyjadřujeme jako násobek Pi, dostaneme často při použití příkazu subs jako výsledek opět pouze formální zápis.
[> subs ( x = 3.1, cos(x) + 1) ;
cos(3.1) + 1
Chceme- li obdržet konkrétní hodnotu , lze postupovat např. takto
[> cos(3.1) + 1 ;
.0008648497
Případně provést příkaz
[ > evalf ( %% ) ;
.0008648497
V dalším si ukážeme ještě jiné možnosti konkrétních výpočtů.
Definování funkce a výpočet funkční hodnoty.
Příkazy piecewise, proc, unapply .
Kromě standardních funkcí má Maple k dispozici i prostředky pro přímé definování funkcí uživatelem. Jsou to příkazy tvaru:
jméno funkce : = proměnná -> výraz
[> u1 : = x -> x^2 + 2*x - 1 ;
u1 : = x -> x2 + 2 x - 1 ;
[> u1(2) ;
7
[> u1(a) ;
a2 + 2 a - 1
Podobně lze provest výpočet hodnoty argumentů násobků Pi
[> u2 : = x -> sin(x) ;
u2 : = x -> sin(x)
[> u2(Pi / 2) ;
1
ale pozor
[> t : = x -> sin(x) + x ;
t : = x -> sin(x) + x
[> t(Pi / 2) ;
1 +
Chceme-li výsledek opět ve tvaru reálného čísla, napíšeme opět příkaz
[ > evalf ( % ) ;
2.570796327
jméno funkce : = proc ( proměnná ) výraz end
[> u3 : = proc(x)x^2 + 2*x -1 end ;
u3 : = proc(x)x^2 + 2*x -1 end
[> u3(2) ;
7
[> u3(a) ;
a2 + 2 a - 1
jméno funkce : = unapply ( výraz, proměnná )
[> u4 : = unapply(x^2 + 2*x -1, x );
u4 : = x -> x2 + 2 x - 1
[> u4(2) ;
7
[> u4(a) ;
a2 + 2 a - 1
Podobně při dosazování násobků Pi dostaneme
[> u5 : = unapply( sin(x) + x , x) ;
u5 : = x - > sin(x) + x
[> u5 (Pi/2) ;
1 +
jméno funkce : = proměnná -> piecewise ( nerovnost, výraz, nerovnost, výraz, . . . )
[> v : = x -> piecewise( x < 1,-1, x < 2, 1, 3 ) ;
v : = x -> piecewise( x < 1,-1, x < 2, 1, 3 )
Definuje se zde funkce
[ > v(1) + 4 ;
5
Podobně lze provést obecnější předpis jako např.
[> w1 : = x -> piecewise( x < 0, cos(x), x>= 0 , 1 + x^2 ) ;
w1 : = x -> piecewise( x < 0, cos(x), x>= 0 , 1 + x^2 )
Stejný příkaz lze v jazyce Maple formulovat následovně :
[> w2 : = proc(x) if x < 0 then cos(x) else 1 + x^2 fi end ;
w2 : = proc(x) if x < 0 then cos(x) else 1 + x^2 fi end ;
Poslední příkaz provede totéž co předchozí.
[> w1(- 3.141) ; w2(-3.141 ) ;
-0,999999824
-0,999999824
Zároveň je dobré vědět, že zatím co funkce w1 vytvořená pomocí příkazu piecewise akceptuje i hodnotu v symbolicky zadaném čísle pomoci Pi , funkce w2 takový způsob dosazení odmítá. Je to tím, že funkce w2 byla definována pomocí několika příkazů. Lze ji proto v Maplu použít pouze pro práci s číselnými hodnotami.
V následujícím příkladu si ukážeme chybu, která se často objevuje.
[> p : = x^4 - 3*x^3 + 2*x -1 ;
p : = x4 - 3 x3 + 2*x -1
[> p(2) ;
error
Identifikátor p není jménem funkce. Pojmenovává výraz.
Vyčíslení hodnoty p(2) lze provést např. takto : Následujícím příkazem se stane p jménem funkce x4 - 3 x3 + 2*x -1, jejíž hodnota v bodě 2 se vyčíslí následujícím příkazem.
[> p : = x - > x^4 - 3*x^3 + 2*x -1 ;
p : = x - > x4 - 3 x3 + 2*x -1
[> p(2) ;
-5
Další možnost je ta, že aplikujeme příkaz unapply. Protože p je již funkce, provedeme aplikaci příkazu na identifikátor pp.
[> pp : = 3*x^2- x / 2 +5 ;
pp : = 3 x2 - x / 2 +5
[> pp(2) ;
error , pp je identifikátor
[> r : = unapply (pp, x) ;
r : = x - > 3 x2 - x / 2 + 5
[> r(2) ;
16
Funkce složená
V další části budeme vytvářet složitější funkce z jednodušších a utvoříme fumkce pomocí operátoru složení @ případně operátoru vícenásobného složení @ @ .
[> f : = z - > z ^2 ;
f : = z - > z 2
[> g : = z - > z + Pi ;
g : = z - > z +
[> f(1)/g(2) ;
Funkci lze použít i ve výrazu
[> eval f( g(1)^2 - f(4) ) ;
1,15278971
Definujme dále
[ > q : = proc(x)( x^3 - 1) / ( x + 3 ) end :
[ > q(a) + g(b) ;
Jsou-li f a g funkce, potom funkce f ° g je funkce složená , která dává stejný výsledek jako funkce f ( g ( x ) ) . V Maplu provádíme takové složení pomocí příkazu @ . Uvedeme si několik příkladů.
[> s : = f @ g + q ;
s : = f @ g + q
( což je vlastně ( x + ) 2 + , jak je vidět po provedení následujícího příkazu : )
[> s(2) ;
(2 + ) 2 +
Podobně
[ > h : = sin @ g ;
h : = sin @ g
Vyvořila se složená funkce sin ( z + ), což lze ověřit např. výpočtem pro z = 1.
[ > h(1) ;
- sin(1)
Vidíme, že výsledek jsme obdrželi v podstatě v analytické formě. Dosazujeme-li za z číslo necelé, potom dostaneme výsledek jako reálné číslo. Tak např.
[> h(1.001) ; dává výsledek
-.8420108663
reálnou hodnotu výrazu -sin(1) lze v tomto okamžiku získat příkazem
[ > evalf(%%);
-.8414709848
Dále se zavádí operátor opakovaného složení @@ . Tak např. ( f @@ n ) je n-krát složená funkce, konkrétně ( f @@ 3 ) je f ( f ( f ( x ) ) ).
[ > ( g @@ 3 )(a) ;
a + 3
příkaz lze psát bez mezer
[ > (g@@3)(a) ; nebo [ > ( g@@3 )(a) ; a dostaneme správný výsledek. Naopak po zápisu
[ > ( g @ @ 3 )(a) ; se objeví text, který nás upozorňuje na druh chyby.
Výpočet inversní funkce.
Přímý příkaz k výpočtu inversní funkce inv f k funkci f v jazyku Maple není zaveden.
Výpočet však lze provést pomocí funkce solve , kterou si nejprve popíšeme.
Příkaz pro nalezení řešení rovnice má tvar
solve(rovnice)
Příkaz pro nalezení řešení rovnice vzhledem k dané neznámé má tvar
solve(rovnice, neznámá)
Příkaz pro řešení soustavy rovnic má tvar
solve( množina rovnice, množina neznámých)
Uvedeme si nyní příklady :
[ > solve(3*x + 2 = 5 ) ;
1
[ > rešeni1 : = solve( x^4 - b, x ) ;
řešeni1 : = b1 / 4 , I b1 / 4, - b1 / 4 , - I b1 / 4
Pokud je dán pouze výraz místo rovnice, Maple jej okamžitě chápe jako rovnici s nulovou stranou.
[ > rešeni1 [4] / řešeni1 [2] ;
-1
[ > rešeni 2 : = solve ( { x + y = 1, 2*x + y = 3}, {x, y} ) ;
rešeni 2 : = { y = -1, x = 2 }
Maple nalezl řešení a pojmenoval je jménem rešení 2. Identifikátorům x a y však hodnoty 2 a -1 nepřiřadil. K přiřazení hodnot má Maple pro tento případ k dispozici příkaz assign.
[> assign(rešeni2) ;
Maple nevytiskne nic, ve skutečnosti však provedl tímto příkazem přiřazení x : = 2 a podobně y : = -1. To si ověříme následujícím výpočtem
[> x + 3*y ;
-1
Než přistoupíme k výpočtu inversní funkce pomocí dvou příkazů je nutno přetransformovat x a y v identifikátory.
inv f : = x -> solve( f ( inv f ) = x, inv f ) :
inv f : = inv f ( x ) ;
Provedeme nyní konkrétní výpočet.
[ > b1 : = x-> 1 + sqrt( 3 + exp (2*x)) ;
b1 : = x-> 1 +
[ > invb1 : =x->solve( b1( invb1) = x, invb1 ) :
[ > invb1 : = invb1(x) ;
invb1 : =
Výsledek ověříme tak, že určíme opět inversní funkci k dané funkci výpočtem .
[ > b2 : = x-> (1 / 2)*ln( -2 -2*x + x^2) ;
b2: = x->
[ > invb2 : = x->solve( b2( invb2) = x, invb2 ) :
[ > invb2 : = invb2 ( x ) ;
invb2 : = 1 + , 1 -
Vidíme, že inversní funkce k b2 není určena jednoznačně. Vysvětlete.
Grafy funkcí.
Grafy jsou velmi důležitou pomůckou pro znázornění a lepší pochopení řešení matematických problémů. Většina příkazů pro kreslení grafů je ve speciální knihovně plots. Popíšeme nejdříve používání Maplu bez knihovny plots.
Budeme používat nyní přímo zabudovaný příkaz plot. Budeme předpokládat, že graf funkce f je dán v kartézských souřadnicích x, y rovnicí y = f ( x ), x [ a, b ]. Jestliže f je standardní funkce Maplu nebo je definována uživatelem tak jak bylo uvedeno výše, potom příkaz k nakreslení grafu má tvar
plot ( f ( x ) , x = a..b ) ;
Místo f ( x ) lze použít přímo výraz pro výpočet hodnoty funkce f . Příkaz má pak tvar
plot (výraz, x = a . . b ) ;
Ukážeme si několik příkladů.
[ > f : = x - > 7*sin(x) + sin(7*x) ;
f : = x - > 7sin(x) + sin(7x) [ > plot( f ( x ), x = 0..10 ) ; ( Obr. 1.)
Obr. 1.
Stejný výsledek obdržíme po provedení příkazu
[ > plot(7*sin(x) + sin(7*x), x = 0..10 ) ;
Maple připouští kreslit grafy y = f ( x ), x [ a, b ] pouze pro ty hodnoty proměnné x z intervalu [ a, b ] , pro které f ( x ) leží v předem zadaném intervalu [ c, d ]. Příkaz má pak tv
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 2024 unium.cz