Anda di halaman 1dari 70

Antoni C.

Mitu

Rafa Orlik

Grzegorz Pawlik

Wstp do pakietu algebry


komputerowej Maple

Na prawach rkopisu - wszelkie prawa zastrzeone

Wrocaw 2007

Spis treci

1 Maple w przykadach
1.1 Maple jako kalkulator . . . . . . . . . . . .
1.2 Przeksztacanie wyrae . . . . . . . . . . .
1.3 Analityczne rozwizywanie rwna . . . . .
1.4 Numeryczne rozwizywanie rwna . . . . .
1.5 Dziaania na macierzach . . . . . . . . . . .
1.6 Pochodne i caki . . . . . . . . . . . . . . .
1.7 Rwnania rniczkowe . . . . . . . . . . . .
1.8 Wykresy . . . . . . . . . . . . . . . . . . . .
1.9 Projekt: ruch pod wpywem siy F (t) = et
2 Podstawowe pojcia, struktury i
2.1 Uwagi oglne . . . . . . . . . .
2.2 Podstawowe obiekty . . . . . .
2.3 Wyraenia . . . . . . . . . . . .
2.4 Struktury danych: zbiory, listy i
2.5 Zmienne . . . . . . . . . . . . .

konstrukcje
. . . . . . . .
. . . . . . . .
. . . . . . . .
tablice . . .
. . . . . . . .

3 Funkcje Maple
3.1 Upraszczanie i przeksztacanie wyrae
3.2 Elementy programowania . . . . . . . .
3.3 Funkcje i procedury . . . . . . . . . . .
3.4 Elementy grafiki dwuwymiarowej . . . .
3

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

5
5
6
6
7
7
8
8
8
9

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

13
13
14
17
22
24

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

31
31
32
33
33

Spis treci

3.5

3.6
3.7

3.8

3.9

3.4.1 Podstawowe konstrukcje . . . . . . . . . . . . . . . . . . .


3.4.2 Wykresy parametryczne . . . . . . . . . . . . . . . . . . .
3.4.3 Wykresy w ukadzie wsprzdnych biegunowych . . . . .
3.4.4 Wykresy krzywych zadanych w postaci niejawnej . . . . .
3.4.5 Dane dyskretne . . . . . . . . . . . . . . . . . . . . . . . .
3.4.6 Pole wektorowe . . . . . . . . . . . . . . . . . . . . . . . .
3.4.7 Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.8 Animacja . . . . . . . . . . . . . . . . . . . . . . . . . . .
Elementy grafiki trjwymiarowej . . . . . . . . . . . . . . . . . .
3.5.1 Podstawowe konstrukcje . . . . . . . . . . . . . . . . . . .
3.5.2 Wykresy parametryczne, krzywa przestrzenna . . . . . . .
3.5.3 Wykresy w ukadach wsprzdnych: sferycznym i cylindrycznym . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.4 Wykresy powierzchni zadanych w postaci niejawnej . . .
3.5.5 Dane dyskretne . . . . . . . . . . . . . . . . . . . . . . . .
3.5.6 Pole wektorowe . . . . . . . . . . . . . . . . . . . . . . . .
3.5.7 Animacja . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozwizywanie rwna i nierwnoci algebraicznych . . . . . . .
Elementy algebry liniowej . . . . . . . . . . . . . . . . . . . . . .
3.7.1 Definiowanie wektorw i macierzy . . . . . . . . . . . . .
3.7.2 Podstawowe operacje na wektorach . . . . . . . . . . . . .
3.7.3 Podstawowe operacje na macierzach . . . . . . . . . . . .
3.7.4 Wartoci i wektory wasne . . . . . . . . . . . . . . . . . .
Granice, pochodne i caki . . . . . . . . . . . . . . . . . . . . . .
3.8.1 Granice . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8.2 Pochodne . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8.3 Szereg Taylora . . . . . . . . . . . . . . . . . . . . . . . .
3.8.4 Caki oznaczone . . . . . . . . . . . . . . . . . . . . . . .
3.8.5 Cakowanie numeryczne . . . . . . . . . . . . . . . . . . .
3.8.6 Caki niewaciwe . . . . . . . . . . . . . . . . . . . . . .
3.8.7 Caki nieoznaczone . . . . . . . . . . . . . . . . . . . . . .
3.8.8 Caki wielokrotne . . . . . . . . . . . . . . . . . . . . . . .
Wybrane zagadnienia analizy matematycznej . . . . . . . . . . .
3.9.1 Elementy analizy wektorowej . . . . . . . . . . . . . . . .
3.9.2 Rwnania rniczkowe zwyczajne: metody analityczne . .
3.9.3 Rwnania rniczkowe zwyczajne: metody numeryczne . .
3.9.4 Rwnania rniczkowe zwyczajne: metody graficzne . . .

.
.
.
.
.
.
.
.
.
.
.

33
35
36
36
37
38
40
41
41
41
43

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

44
45
46
46
48
49
52
52
55
56
57
58
58
59
60
61
62
62
63
63
64
64
66
67
69

Rozdzia

Maple w przykadach
Celem pierwszego wykadu jest prezentacja wybranych przykadw, ilustrujcych oferowane przez Maple narzdzia matematyczne. Ograniczymy si przy
tym do krgu typowych zagadnie z matematyki, z ktrymi student spotyka si
w czasie pierwszego roku studiw. Skadnia wystpujcych poniej polece bdzie szczegowo omwiona w kolejnych wykadach. Zachcamy Czytelnika do
modyfikowania kodu i prb eksperymentowania!

1.1

Maple jako kalkulator

Maple moe dziaa jako kalkulator, majcy wbudowane standardowe funkcje


matematyczne:
> 2.13*sin(2.22)-log(2.7)/exp(-0.11);
0.587939283
Dziaania na liczbach wymiernych s wykonywane bez konwersji na liczby rzeczywiste:
> 1/7+(2/12-1/3)/(1/2+4/13);
4
63

Zaimplementowana jest arytmetyka liczb zespolonych (I oznacza 1):


> 2*I + (1-I)/(1+2*I);
5

Rozdzia 1. Maple w przykadach


1 7
+ I
5
5

1.2

Przeksztacanie wyrae

Przypiszemy zmiennej a wyraenie b + c2


> a:= b + c^2;
a := b + c2
Zmienna a moe by uyta do konstrukcji wyrae arytmetycznych:
> a1:=a^5;
a1 := (b + c2 )5 ,
na ktrych mona wykonywa kolejne przeksztacenia. Na przykad, przedstawimy w postaci wielomianowej wyraenie przypisane zmiennej a1 :
> expand(a1);
b5 + 5 b4 c2 + 10 b3 c4 + 10 b2 c6 + 5 b c8 + c10

1.3

Analityczne rozwizywanie rwna

Dane jest rwnanie kwadratowe: x2 + 5 x + 1 = 0. Jego pierwiastki wynosz:


> solve(x^2+5*x+1=0,x);

5
21
5
21
+
,
2
2
2
2

Znajdziemy rozwizanie ukadu rwna liniowych: x + y = 2, x y = 0:


> solve({x+y=2,x-y=0},{x,y});
{y = 1, x = 1}

1.4. Numeryczne rozwizywanie rwna

1.4

Numeryczne rozwizywanie rwna

Gdy Maple nie znajduje cisego rozwizania rwnania, mona uy metod numerycznych do wyznaczenia przyblionego rozwizania. Taka sytuacja ma miejsce
2
dla rwnania: sin(x) = ex . Jedno z przyblionych rozwiza tego rwnania wynosi:
> fsolve(sin(x)=exp(-x^2),x);
0.6805981744

1.5

Dziaania na macierzach

Obliczymy wyznacznik, lad oraz macierz odwrotn macierzy A = [[1, 2], [1, 3]].
> with(linalg):
Warning, the protected names norm and trace have been redefined and
unprotected
> A:=matrix([[1,2],[1,3]]);
"
#
1 2
A :=
1 3
Wyznacznik i lad macierzy A wynosz:
> det(A); trace(A);
1
4
Macierz odwrotna do A ma posta:
> B:=evalm(A^(-1));

"

B :=

3 2
1
1

Rozdzia 1. Maple w przykadach

1.6

Pochodne i caki

Obliczymy pierwsz i drug pochodn funkcji sin(x):


> diff(sin(x),x); diff(sin(x),x$2);
cos(x)
sin(x)
R
Znajdziemy cak nieoznaczono cos(t) t2 dt:
> int(cos(t)*t^2,t);
Caka oznaczona

R2
1

t2 sin(t) 2 sin(t) + 2t cos(t)


sin(ln(x)) dx wynosi:

> int(sin(ln(x)),x=1..2);
cos(ln(2)) + sin(ln(2)) +

1.7

1
2

Rwnania rniczkowe

Rozwiemy rwnanie rniczkowe:


bodnego oscylatora harmonicznego.

d2
dt2

x(t) + x(t) = 0, opisujce ruch swo-

> difeq:=diff(x(t),t$2) + x(t)=0;


d2
dif eq := 2 x(t) + x(t) = 0
dt
> dsolve(difeq,x(t));
x(t) = C1 sin(t) + C2 cos(t)
W rozwizaniu wystpuj dwie dowolne stae: C1 i C2.

1.8

Wykresy

Na poniszym rysunku przedstawiono wykres funkcji y = cos(x)(x + sin(x))


w przedziale 0 x 4:

1.9. Projekt: ruch pod wpywem siy F (t) = et

> plot(cos(x)*(x+sin(x)),x=0..4*Pi);
10

6
x

10

12

Tworzenie wykresw trjwymiarowych jest rwnie proste. Narysujemy wykres


funkcji z(x, y) = sin(x, y):
> with(plots):
Warning, the name changecoords has been redefined
> plot3d(sin(x*y),x=-Pi..Pi,y=-Pi..Pi,axes=box);

1
0.5
0
0.5
1
3

1.9

1
0
y

1
x

Projekt: ruch pod wpywem siy F (t) = et

Przedstwione w tym rozdziale narzdzia Maple pozwalaj na analiz wielu


zagadnie fizycznych. Zbadamy jednowymiarowy, prostoliniowy ruch czstki o
masie m = 1 pod wpywem siy zalenej od czasu: F (t) = et . W chwili t = 0
spoczywajca czstka znajduje si w punkcie o wsprzdnej x = 0. Naley znale zaleno pooenia czstki od czasu x(t), narysowa wykres tej zalenoci
oraz obliczy czas t0 , po upywie ktrego czstka znajdzie si w punkcie o wsp-

10

Rozdzia 1. Maple w przykadach

rzdnej x = 1. 1
Naley rozwiza rwnanie Newtona dla siy F (t):
je w Maple:

d2
dt2

x(t) = et . Napiszemy

> restart:
> diffeq:=diff(x(t),t$2)=exp(-t);
d2
dif f eq := 2 x(t) = e(t)
dt
Rozwiemy to rwnanie:
> dsolve(diffeq,x(t));
x(t) = e(t) + C1t + C2
Przypiszemy znalezione rozwizanie zmiennej x:
> x := exp(-t)+ C1+ C2*t;
x := e(t) + C1 + C2t
Stae, oznaczone przez C1 i C2, wyznacza si z warunkw pocztkowych. Wiemy, e prdko w chwili t = 0 wynosi v(0) = 0. Prdko obliczamy jako pochodn pooenia czstki po czasie:
> v:=diff(x,t);
v := e(t) + C2
Z warunku v(0) = 0 otrzymujemy rwnanie 0 = exp(0) + C2 = 1 + C2, skd
C2 = 1. Nasze rozwizanie przyjmuje posta:
> x:=exp(-t)+ C1+t;
x := e(t) + C1 + t
Z drugiego warunku pocztkowego, x(0) = 0, otrzymujemy rwnanie x(0) =
exp(0) + C1 = 1 + C1, skd C1 = 1. Znalelimy w ten sposb zaleno x
od czasu:
> x :=exp(-t)-1+t;
x := e(t) 1 + t
Narysujemy wykres zalenoci x(t):
> plot(x,t=0..3);
1

Przedstawione poniej rozwizanie mona znacznie skrci. Naszym celem jest pokazanie
tego, e dysponujc bardzo ograniczonym zestawem funkcji Maple mona otrzyma zadowalajce
rozwizanie postawionego problemu.

1.9. Projekt: ruch pod wpywem siy F (t) = et

11

1.5

0.5

0.5

1.5
t

2.5

Czas t0 , bdcy pierwiastkiem rwnania x(t0 ) = 1, wyznaczymy numerycznie:


> fsolve(x=1,t);
1.841405660

12

Rozdzia 1. Maple w przykadach

Rozdzia

Podstawowe pojcia, struktury i


konstrukcje
2.1

Uwagi oglne

Zaczniemy od kilku wanych informacji na temat edytora arkusza roboczego


(ang. worksheet) pakietu. Interpreter Maple rozrnia due i mae litery. Informacj, ktra ma by przetworzona przez Maple, wpisuje si po znaku zachty. Skada
si ona z polece, funkcji, wyrae itd. i musi by zakoczona dwukropkiem lub
rednikiem. W linii moe znajdowa si wicej ni jedno polecenie; kade z nich
musi koczy si rednikiem lub dwukropkiem. Jeeli informacja wejciowa nie
mieci si w jednej linii, mona przej do nastpnej linii za pomoc kombinacji
klawiszy SHIFT + ENTER; tworzy si wwczas grupa dwch linii poczonych
z lewej strony klamr. Nacinicie klawisza ENTER powoduje wykonanie polece z danej linii (lub z kilku linii w obrbie jednej grupy). Gdy lini wejciow
zakoczono rednikiem powoduje to (z reguy) wywietlenie wyniku oblicze wykonanych przez Maple na ekranie; wyniki nie s wywietlane, gdy linia koczy
si dwukropkiem:
> 2;
2
> 3:
13

14

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

Podczas edycji arkusza roboczego szczeglnie przydatne s skrty CTRL+K i


CTRL+J, powodujce wstawienie nowej linii przed i po aktualnej linii. Informacj
wejciow mona wprowadza w trybie matematycznym albo tekstowym; wyboru
midzy nimi dokonuje si za pomoc klawisza F5. Uycie klawisza F3 powoduje
rozbicie grupy linii poczonych wspln klamr; klawisz F4 powoduje poczenie dwch grup linii. Wyraenia matematyczne, zapisane w notacjiMaple w trybie
tekstowym, mog by (po podwietleniu) zapisane w standardowej notacji matematycznej za pomoc cigu Format-Convert to-Math Expression dostpnego z
gwnego menu arkusza roboczego Maple.
Zawarto arkusza roboczego, lub jego czci, mona zapisa w formacie LATEX,
HTML oraz w plikach jzyka Fortran lub C. Zagadnienia te s krtko omwione
w rozdziale dwunastym.
Przy pracy z pakietem bardzo uyteczny jest rozwinity system pomocy. Informacj odnonie obiektu Maple o nazwie obiekt uzyskuje si wykonujc polecenie ?obiekt. Na przykad, informacj o cakowaniu otrzymuje si w nastpujcy
sposb:
> ?int;
Nie zamieszczamy tu, z braku miejsca, odpowiedzi Maple.
Polecenie restart restartuje jdro Maple i oczyszcza wewntrzn pami, powodujc tym samym usunicie przypisa nadanych zmiennym:
> restart;

2.2

Podstawowe obiekty

Zaliczaj si do nich liczby cakowite i uamki:


> 2; 1/9;

oraz liczby rzeczywiste:

2
1
9

> 27.2; 0.272*10^2; 0.272e2;


27.2

2.2. Podstawowe obiekty

15
27.200
27.2

Maple traktuje uamek 1/9 jako symbol, a nie jako liczb zmiennoprzecinkow.
Przejcia do reprezentacji zmiennoprzecinkowej dokonuje si za pomoc polecenia
evalf. W dalszej czci wykadu wprowadzone zostan odgrywajce podobne role
polecenia evalb, evalc, evalm. Maj one prost skadni:

evalf(expr) evalb(expr) evalc(expr) evalm(expr)


W naszym przypadku:
> evalf(1/9);
0.1111111111
Liczby zespolone, bdce wyraeniami arytmetycznymi, omwimy w rozdziale
2.3.
Druga grupa obiektw to stae matematyczne:
Pi ( = 3.14 . . .), exp(1) (e

podstawa logarytmw naturalnych), I = 1, infinity (), true, false


(patrz ?constants):
> Pi; evalf(Pi); exp(1); evalf(exp(1));

3.141592654
e
2.718281828
> I; infinity; true;
I

true
oraz zmienne globalne i otoczeniowe (ang. global and environment variables),
patrz ?ininame, w ich liczbie Digits (liczba cyfr znaczcych w arytmetyce zmiennoprzecinkowej):
> Digits;
10

16

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

Warto przypisana zmiennej tego typu moe by zmieniona za pomoc nowego


przypisania. Mona rwnie uy jej nowej wartoci jako parametru funkcji Maple
jak w poniszym przykadzie, gdzie podano 20 cyfr znaczcych liczby :
> evalf(Pi,20);
3.1415926535897932385
Ostatni omawiany podstawowy obiekt to acuch:
> Burek;
Burek
Maple oferuje wiele typw obiektw. Funkcje whattype i hastype:

whattype(expr) hastype(expr, typ)


dostarczaj informacji o typie obiektu. Liczby cakowite, uamki oraz liczby rzeczywiste s staymi o typie numerycznym (ang. numeric):
> whattype(2); whattype(1/9); whattype(27.2);
integer
f raction
f loat
> hastype(2,numeric); hastype(1/9,numeric); hastype(27.2,numeric);
true
true
true
Staa Pi nie ma typu numerycznego:
> whattype(Pi); whattype(evalf(Pi)); hastype(Pi,numeric);
symbol
f loat
f alse

2.3. Wyraenia

2.3

17

Wyraenia

Wyraenia s jednymi z najwaniejszych struktur Maple. W ich skad mog


wchodzi stae, zmienne, funkcje i acuchy. Omawianie wyrae rozpoczniemy
od wyrae arytmetycznych. Ich czci skadowe poczone s za pomoc dziaa
arytmetycznych: dodawania (+), odejmowania (-), mnoenia (*), dzielenia (/)
oraz potgowania (^):
> 2 + x^(2*y)/(x-y);
2+

x(2y)
xy

Jaki typ ma to wyraenie? Odwoamy si do zmiennej otoczeniowej %, ktrej


Maple przypisuje wynik ostatnio obliczonego wyraenia (zmiennej %% przypisuje
si wynik przedostatniego obliczonego wyraenia) i uyjemy funkcji whattype:
> whattype(%);
+
Powysze wyraenie jest (ma typ) sum.
Do konstrukcji wyrae mona uywa funkcji. Maple ma wbudowan wikszo elementarnych i specjalnych funkcji znanych z analizy matematycznej i
trygonometrii (patrz ?inifcn). Wiele funkcji z zakresu algebry, teorii liczb i
statystyki matematycznej znajduje si w pakietach, ktre musz by wczytane.
Spis dostpnych pakietw otrzymuje si wykonujc polecenie ?index[package].
W szczeglnoci sqrt, ln, exp, sin, arcsin, tan oznaczaj, kolejno, funkcje:
pierwiastek, logarytm naturalny, wykadnicz, sinus, arcus sinus i tangens. Do
wyznaczania wartoci bezwzgldnej suy funkcja abs. Funkcje wywouje si z
argumentem podanym w okrgym nawiasie:
> abs(sin(-Pi/2))+ y*tan(2*Pi/3);

1y 3
> (arcsin(x^2)-1)/(ln(exp(x)));
arc sin(x2 ) 1
ln(ex )
Gdy argument ma typ zmiennoprzecinkowy, Maple wykonuje obliczenia stosujc
artmetyk zmiennoprzecinkow:

18

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

> sqrt(3)+1/2; sqrt(3.0)+1/2;

1
3+
2
2.232050808

Wan
klas wyraen arytmetycznych s liczby zespolone, zawierajce sta

1
I = 1 . Obliczymy I 2 oraz iloczyn liczb zespolonych 2 + 3I, 2 3I:
> I*I;
1
> (2+I*3)*(2-I*3);
13
Funkcje Re i Im su do obliczania czci rzeczywistej i urojonej liczby zespolonej:
> Re(2+I*3);Im(2+I*3);
2
3
Funkcje abs i conjugate obliczaj warto bezwzgldn i liczb sprzon:
> abs(2+I*3);

13

> conjugate(2+I*3);
2 3I
Poniszy przykad moe zaskoczy uytkownika:
> Re(a+I*b);
<(a + bI)
Wynik jest bezporednim rezultatem filozofii oprogramowania pakietu Maple, w
myl ktrej w wyraeniach zespolonych (i nie tylko) wszystkie wystpujce zmienne s traktowane jako zmienne zespolone. Tak wic cz rzeczywista powyszego
wyraenia nie wynosi a. Aby a i b maj byy traktowane jako wyraenia rzeczywiste, uytkownik musi poinformowa o tym Maple, za pomoc polecenia assume
(omwionego w nastpnym rozdziale) albo polecenia evalc:
1

W zastosowaniach fizycznych uywa si notacji i =

2.3. Wyraenia

19

> evalc(%);
a
Druga grupa wyrae to wyraenia logiczne (patrz ?boolean), przyjmujce
wartoci logiczne prawda (true) i fasz (false). Tworzy si je za pomoc operatorw logicznych: and, or, not oraz operatorw relacji: < (mniejszy), <= (mniejszy
lub rwny), > (wikszy), >= (wikszy lub rwny), = (rwny), <> (nierwny). Polecenie evalb suy do obliczania wartoci logicznej wyraenia. Na przykad:
> 2>3; evalb(2>3); evalb(2-x>0);
3<2
f alse
x<2
W ostatnim przypadku Maple nie obliczy wartoci logicznej wyraenia, poniewa
zmiennej x nie przypisano wartoci. Zauwaymy, e wyraenia logiczne, w ktrych wystpuje staa Pi, mog nastrcza kopotw zwizanych z tym, e Maple
porwnuje wyraenia typu numeric, a Pi ma inny typ:
> evalb(2>Pi);
<2
Problem mona czciowo usun za pomoc polecenia is:
> is(2-Pi>0);
f alse
Przy konstrukcji wyrae naley rygorystycznie przestrzega hierarchii kolejnoci dziaania wystpujcych w nich operatorw: najwyej w niej umiejscowione
s operatory arytmetyczne, nastpnie operatory logiczne, a na kocu operatory
relacji (patrz ?operators[precedence]). Sugerujemy, w celu uniknicia pomyek, uywanie nawiasw tworzcych grupy wyrae. Zilustrujemy te uwagi na
przykadzie jednego z praw de Morgana: zaprzeczenie koniunkcji to alternatywa
zaprzecze:
> evalb((not(a and b)) = ((not a) or (not b)));
true
Zwraca uwag fakt, e wyraenia a i b nie byy deklarowane jako wyraenia logiczne. Jest to konsekwencj oglnej strategii Maple, polegajcej na okreleniu

20

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

typu wyraenia na podstawie kontekstu w ktrym je uyto. Zauwamy rwnie,


e wyraeniom a, b nie przypisano adnych wartoci logicznych. Oznacza to, e
Maple ma wbudowane tautologie logiczne.
Wyraenia arytmetyczne mona grupowa w cig wyrae, bdcy wan
struktur Maple, stosowan midzy innymi do tworzenia innych struktur danych.
Najprostszy sposb utworzenia cigu wyrae polega na uyciu operatora - przecinka (,). Na przykad:
> 1,a^2,sin(z);
1, a2 , sin(z)
> whattype(%);
exprseq
Wynik ma typ cig wyrae (ang. expression sequence).
Dwa podstawowe narzdzia do tworzenia cigw wyrae to polecenie seq oraz
operator powtrze $. Najczciej stosowane wywoanie polecenia seq ma posta:

seq(f, i=m..n)
gdzie f oznacza wyraenie, i - nazw (acuch), a m i n przypisano wartoci numeryczne. W wyniku otrzymuje si cig wyrae f obliczonych dla kolejnych wartoci
licznika i, wynoszcych m, m+1, ..., n. Na przykad:
> seq(n^2,n=1..4);
1, 4, 9, 16
Operator $ tworzy cig skadajcy si z n kopii wyraenia:

expr $ n
Na przykad,
> sin(z)$3;
sin(z), sin(z), sin(z)
Wyraenia tworzce cig wyrae s numerowane za pomoc indeksu - do
tego zagadnienia powrcimy w rozdziale 2.5, przy omawianiu pojcia zmiennej
indeksowanej.
Do badania struktury wyrae uywa si polece op oraz nops, zwracajcych
cig komponentow wyraenia symbolicznego oraz ich liczb:

2.3. Wyraenia

21

op(i,expr)

op(list,expr)

nops(expr)

gdzie i, list to, odpowiednio, liczba naturalna albo lista liczb naturalnych.
Przykad 2.1. Zbada struktur (komponenty) wyraenia x4 + sin(x).
> wyr:=x^4+sin(x);
wyr := x4 + sin(x)
Na pierwszym poziomie mamy dwa komponenty:
> nops(wyr); op(wyr);
2
x4 , sin(x)
Pierwszy i drugi komponent otrzymuje si podajc jego numer, bdcy liczb
naturaln z przedziau od 1 do nops(wyr):
> op(1,wyr);op(2,wyr);
x4
sin(x)
/
Dalsza analiza komponentw wymaga przejcia na kolejny poziom strukturalny. Mona zagnieda polecenie op: op(an, op(..., op(a2, op(a1,e)) ...)
lub stosowa jego skrcon wersj: op([a1, a2, ..., an], e). W rozwaanym
przykadzie pierwszy komponent pierwszego komponentu wynosi:
> op([1,1],wyr);
x
Drugi komponent pierwszego komponentu to:
> op([1,2],wyr);
4
Funkcja op oferuje prosty spob dokonywania skomplikowanych podstawie.
Przykad 2.2. Zamieni w wyraeniu wyr z poprzedniego przykadu liczb 4
na sin(y). W tym celu stwierdzamy, jakiej licie indeksw odpowiada komponent
4 i stosujemy polecenie op:
> wyr:=subs(op([1,2],wyr)=sin(y),wyr);
wyr := xsin(y) + sin(x)

22

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

(polecenie subs bdzie omwione w trzecim rozdziale.) Maple ma wbudowane


polecenie subsop, ktre upraszcza lini wejciow:
> subsop([1,2]=sin(y), wyr);
xsin(y) + sin(x)
/

2.4

Struktury danych: zbiory, listy i tablice

Lista to kolejny typ danych, opisujcy zbiory (nieuporzdkowane listy) oraz


uporzdkowane listy. Zaczniemy od zbiorw (ang. set), tworzonych za pomoc
nawiasw klamrowych z cigu wyrae:
> {1,3,2,4}; {1,2,4,2};
{1, 2, 3, 4}
{1, 2, 4}
> whattype(%);
set
Zwraca uwag zmiana kolejnoci elementw zbioru w pierwszym przykadzie i
opuszczenie powtarzajcego si elementu (2) w drugim. List (uporzdkowan)
(ang. list) tworzy si za pomoc nawiasw kwadratowych:
> [1,3,2,4]; [1,2,4,2];
[1, 3, 2, 4]
[1, 2, 4, 2]
> whattype(%);
list
W przeciwiestwie do poprzedniego przykadu, kolejno elementw listy zostaa
zachowana, a powtarzajce si elementy nie s usuwane.
Dostp do elementu listy uzyskuje si za pomoc indeksu (patrz rozdzia 2.5).
W poniszym przykadzie wyznaczymy pierwszy element zbioru i trzeci element
listy:
> S:={1,2,4}; S[1];
S := {1, 2, 4}
1

2.4. Struktury danych: zbiory, listy i tablice

23

> L:=[a,b,c,d]; L[3];


L := [a, sin(t), c, d]
c
Omwimy dwie proste, ale wane operacje na listach: dodawanie elementu do
listy oraz czenie list. Znajduje tu zastosowanie polecenie op, ktre dziaajc na
list usuwa nawiasy kwadratowe, tworzc z niej cig wyrae. Niech L oznacza
list z ostatniego przykadu:
> op(L); whattype(%);
a, sin(t), c, d
exprseq
Element e dodajemy do listy L w intuicyjnie jasny sposb:
> L1:=[op(L), e];
L1 := [a, sin(t), c, d, e]
Dwie listy czymy na podobnej zasadzie. Na przykad, poczymy listy L i L1:
> L2:=[op(L), op(L1)];
2 := [a, sin(t), c, d, a, sin(t), c, , d, e]
Rozszerzenie koncepcji listy prowadzi do struktury danych zwanej tablic (ang.
array). Kady element tablicy odpowiada zbiorowi indeksw, a wic ta struktura
nie jest, w przeciwiestwie do listy, jednowymiarowa. Zdefiniujemy tablic 3 3,
nie przypisujc jej elementom adnych wartoci::
> tabl:=array(1..3,1..3,[]);
tabl := array(1..3, 1..3, [])
Do elementw tej tablicy odwoujemy si za pomoc pary indeksw:
> tabl[1,1];
tabl1,1
Poniewa tablice graj szczeglnie wan rol w naukach cisych, zostan one
dokadniej omwione w rozdziale dziewitym, dotyczcym algebry liniowej.
Ostatnia omawiana struktura danych to uoglniona tablica (ang. table), rozszerzajca wprowadzony wyej typ tablicowy array. Rnica midzy nimi polega
na tym, e indeksem w typie table moe by dowolny obiekt, nie tylko liczba

24

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

naturalna.
Przykad 2.3. Skonstruowa tablic, zawierajc caki z funkcji: x, sin(x),
exp(x); indeksem ma przy tym by nazwa funkcji.
> calka:=table([x=x^2/2, sin(x)=-cos(x), exp(x)=exp(x)]);
x2
calka := table([x =
, sin(x) = cos(x)ex = ex ])
2
Caka z funkcji sin(x) wynosi:
> calka[sin(x)];
cos(x)
/

2.5

Zmienne

Gwnym obszarem zastosowa pakietw algebry komputerowej s obliczenia


symboliczne. Jednym z podstawowych poj jest tu, tak jak w jzykach programowania zorientowanych na obliczenia numeryczne, pojcie zmiennej. Zmienna
(ang. variable) ma nazw 2 (ang. name), zazwyczaj zaczynajc si od litery. W
odrnieniu od wikszoci jzykw programowania, w Maple nie ma koniecznoci
definiowania typu zmiennej, ktry zostanie okrelony automatycznie na podstawie kontekstu, w jakim zmienna jest uyta:
> a; whattype(a);
a
symbol
Taka swobodna zmienna (ang. free variable) nie ma przypisanej wartoci. Przypisanie zmiennej wyraenia dokonuje si za pomoc operatora przypisania (:=)
w nastpujcy sposb:

zmienna := expr
Na przykad:
> a:=2;
2

Rnica midzy nazw a acuchem polega midzy innymi na tym, e nazwa nie wymaga
uycia apostrofw

2.5. Zmienne

25

a := 2
W celu sprawdzenia tego, jaka warto jest przypisana zmiennej o nazwie a naley wykona polecenie
> a;
2
Umieszczenie nazwy zmiennej midzy dwoma apostrofami powoduje usunicie
przypisania wartoci tej zmiennej:
> a:=a: a;
a
Szczeglnie wana rol w obliczeniach symbolicznych odgrywaj przypisania
zoone. W Maple przyjto zasad, e dla zmiennych globalnych obowizuje pene
obliczenie wartoci jej przypisania (ang. full evaluation). Zmienne globalne to, w
szczeglnoci, zmienne wystpujce w standardowej (interaktywnej) sesji Maple.
Dla zmiennych lokalnych, wystpujcych w procedurach, regua obliczania jest
inna. Jeeli wic zmiennej globalnej przypisano inn zmienn globaln 3 itd., to
przy obliczaniu wartoci przypisanej pierwszej zmiennej Maple wykonuje peny
acuch przypisa. Nieliczne wyjtki od tej reguy przedstawimy w dalszej czci
wykadu. Zilustrujemy t fundamentaln zasad na prostym przykadzie - przypiszemy zmiennej a zmienn b, a tej ostatniej - warto 2. W wyniku penego
obliczenia wartoci przypisanej zmiennej a otrzymuje si 2:
> a:=b: b:=2: a;
2
Zmienimy warto przypisan zmiennej b na sin(t):
> b:=sin(t);
b := sin(t)
Zmienna a ma teraz przypisan warto sin(t):
> a;
sin(t)
3

Zmienna jest reprezentowana wewntrznie za pomoc wektora o trzech polach; przypisanie


zmiennej pewnej wartoci oznacza stworzenie wskanika czcego wektor opisujcy zmienn z
wektorem, opisujcym przypisan warto.

26

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

Do tej pory zajmowalimy si zmiennymi prostymi. W Maple istniej take


zmienne indeksowane. Tworzy si je przez doczenie do nazwy zmiennej indeksu,
bdcego list utworzon z liczb naturalnych:
> c[1,2]; whattype(%);
c1, 2
indexed
Uycie indeksu nie powoduje tego, e zmienna c jest tablic. Staje si ni dopiero
po przypisaniu zmiennej indeksowanej wartoci. Na przykad, wykonanie instrukcji:
> a[1]:=5; a[2]:=3;
a1 := 5
a2 := 3
powoduje utworzenie tablicy i przypisanie jej elementom, indeksowanym liczbami
1 i 2, odpowiednio wartoci 5 i 3. Zwrcimy uwag na nastpujcy wany fakt.
Nazwa a odnosi si do caej zmiennej indeksowanej. W celu sprawdzenia wartoci
przypisanych elementom a[1] itd. nie wystarczy wykona polecenia
> a;
a
Jest to jeden z nielicznych wyjtkw od zasady penego obliczania. Ten sposb
obliczania, noszcy nazw zasady obliczanie do ostatniej nazwy (ang. last name
evaluation), patrz ?last name eval, polega na wykonania acucha przypisa a
do momentu osignicia ostatniej nazwy wystpujcej w tym acuchu, reprezentujcej tablic, macierz lub procedur. W celu sprawdzenia penych przypisa
naley uy polecenia eval, wymuszajcego wykonanie penego obliczania. Jego
skadnia ma posta4 :

eval(expr)
W naszym przypadku:
> eval(a); whattype(eval(a));
table([1 = 5, 2 = 3])
table
Zgodnie z wczeniejszym stwierdzeniem, utworzona zostaa tablica.
4

Polecenie to w postaci eval(expr, x = a) oblicza warto wyraenia w punkcie x = a.

2.5. Zmienne

27

W rozdziale 2.3 omawialimy cigi wyrae. Rozpatrzymy cig:


> ciag:=seq(k^2,k=0..5);
ciag := 0, 1, 4, 9, 16, 25
Do jego elementw odwoujemy si za pomoc indeksu. W Maple indeks pierwszego skadnika wynosi 1:
> ciag[1]; ciag[6];
0
25
natomiast element indeksowany liczb 0, tj. ciag[0], nie istnieje:
> ciag[0];
Error, invalid subscript selector
Czsto korzysta si ze zmiennej przy zaoeniu, e ma pewn wasno na
przykad jest dodatnia. Ustalenie tej wasnoci odbywa si za pomoc polecenia
assume:

assume(expr, wasno)
Na przykad,
> assume(x>0); x;
x
Tylda towarzyszca nazwie zmiennej wskazuje na istnienie naoonych na ni
ogranicze. Polecenie about informuje o aktualnych wasnociach zmiennej:
> about(x);
Originally x, renamed x: is assumed to be: RealRange(Open(0),
infinity)
Kolejne polecenie assume anuluje aktualne ograniczenia:
> assume(x>0): assume(x<2): about(x);
Originally x, renamed x: is assumed to be: RealRange(-infinity,
Open(2))
W celu uzupenienia listy ogranicze o nowe ograniczenie uywa si polecenia
additionally:

additionally(expr, wasno)

28

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

Na przykad,
> assume(x>0): additionally(x<2): about(x);
Originally x, renamed x: is assumed to be: RealRange(Open(0),
Open(2))
Umieszczenie nazwy zmiennej midzy dwoma apostrofami powoduje usunicie
ograniczenia:
> x:=x: about(x);
x: nothing known about this object
Jeeli zmienna z ograniczeniem wystpuje w wyraeniu, to powyszy sposb nie
jest skuteczny:
> assume(a>0): wyr:=a^2: a:=a; wyr;
a := a
a2
Naley najpierw usun ograniczenie na zmienn w wyraeniu, a nstpnie przypisa zmiennej jej nazw, umieszczajc j pomidzy apostrofami:
> assume(a>0): wyr:=a^2: wyr:=subs(a=a,wyr); a:=a;
wyr := a2
a := a
(polecenie subs bdzie omwione w trzecim rozdziale).
Zauwaymy, e jeeli ograniczenie uywane jest tylko do jednej operacji i po
jej ukoczeniu powinno by usunite, wygodniej jest uy polecenia assuming.
Podobnego typu trudnoci powstaj przy prbie przypisania wartoci zmiennej
z ograniczeniem, bdcej czci wyraenia. Po wykonaniu poniszych polece
oczekujemy, e kocowy wynik wynosi 4, a tymczasem:
> assume(b>0): wyr:=b^2; b:=2; wyr;
wyr := b2
b := 2
b2
Przypisanie zmiennej z ograniczeniem pewnej wartoci dokonuje si za pomoc
polecenia assign 5 :
5
Polecenie assign ma jeszcze jedn posta, ktra bdzie omwiona przy rozwizywaniu rwna.

2.5. Zmienne

29

assign(nazwa = expr)
W naszym przypadku
> assume(c>0): wyr:=c^2; assign(c=2);wyr;
wyr := c2
4

30

Rozdzia 2. Podstawowe pojcia, struktury i konstrukcje

Rozdzia

Funkcje Maple
3.1

Upraszczanie i przeksztacanie wyrae


simplify(expr)
normal(expr)
expand(expr)
combine(expr)
factor(expr)
collect(expr, x)
map(fcn, expr)
convert(expr, nazwa)
subs(wyr1=wyr2, wyr)
31

32

Rozdzia 3. Funkcje Maple

3.2

Elementy programowania
for nazwa | from expr || by expr || to expr || while expr |
do cig polece end do;

|...| oznacza, e dany skadnik wystpuje opcjonalnie1 . rednik (dwukropek)


poprzedzajcy sowo end do moe by pominity.

while expr do cig polece end do


for name in expr do cig polece end do
if cond expr then cig polece
| elif cond expr then cig polece |
| else cig polece |
end if
Pionowe ograniczniki |...| oznaczaj, e dany skadnik wystpuje opcjonalnie2 .
Konstrukcja | elif cond expr then cig polece | moe by wielokrotnie powtrzona. Przed sowami kluczowymi elif, else, end if mona nie uywa rednikw i dwukropkw.

sum(f, i=m..n)
gdzie f oznacza wyraenie, i nazw (zmienna sumowania), a m i n liczby
cakowite lub wyraenia okrelajce granice sumowania.

product(f, i=m..n)
1
2

Zamiast end do mona uy sowa od, pochodzcego ze starszych wersji Maple


Zamiast end if mona uy sowa fi, pochodzcego ze starszych wersji Maple

3.3. Funkcje i procedury

3.3

33

Funkcje i procedury
nazwa funkcji := nazwa zmiennej wyraenie

Jeeli zmiennych jest wicej ni jedna, to musz by one oddzielone przecinkami,


a cao ujta w okrge nawiasy.

f := unapply(expr,nazwa zmiennej)
Jeeli zmiennych jest wicej ni jedna, to musz by one oddzielone przecinkami,
lub tworzy list.

(f @ g)(x)

(f @ n)(x)

nazwa zmiennej > piecewise (warunek 1, warto 1, ...,


warunek N, warto N, default);
nazwa zmiennej := proc(| cig parametrw |)
| local cig nazw; || global cig nazw; || options cig nazw; |
cig polece
end;
Pionowe ograniczniki |...| oznaczaj, e dany skadnik wystpuje opcjonalnie.
rednik (albo dwukropek) wystpujcy bezporednio przed sowem kluczowym
end moe by pominity. Zaleca si staranne definiowanie wszystkich lokalnych i
globalnych zmiennych wystpujcych w procedurach.
Wynikiem dziaania procedury jest rezultat ostatniej operacji wykonanej w
ciele procedury.

3.4
3.4.1

Elementy grafiki dwuwymiarowej


Podstawowe konstrukcje

plot(f(x), x=a..b, parametry)

34

Rozdzia 3. Funkcje Maple

gdzie f(x) oznacza funkcj (ktra moe by podana w postaci wyraenia, porwnaj
trzeci sposb tworzenia funkcji omwiony w rozdziale 5.1), a a..b przedzia
wartoci zmiennej niezalenej, dla ktrych ma by narysowany wykres. Polecenie
plot ma kilka wanych parametrw (ang. options) sucych do kontroli wygldu
wykresw (?plot, ?plot[options]).
Maple ma wbudowany interaktywny kreator wykresw, sucy do wyboru
wartoci parametrw za pomoc okna dialogowego. W celu jego uruchomienia
naley albo zaznaczy wynik uprzednio wykonanego polecenia Maple, a nastpnie
wybra opcje Plots, Plot Builder, albo uy polecenia interactive (konieczne
jest zaadowanie pakietu plots):
> with(plots):
Warning, the name changecoords has been redefined
> interactive(sin(x)/x);
Initializing Java runtime environment.
Po wykonaniu tych polece pojawia si okno dialogowe.
Standardowo, wykres pojawia si w arkuszu roboczym. Wykres mona umieci w oddzielnym oknie naley w tym celu otworzy okno dialogowe, wychodzc
z pozycji File w gwnym menu: File/Preferences/Plotting/Plot Display.
Zaczniemy od wykresu funcji sin(x2 ) w przedziale (, ):
> plot(sin(x^2),x=-Pi..Pi);
1

0.5

0.5

Przykad 3.1. Narysowa na jednym rysunku wykresy nastpujcych funkcji:


2
cos(x), sin(x), ex w przedziale (, ), uywajc, odpowiednio, koloru niebieskiego, czerwonego i czarnego.
> plot([cos(x),sin(x),exp(-x^2)],x=-Pi..Pi, color=[blue,red,
black]);

3.4. Elementy grafiki dwuwymiarowej

35

0.5

0.5

display(L, parametry)
Dla funkcji z poprzedniego przykadu mamy:
>
>
>
>

p1:=plot(cos(x),x=-Pi..Pi):
p2:=plot(sin(x),x=-Pi..Pi):
p3:=plot(exp(-x^2),x=-Pi..Pi):
display({p1,p2,p3});
1

0.5

0.5

3.4.2

Wykresy parametryczne

plot([ x(t), y(t), t=a..b ], parametry)


Przykad 3.2. Narysowa elips, zadan parametrycznie rwnaniami x(t) =
sin(t), y(t) = 2 cos(t), t (0, 2 ). Uy opcji scaling=constrained, powodujcej uycie tej samej jednostki na obu osiach:

36

Rozdzia 3. Funkcje Maple

> plot([sin(t), 2*cos(t), t=0..2*Pi], scaling=constrained);


2

1 0.5 0

0.5

/
3.4.3

Wykresy w ukadzie wsprzdnych biegunowych

polarplot(r(phi), phi=a..b)
Przykad 3.3. Narysowa wykres spirali,
zadanej w ukadzie wsprzdnych

biegunowych za pomoc rwnania r = .


> with(plots):
Warning, the name changecoords has been redefined
> polarplot(sqrt(t),t=0..Pi*4);
2
1
3

0
1
2
3

plot([ r(t), phi(t), t=a..b ],coords=polar, parametry)


3.4.4

Wykresy krzywych zadanych w postaci niejawnej

implicitplot(rwnanie, x=a..b, y=c..d, parametry)

3.4. Elementy grafiki dwuwymiarowej

37

Przykad 3.4. Narysowa wykres hiperboli x2 y 2 = 1.


> implicitplot(x^2-y^2=1,x=-3..3,y=-3..3);
2
y
1

1
2

3.4.5

Dane dyskretne

pointplot(L, parametry)
L oznacza list (albo zbir) dwuelementowych list, zawierajcych wsprzdne
punktw.
Przykad 3.5. Dane do wykresu s zbiorem dziewiciu par liczb [n, Ln ], n =
1 . . . 9, gdzie Ln oznacza n-t liczb pierwsz. Narysowa wykresy, traktujc par
liczb jako wsprzdne punktu w ukadzie (a) kartezjaskim i (b) biegunowym.
Uyjemy funkcji ithprime(n), zwracajcej Ln . Opcja symbol=box ustala symbol graficzny (tutaj kwadrat, inne moliwoci: point,cross,diamond,circle),
jakim bd rysowane punkty wykresu, a symbolsize jego wielko. List par
liczb nazwano dane.
> dane:=[seq([i,ithprime(i)],i=1..9)];
dane := [[1, 2], [2, 3], [3, 5], [4, 7], [5, 11], [6, 13], [7, 17], [8, 19], [9, 23]]
> pointplot(dane,symbol=box,symbolsize=20);

38

Rozdzia 3. Funkcje Maple

20

15

10

5
2

Ostatni omawiany przypadek dotyczy sytuacji, gdy wsprzdne x i y punktw


znajduj si w dwch oddzielnych listach lista x, lista y.

scatterplot(lista x, lista y, parametry)


Przykad 3.6. Narysowa wykres dla danych dyskretnych: ListaX = [1,3,4,6],
ListaY = [1,3,6,2].
> with(stats[statplots]):
> ListaX:=[1,3,4,6];ListaY:=[1,3,6,2];
ListaX := [1, 3, 4, 6]
ListaY := [1, 3, 6, 2]
> scatterplot(ListaX,ListaY,symbol=cross,symbolsize=30,color=
black);
6
5
4
3
2
1
1

/
3.4.6

Pole wektorowe

fieldplot(lista, x=a..b, y=c..d, opcje)

3.4. Elementy grafiki dwuwymiarowej

39

Obiekt lista jest list dwch wyrae zalenych od x, y, interpretowanych jako


skadowe pola wektorowego w punkcie (x, y). Zmienne x, y przyjmuj wartoci
z podanych przedziaw. Uyteczne parametry to arrow, ktry opisuje posta
graficzn wektora, oraz grid, ustalajcy rozmiar siatki, na ktrej bd rysowane
wektory.
~ y) = [x, y] na siatce o rozmiaPrzykad 3.7. Narysowa pole wektorowe A(x,
rach 11 11. Uyjemy tu opcji axes = box, powodujcej umieszczenie wykresu
wewntrz prostokta.
> fieldplot([x,y],x=0..1,y=0..1,arrows=SLIM, grid=[11,11],axes=
box);
1
0.8
0.6
y
0.4
0.2
0
0

0.2

0.4

0.6

0.8

gradplot(expr, x=a..b, y=c..d, parametry)


Tutaj expr oznacza pole skalarne, zalene od zmiennych x, y, przyjmujcych wartoci z podanych przedziaw.
Przykad 3.8. Narysowa pole wektorowe, bdce gradientem funkcji f (x, y) =
x2 + y 2 , na siatce o rozmiarach 8 8.
> gradplot(x^2+y^2,x=-1..1,y=-1..1,grid=[8,8]);
1
y

0.5

0.5

0.5
x
0.5

40

Rozdzia 3. Funkcje Maple

3.4.7

Histogram

histogram(lista, parametry)
Obiekt lista zawiera list danych sucych do budowy histogramu.

histogram(lista, parametry)
Obiekt lista zawiera list danych sucych do budowy histogramu.
Przykad 3.9. Narysowa histogram reprezentujcy empiryczny rozkad prawdopodobiestwa kolejnych dwustu liczb pierwszych, poczwszy od liczby pierwszej 3.
> with(stats[statplots]):
> data:=[seq(ithprime(n),n=1..200)]:
> histogram(data);
0.0014
0.0012
0.001
0.0008
0.0006
0.0004
0.0002
200

400

600

800

1000 1200

Tutaj supki maj jednakowe pola, natomiast na poniszym histogramie maj


jednakowe szerokoci:
> histogram(data,area=1);
0.14
0.12
0.1
0.08
0.06
0.04
0.02
200

400

600

800

1000 1200

3.5. Elementy grafiki trjwymiarowej


3.4.8

41

Animacja

animate(plot, [f(x,t), x=a..b], t=p..q, argumenty)


Pierwszy parametr (tutaj: plot) jest nazw funkcji Maple sucej do tworzenia
wykresu. Obiekty a, b mog zalee od t. Aby uruchomi animacj naley zaznaczy wykres, a nastpnie uy menu kontekstowego, wywoywanego za pomoc
prawego klawisza myszy, albo uy symboli klawiszy przypominajcych klawisze
magnetofonowe, ktre pojawiaj si po zaznaczeniu wykresu nad arkuszem roboczym. Spord parametrw warto wymieni frames, zmieniajcy liczb klatek
animacji wynoszc standardowo 25.
Przykad 3.10. Pokaza animacj biegncej fali sinusoidalnej. W tym celu uy
funkcji f (x, t) = sin(2(x + t)) dla 0 x 4, oraz dla parametru animacji t z
przedziau (0, 1).
> animate(plot,[sin(2*Pi*(x+t)),x=0..4],t=0..1, tickmarks=[2,2]);
1

t = 0.

2
x

3.5
3.5.1

Elementy grafiki trjwymiarowej


Podstawowe konstrukcje

plot3d(f(x,y), x=a..b, y=c..d, parametry)


Tutaj f(x,y) oznacza funkcj (ktra moe by podana w postaci wyraenia w
zmiennych x, y, porwnaj trzeci sposb tworzenia funkcji omwiony w rozdziale 5.1), natomiast a..b, c..d przedziay wartoci zmiennych niezalenych x, y,

42

Rozdzia 3. Funkcje Maple

dla ktrych ma by narysowany wykres3 . Polecenie plot3d ma kilka wanych


parametrw (ang. options) sucych do kontroli wygldu wykresw (?plot3d,
?plot3d[options]).
Rozpatrzymy funkcj z(x, y) = 1
.
x2 +y 2 +1

> z:=1/sqrt(1+x^2+y^2);
1
z := p
1 + x2 + y 2
Jej wykres ma posta:
> plot3d(z,x=-2..2,y=-2..2,axes=box);

1
0.8
0.6
0.4
2

2
1

1
y

0
1

1
2

Parametr style, przyjmujcy wartoci patch, patchcontour, patchnogrid,


contour, pozwala zmieni styl rysowania powierzchni.

contourplot(expr, x=a..b, y=c..d, parametry)


contourplot3d(expr, x=a..b, y=c..d, parametry)
Dla funkcji z poprzedniego przykadu:
> contourplot(z,x=-2..2,y=-2..2,contours=[0.4,0.5,0.7,0.9],filled=
true);
3

Patrz rwnie: rozdzia 5.2.

3.5. Elementy grafiki trjwymiarowej

43

1
x
1

densityplot(expr, x=a..b, y=c..d, parametry)


3.5.2

Wykresy parametryczne, krzywa przestrzenna

spacecurve(L, parametry)
Tutaj L oznacza list, skadajc si conajmniej z trzech elementw, interpretowanych jako parametryczna reprezentacja wsprzdnych x, y, z. Podanie listy
kilku list umoliwia rysowanie kilku wykresw. Interwa zmiennoci parametru
moe by okrelony zarwno wewntrz tej listy (jako czwarty jej element), jak i
poza ni.
Przykad 3.11. Narysowa trjwymiarow spiral, zadan za pomoc nastpujcej parametryzacji: x(t) = sin(t), y(t) = cos(t), z(t) = t.
> spacecurve([cos(t),sin(t),t],t=0..4*Pi,style=line,axes=box,
thickness=3);

12
8
4
0
1

1
0.5

0.5
0

0
0.5

0.5
1

Parametryzacja listy za pomoc dwch parametrw prowadzi do dwuwymiarowej powierzchni w przestrzeni trjwymiarowej. Uywa si tu znanej ju funkcji
plot3d:

44

Rozdzia 3. Funkcje Maple

plot3d([exprx, expry, exprz], s=a..b, t=c..d, parametry)


Wyraenia exprx, expry i exprx zadaj parametryzacj wsprzdnych x, y, z powierzchni za pomoc dwch parametrw s, t.
Przykad 3.12. Rozcign spiral z powyszego przykadu w powierzchni
dwuwymiarow, zmieniajc promie spirali r w granicach od 0 do 1. Parametryzacja tej powierzchni ma posta: x(t, r) = r sin(t), y(t, r) = r cos(t), z(t, r) = t.
> plot3d([r*cos(t),r*sin(t),t],r=0..1,t=0..4*Pi,style=
patchnogrid);

tubeplot(C, radius= expr, parametry)


C oznacza krzyw przestrzenn (lub list takich krzywych). Opcja radius ustala
promie walca wok krzywej przestrzennej.
3.5.3

Wykresy w ukadach wsprzdnych: sferycznym i cylindrycznym

plot3d(r(, ), =a..b, =c..d, coords=spherical, opcje)


W celu uniknicia nieporozumie podkrelimy, e niezalenie od stosowanych
oznacze, pierwsza zmienna (tutaj: ), o przedziale zmiennoci (a, b), reprezentuje
kt azymutalny; podobnie, druga zmienna reprezentuje kt polarny.
Przykad 3.13. Narysowa powierzchni jednostkowej sfery (r(, ) = 1).
> plot3d(1,phi=0..2*Pi,theta=0..Pi,style=patchnogrid, coords=

3.5. Elementy grafiki trjwymiarowej

45

spherical,scaling=constrained);

plot3d(r(, z), =a..b, z=c..d, coords=cylindrical, opcje)


W celu uniknicia nieporozumie podkrelimy, e niezalenie od stosowanych
oznacze, pierwsza zmienna (tutaj: ), o przedziale zmiennoci (a, b), reprezentuje
kt azymutalny; podobnie, druga zmienna reprezentuje wsprzdn z.
Przykad 3.14. Narysowa powierzchni walca (r(, z) = 1).
> plot3d(1,theta=0..2*Pi,z=-2..2,style=patchnogrid, coords=
cylindrical,scaling=constrained,axes=box);

2
1
0
1
2
1
0.5

0
0.5

1 1

0
0.5

1
0.5

/
3.5.4

Wykresy powierzchni zadanych w postaci niejawnej

implicitplot3d(rwnanie, x=a..b, y=c..d, z=p..q, opcje)


Obiekt rwnanie oznacza rwnanie w zmiennych x, y, z.
Przykad 3.15. Narysowa elipsoid x2 +

y2
4

z2
8

= 1.

46

Rozdzia 3. Funkcje Maple

> implicitplot3d(x^2+y^2/4+z^2/8=1, x=-3..3,y=-3..3,z=-3..3,grid=


[15,15,15], style=patchcontour,contours=10,axes=box);

3
2
1
z 0
1
2
3
3

1
0
y

1
x

/
3.5.5

Dane dyskretne

pointplot3d(L, opcje)
L oznacza list (albo zbir) trjelementowych list, zawierajcych wsprzdne
punktw.
Przykad 3.16. Wsprzdne punktu materialnego zale
od czasu w nastpujcy sposb: x(t) = cos(t/20), y(t) = sin(t/20), z(t) = t. Przedstawi graficznie
pooenia tego punktu w chwilach czasu t = 1, 2, . . . , 80.
> dane:=evalf(seq([cos(k*Pi/20),sin(k*Pi/20),sqrt(k)],k=1..80)):
> pointplot3d([dane],axes=boxed,symbol=box,symbolsize=15,
orientation=[32,72]);

8
6
4
2
1

3.5.6

0.5

0.5

0.5

0.5

Pole wektorowe

fieldplot3d(lista, x=a..b, y=c..d, z=p..q, opcje)

3.5. Elementy grafiki trjwymiarowej

47

Obiekt lista jest list trzech wyrae zalenych od x, y, z, interpretowanych jako


skadowe pola wektorowego w punkcie (x, y, z). Zmienne x, y, z przyjmuj wartoci z podanych przedziaw. Uyteczne parametry to arrow, ktry opisuje posta
graficzn wektora, oraz grid, ustalajcy rozmiar siatki, na ktrej bd rysowane
wektory.
~ r), wytworzonego przez dodatni
Przykad 3.17. Natenie pola elektrycznego E(~
jednostkowy adunek punktowy umieszczony w pocztku ukadu wsprzdnych,
~ r) =
dane jest, w punkcie opisanym wektorem wodzcym
~r [x, y, z], wzorem4 E(~
p
~
r
r| = x2 + y 2 + z 2 . Przedstawi graficznie
r3 . Wprowadzono tu oznaczenie r = |~
to pole.
> r:=sqrt(x^2+y^2+z^2): r3:=r^3;
r3 := (x2 + y 2 + z 2 )(3/2)
> fieldplot3d([x/r3,y/r3,z/r3],x=-4..4,y=-4..4,z=-4..4,grid=
[6,6,6],arrows=THICK,axes=box,orientation=[31,39]);

4
2
z 0
2
4
4

4
2
0

2
y

2
4

Obracanie wykresu w przestrzeni za pomoc myszy znacznie uatwia analiz pl


wektorowych.
/

gradplot3d(expr, x=a..b, y=c..d, z=p..q parametry)


Tutaj wyraenie expr oznacza pole skalarne, zalene od zmiennych x, y, z, przyjmujcych wartoci z podanych przedziaw.
Przykad 3.18. Potencja pola elektrostatycznego z poprzedniego przykadu
wynosi (x, y, z) = 2 1 2 2 . Naley przedstawi graficznie to pole. Z elekx +y +z

~
trostatyki wiadomo, e E(x,
y, z) = (x, y, z). Po wykonaniu nastpujcych
4

Pomijamy tu wspczynnik (40 )1

48

Rozdzia 3. Funkcje Maple

polece otrzymuje si wykres z poprzedniego przykadu:


> r:=sqrt(x^2+y^2+z^2);
r := (x2 + y 2 + z 2 )(1/2)
> gradplot3d(-1/r,x=-4..4,y=-4..4,z=-4..4,grid=[6,6,6],arrows=
THICK,axes=box,orientation=[31,39]);

4
2
z 0
2
4
4

4
2
0

2
y

2
4

/
3.5.7

Animacja

animate(plot3d, [f(x,y,t), x=a..b, y=c..d ], t=p..q, argumenty)


Pierwszy parametr (tutaj: plot3d) jest nazw funkcji Maple sucej do tworzenia wykresu. Obiekty a, b, c, d mog zalee od t. Aby uruchomi animacj
naley zaznaczy wykres, a nastpnie uy menu kontekstowego, wywoywanego
za pomoc prawego klawisza myszy, albo uy symboli klawiszy przypominajcych klawisze magnetofonowe, ktre pojawiaj si (po zaznaczeniu wykresu) nad
arkuszem roboczym. Spord parametrw warto wymieni frames, zmieniajcy
liczb klatek animacji wynoszc standardowo 25.
Przykad 3.19. Pokaza animacj wykresu funkcji z(x, y) = cos(tx) sin(ty)
dwch zmiennych x, y , dla wartoci parametru t z przedziau 1 t 2.
Przyj liczb klatek rwn 10.
> animate(plot3d,[cos(t*x)*sin(t*y),x=-Pi..Pi,y=-Pi..Pi],t=1..2,
frames=10);

3.6. Rozwizywanie rwna i nierwnoci algebraicznych

49

t = 1.

3.6

Rozwizywanie rwna i nierwnoci algebraicznych


solve(eqn, nazwa zmiennej)

Tutaj eqn oznacza rwnanie, nierwno albo nazw procedury, natomiast parametr nazwa zmiennej oznacza zmienn wzgldem ktrej naley to rwnanie
(nierwno) rozwiza.
Przykad 3.20. Rozwiza rwnanie kwadratowe x2 + x 4 = 0 i sprawdzi
rozwizanie.
> eq := x^2 + x - 4 = 0;
x2 + x 4 = 0
Wygodnie jest wprowadzi zmienn reprezentujc rozwizania:
> rozw := solve(eq,x);

1
17 1
17
,
rozw := +
2
2
2
2
Otrzymany wynik jest cigiem wyrae; do kolejnych rozwiza odwoujemy si
za pomoc indeksowania:
> rozw1 := rozw[1]; rozw2 := rozw[2];
1
17
rozw1 := +
2 2
1
17
rozw2 :=
2
2

50

Rozdzia 3. Funkcje Maple


/

Przykad 3.21. Rozwiza nierwno x2 + x 4 0


> solve(x^2 + x - 4 <= 0,x);

!
17 1
17
1
RealRange +
,
2
2
2
2
RealRange oznacza przedzia domknity.
/
Przykad 3.22. Rozwiza rwnanie cos(x) sin(x) = 0.
> eq:=cos(x)-sin(x); solve(eq);

4
Maple znalaz tylko jedno rozwizanie, tymczasem jest ich nieskoczenie wiele:
> EnvAllSolutions := true:
> solve(eq);

+ Z2
4
Maple wprowadzi zmienn Z2 przyjmujc wartoci naturalne, o czym atwo
jest przekona si wykonujc polecenie about( Z2).
/
W tych przypadkach kiedy funkcja solve nie znajduje rozwiza, mona poszukiwa ich za pomoc funkcji fsolve, stosujcej numeryczne metody rozwizywania rwna. Znajduje ona z reguy tylko jeden pierwistek rwnania.

fsolve(eqn, nazwa zmiennej, argumenty)


Oznaczenia s tutaj takie same, jak dla funkcji solve. Spord argumentw wymienimy przedzia a x b, w ktrym ma by szukane rozwizanie; zadaje si
go w postaci a..b albo x = a..b.
2

Przykad 3.23. Znale rozwizanie rwnania ex = sin(x) w przedziale 10


x 15.
> eq:=exp(-x^2)-sin(x):
> x:=fsolve(eq,x=10..15);
x := 12.56637061
/

3.6. Rozwizywanie rwna i nierwnoci algebraicznych

51

Dla rwna pitego i wyszych stopni Maple reprezentuje te rozwizania,


ktre nie s liczbami wymiernymi, za pomoc funkcji RootOf. W celu wyznaczenia wszystkich wartoci wyraenia zawierajcego RootOf stosuje si funkcj
allvalues:

allvalues(expr)
Tutaj expr jest dowolnym wyraeniem algebraicznym, zbiorem lub list takich
wyraen.
Przykad 3.24. Rozwiza rwnanie: x5 3x3 2 = 0.
> rozw:=solve(x^5 - 3*x^3-2,x);
rozw := 1, RootOf ( Z 4 Z 3 2 Z 2 + 2 Z 2, index = 1),
RootOf ( Z 4 Z 3 2 Z 2 + 2 Z 2, index = 2),
RootOf ( Z 4 Z 3 2 Z 2 + 2 Z 2, index = 3),
RootOf ( Z 4 Z 3 2 Z 2 + 2 Z 2, index = 4)
W tym przykadzie znane s dokadne rozwizania. Na przykad, drugi z pierwiastkw wynosi
> allvalues(rozw[2]); v

u
u 19 %2 %3 + 2 %3 %1 28 %3 + 63 %2
t

(143 + 3 2577)(1/3) %3
%3
1

+
4
12
12
%1 := (143 + 3 2577)(2/3)
%2 := (143 + 3 2577)(1/3)
57 %2 12 %1 + 168

%3 :=
(143 + 3 2577)(1/3)
Przykad 3.25. Rozwiza ukad rwna x2 + y 2 = 1, y = x + 21 .
> eq:={y^2+x^2=1,y=x+1/2}; zm:={x,y};
1
eq := {y 2 + x2 = 1, y = x + }
2
zm := {y, x}
> solve(eq,zm);
{y = 12 RootOf (2 Z 2 2 Z 3, label = L2),
x = 12 RootOf (2 Z 2 2 Z 3, label = L2) 21 }
> rozw:=allvalues(%);

52

Rozdzia 3. Funkcje Maple

1
7
7
7
7
1
1
1
rozw := {y = +
,x = +
}, {y =
,x =
}
4
4
4
4
4
4
4
4

Zwracamy uwag na to, e znalezione rozwizania nie przypisuj zmiennym x, y


adnych wartoci. W celu przypisania (nazwom) zmiennych powyszych rozwiza stosuje si funkcj assign5 :

assign(eqs)
gdzie eqs oznacza zbir lub list rwna otrzymanych w wyniku dziaania funkcji
solve.
Przypiszemy zmiennym x, y wartoci z pierwszego rozwizania:
> assign(rozw[1]); x; y;

3.7

7
1
+
4 4
7
1
+
4
4

Elementy algebry liniowej

Pakiety:
> with(LinearAlgebra):
> with(VectorCalculus):
Pakiet Student[LinearAlgebra] oferuje wartociowe narzdzia uatwiajce
studentom zrozumienie podstaw algebry liniowej.
3.7.1

Definiowanie wektorw i macierzy

< a 1 , a2 , . . . , a n >
5

< a1 |a2 | . . . |an >

Funkcja ta bya wprowadzona w podobnym kontekcie w rozdziale 2.5.

3.7. Elementy algebry liniowej

53

albo

Vector[poz]([a1 , a2 , . . . , an ])
gdzie wystpujcy opcjonalnie parametr poz przyjmuje wartoci row albo column
(ustawienie domylne: column). Wynik zaley od tego, czy zaadowany jest pakiet
VectorCalculus.
> restart:
> with(LinearAlgebra):
> v1:=<1, 2, 3>; v2:=<a | b | c>;

v1 := 2
3
v2 := [a, b, c]
> v3:=Vector[column]([1,2,3]); v4:=Vector[row]([a,b,c]);

v3 := 2
3
v4 := [a, b, c]
> with(VectorCalculus):
> v1:=<1, 2, 3>; v2:=<a | b | c>;
v1 := ex + 2ey + 3ez
v2 := aex + bey + cez
/
Wygodna w uyciu jest nieco inna posta polecenia Vector:

Vector[poz](n, symbol=a)
gdzie n jest nazw zmiennej reprezentujcej liczb skadowych ai wektora.
Wektory w pakiecie Maple 9 s automatycznie traktowane jako kartezjaskie.
Ukad wsprzdnych mona zmieni za pomoc funkcji

SetCoordinates(v, c)

54

Rozdzia 3. Funkcje Maple

gdzie c jest nazw (acuchem) okrelajc ukad wsprzdnych, ktra moe by


uzupeniona list specyfikujc nazwy wsprzdnych. Parametr v jest opcjonalny
i okrela nazw wybranego wektora zdefiniowanego w danym ukadzie wsprzdnych.
Przykad 3.26. Zdefiniowa wektor o skadowych (1, 2, 3) w sferycznym ukadzie wsprzdnych, w ktrym wsprzdne sferyczne maj nazwy (r, , ).
> restart:
> with(VectorCalculus):
> SetCoordinates(<1, 2, 3>, spherical[r, phi, theta]);
er + 2e + 3e
/
Macierze tworzy si w podobny sposb jak wektory:

<< a|b|c >, < d|e|f >>


albo:

<< a, b, c > | < d, e, f >>


albo:

Matrix([[a,b,c],[d,e,f]])
Macierz o wymiarach m n (odpowiednio, liczba wierszy i kolumn) i elementach ai,j :

Matrix(m, n, symbol=a)

1 4 7

Przykad 3.27. Utworzy macierz 2 5 8 .


3 6 9
> restart:
> M := <<1, 2, 3> | <4, 5, 6> | <7, 8, 9>>;

1 4 7

M := 2 5 8
3 6 9

3.7. Elementy algebry liniowej

55

> M1:=Matrix([[1,4,7],[2,5,8],[3,6,9]]);

1 4 7

M 1 := 2 5 8
3 6 9
/

3.7.2

Podstawowe operacje na wektorach

Pakiet:
> with(VectorCalculus):
Iloczyn skalarny wektorw v1 i v2 (o jednakowej liczbie skadowych) mona obliczy na dwa sposoby:

DotProduct(v1, v2)

albo

v1 . v2

Do obliczenia iloczynu wektorowego dwch trjwymiarowych wektorw su polecenia:

CrossProduct(v1, v2)

albo

v1 &x v2

Przykad 3.28. Wyprowadzi wzory na iloczyn skalarny v1 v2 i wektorowy


v1 v2 dla kartezjaskich wektorw v1 = [a1 , a2 , a3 ] oraz v2 = [b1 , b2 , b3 ].
> v1:=<a[1], a[2], a[3]>;
v1 := a1 ex + a2 ey + a3 ez
> v2:=Vector(3, symbol=b);
v2 := b1 ex + b2 ey + b3 ez
> DotProduct(v1, v2);
a1 b1 + a2 b2 + a3 b3
> CrossProduct(v1, v2);
(a2 b3 a3 b2 )ex + (a3 b1 a1 b3 )ey + (a1 b2 a2 b1 )ez
/

56

Rozdzia 3. Funkcje Maple


3.7.3

Podstawowe operacje na macierzach

W tym rozdziale zakadamy, e zaadowany jest pakiet LinearAlgebra:


Przedstawione niej funkcje stosuje si do wyznaczania: ladu macierzy

Trace(M)
wyznacznika

Determinant(M)
macierzy transponowanej

Transpose(M)
oraz macierzy odwrotnej

MatrixInverse(M) albo

M(-1)

Przykad 3.29. Obliczy wyznacznik, lad oraz macierz odwrotn do macierzy


M o wymiarze 2 2, ktrej elementy s postaci ai,j :
> M:=Matrix(2, 2, symbol=a);

"

M :=

a1,1 a1,2
a2,1 a2,2

> Determinant(M);
a1,1 a2,2 a1,1 a2,2
> Trace(M);
a1,1 + a2,2
> MI:=MatrixInverse(M);
"

M I :=

a2,2
a1,1 a2,2 a1,1 a2,2
a2,1
a1,1 a2,2 a1,1 a2,2

1,2
a1,1 a2,2 a
1,1 a2,2

a1,1
a1,1 a2,2 a1,1 a2,2

Dodawanie macierzy:

MatrixAdd(M1, M2, a, b)

albo

M1 + M2

Iloczyn dwch macierzy oblicza si w nastpujcy sposb

3.7. Elementy algebry liniowej

57

MatrixMatrixMultiply(M1, M2)

albo

M1 . M2

Kolejne dwie funkcje pozwalaj obliczy iloczyn wektora i macierzy M. W


pierwszym przypadku wektor jest kolumnowy (ColVect), w drugim - wierszowy
(RowVect):

MatrixVectorMultiply(M, ColVect)

albo

M . ColVect

VectorMatrixMultiply(RowVect, M)

albo

RowVect . M

"

Przykad 3.30. Obliczy iloczyn macierzy M =


> M := <<1, 2>|<0, 1>>;

"

M :=
> v:=<1, 2>;

1 0
2 1

"

v :=
> M . v;

"

v :=

1
2
1
4

1 0
2 1

"

i wektora c =

1
.
2

/
3.7.4

Wartoci i wektory wasne

Zakadamy, e zaadowany jest pakiet LinearAlgebra.


Do wyznaczania wartoci wasnych oraz wektorw wasnych macierzy M su
polecenia:

Eigenvalues(M)

Eigenvectors(M, parametry)

Pierwsze z nich zwraca wartoci wasne w postaci wektora kolumnowego, a drugie


cig dwch wyrae: wektor kolumnowy wartoci wasnych oraz macierz, ktrej
kolumny zbudowane s z wektorw wasnych. Parametr output=list powoduje

58

Rozdzia 3. Funkcje Maple

wyznaczenie degeneracji wartoci wasnych. Jako wynik otrzymuje si list, ktrej elementy zawieraj nastpujce informacje: warto wasn, jej degeneracj,
wektor wasny.
Przykad 3.31. Wyznaczmy wartoci oraz wektory wasne macierzy M :
> M:=<<1, 2> | <2, 1>>;

"

M :=
> Eigenvalues(M);

> Eigenvectors(M);

"

"

1 2
2 1

3
1

# "

1
1 1
,
3
1 1
> Eigenvectors(M, output=list);
""
("
#)# "
("
#)##
1
1
1, 1,
, 3, 1,
1
1
Obie wartoci wasne nie s zdegenerowane.
/

3.8
3.8.1

Granice, pochodne i caki


Granice

Granic funkcji jednej zmiennej f(x) w punkcie a oblicza si za pomoca funkcji


limit:

limit(f, x=a |,dir |)


Przykad 3.32. Obliczy granic funkcji sin(x)/x w punkcie x = 0.
> limit(sin(x)/x,x=0);
1

3.8. Granice, pochodne i caki

59
/

Granic funkcji dwch zmiennych oblicza si analogicznie, jak w przypadku


funkcji jednej zmiennej:

limit(f, {x=a,y=b} |,dir |)


3.8.2

Pochodne

Pochodn (pierwszego rzdu) oraz pochodne rzdu n wyraenia exp w zmiennej


x wyznacza si za pomoc funkcji diff:

diff(exp, x)

diff(exp, x$n)

Funkcja ta ma postac bezwadn Diff.


Przykad 3.33. Obliczy pochodn wyraenia xx .
> diff(x^x,x);
xx (ln(x) + 1)
/
Pochodne czstkowe wyraenia exp w zmiennych x1 , . . . xn wyznacza si podobnie, jak dla wyraenia w jednej zmiennej:

diff(exp, x1, . . . xn)


Przykad 3.34. Obliczy pochodn czstkow

3 x2 yz
2 xy .

> f:=x^2*y*z;
f := x2 yz
> Diff(f,x,x,y)=diff(f,x,x,y);
3
(x2 yz) = 2z
yx2

Pochodn funkcji f, pochodn tej funkcji w punkcie x, oraz n-t pochodn


wyznacza si za pomoc operatora rniczkowania D:

D(f)

D(f)(x)

(D@@n)(f)

60

Rozdzia 3. Funkcje Maple

Przykad 3.35. Obliczy pochodne nastpujcych funkcji: sinus, wykadniczej,


oraz funkcji kwadratowej x > x2 .
> D(sin); D(exp); f:=x->x^2; D(f);
cos
exp
f := x x2
x 2x
Widzimy, e pochodn funkcji jest funkcja. Wyznaczymy warto pochodnej funkcji f w punkcie x = 1:
> D(f)(1);
2
/
Pochodn funkcji f wielu zmiennych wyznacza si podobnie, jak w przypadku
funkcji jednej zmiennej:

D[...](f)
W nawiasie kwadratowym podaje si numery zmiennych (w kolejnoci ich wystpowania w definicji funkcji), po ktrych obliczane s pochodne.
Przykad 3.36. Obliczy pochodn czstkow
x2 yz.

3 f (x,y,z)
2 xy

funkcji f : (x, y, z) >

> f:=(x,y,z)->x^2*y*z;
f := (x, y, z) x2 yz
> D[1,1,2](f);
(x, y, z) 2z
W wyniku otrzymujemy funkcj.
/
3.8.3

Szereg Taylora

Rozwinicie w szereg Taylora wyraenia (funkcji) f w zmiennej x wok punktu x=a z dokadnoci do rzdu n wyznacza si za pomoc funkcji taylor.

3.8. Granice, pochodne i caki

61

Wspczynnik przy k-tym czonie rozwinicia mona wyznaczy za pomoc funkcji


coeftayl:

taylor(f, x=a |,n|)

coeftayl(f, x=a, n)

Pominicie parametru a spowoduje domylne przyjcie a = 0.


Przykad 3.37. Rozwin funkcj sin(x) w szereg Taylora wok punktu x = 0,
z dokadnoci do wyrazw czwartego rzdu. Znale wsplczynnik rozwinicia
przy x7 .
> t:=taylor(sin(x),x=0,4);
1
t := x x3 + O(x4 )
6

Wynik ma typ:
> whattype(t);

series
Przed wykonywaniem dalszych operacji algebraicznych naley pozby si reszty
O(x4 ) za pomoc funkcji convert:
> convert(t,polynom);
Wspczynnik przy x7 wynosi:

1
x x3
6

> coeftayl(sin(x),x=0,7);
1
5040

3.8.4

Caki oznaczone

Cak oznaczon

Rb
a

f (x) dx oblicza si za pomoc funkcji int:

int(f, x=a..b, opcje)


gdzie f jest wyraeniem algebraicznym w zmiennej x. Forma bezwadna funkcji
int ma posta Int.

R
Przykad 3.38. Obliczy 01 x sin x2 + 1 dx.

62

Rozdzia 3. Funkcje Maple

> int(x*sin(x^2 +1),x=0..1);


1
1
cos(1) cos(2)
2
2

Wartoci niektrych caek oznaczonych Maple podaje za pomoc funkcji specjalnych.


Przykad 3.39. Funkcja sinus cakowy Si(x) jest czsto stosowana w optyce:
> Int(sin(x)/x,x=0..t)=int(sin(x)/x,x=0..t);
Z t
sin(x)
dx = Si(t)
x
0
Jej warto dla t = 1 wynosi
> evalf(Si(1));
0.9460830704
/
3.8.5

Cakowanie numeryczne

Przy obliczaniu wartoci caki oznaczonej Maple oblicza najpierw funkce pierwotn. W tych przypadkach, gdy funkcja pierwotna nie istnieje (lub Maple nie
potrafi jej wyznaczy), mona numerycznie obliczy przyblion warto caki.
Przykad 3.40. Obliczy warto caki

R1
0

exp (x3 ) sin(x) dx.

> int(exp(-x^3)*sin(x),x=0..1);
Z 1

> evalf(%);

exp (x3 ) sin(x) dx


.3261940545
/

3.8.6

Caki niewaciwe

Granice cakowania mog wynosi plus lub minus nieskoczono.


Przykad 3.41. Obliczy warto caki niewaciwej

1
1+x2

> Int(1/(1+x^2),x=-infinity..infinity)=int(1/(1+x^2),

dx.

3.8. Granice, pochodne i caki


x=-infinity..infinity);

63

1
dx =
1 + x2
/

3.8.7

Caki nieoznaczone

Cak nieoznaczon

f (x) dx oblicza si za pomoc funkcji int:

int(f, x)
gdzie f jest wyraeniem algebraicznym w zmiennej x. Forma bezwadna funkcji
int ma posta Int.
Przykad 3.42. Wyznaczy cak nieoznaczon

1
1+x2

dx.

> int(1/(1+x^2),x): Int(1/(1+x^2),x)=%;


Z
1
dx = arc tg(x)
1 + x2
3.8.8

Caki wielokrotne

Caki wielokrotne, zarwno nieoznaczone jak i oznaczone, zapisuje si stosujc


zagniedanie caek pojedynczych. Dla caek podwjnych i potrjnych istnieje
posta bezwadna, odpowiednio Doubleint i Tripleint:

Doubleint(f, x|=a..b|, y|=c..d|)


Tripleint(f, x|=a..b|, y|=c..d|, z|=e..f)
Przykad 3.43. Obliczy objto pod wykresem funkcji z = sin(x y) dla 0
x 1, 0 y 2.
> value(Doubleint(sin(x*y),x=0..1,y=0..2));
+ ln(2) Ci(2)
> value(%);
.8473820172
Tutaj oznacza sta Eulera, za Ci - kosinus cakowy.
/

64

Rozdzia 3. Funkcje Maple

3.9
3.9.1

Wybrane zagadnienia analizy matematycznej


Elementy analizy wektorowej

Operatory dywergencji i rotacji dziaaj na pola wektorowe, ktre definiuje si


za pomoc funkcji VectorField z pakietu VectorCalculus:

VectorField(vec |, coord|)
gdzie vec oznacza wektor, za opcjonalny parametr coord opisuje ukad wsprzdnych.
~ y, z) = [1, xy, z] w kartezjaPrzykad 3.44. Zdefiniowa pole wektorowe A(x,
skim ukadzie wsprzdnych i wyznaczy okrelony przez to pole wektor w punkcie x = 0, y = 0, z = 1.
> SetCoordinates(cartesian[x,y,z]):
> VectorField(<1,x*y,z>);
ex + x y ey + z ez
Do wyznaczania pola wektorowego VF w punkcie, opisanym za pomoc wektora
v, stosuje si funkcj evalVF z pakietu VectorCalculus:

evalVF(VF, v)
W naszym przypadku
> evalVF(%,<0,0,1>);
ex + ez
/
W Maple wektor ma przypisany jeden atrybut:
> <1,x*y,z>;
ex + x y ey + z ez
> attributes(%);
coords = cartesianx,y,z
Pole wektorowe jest wektorem o dodatkowym atrybucie vectorfield:

3.9. Wybrane zagadnienia analizy matematycznej

65

> attributes(VectorField(<1,x*y,z>));
v ectorf ield, coords = cartesianx,y,z
Dywergencj pola wektorowego VF oblicza si za pomoc funkcji Divergence:

Divergence(VF)
~
Przykad 3.45. Dane jest pole elektryczne E(x,
y, z) = [sin xy, exp (x), cos z].
Wyznaczy jego dywergencj.
> E:=VectorField(<sin(x*y),exp(-x),cos(z)>,cartesian[x,y,z]);
E := sin(xy) ex + e(x) ey + cos(z) ez
> Divergence(E);
cos(xy)y sin(z)
/
Przykad 3.46. Poda wzr na obliczanie dywergencji w biegunowym ukadzie
wsprzdnych r, . W tym celu obliczy dywergencj pola wektorowego F~ (r, ) =
[F 1(r, ), F 2(r, )].
> VF:=VectorField(<F1(r,phi),F2(r,phi)>,polar[r,phi]);
V F := F1(r, ) er + F2(r, ) e
> Divergence(VF);


F1(r, ) + r

r F1(r, )

F2(r, )

Rotacja pola wektorowego VF w przestrzeni trjwymiarowej jest polem wektorowym (dokadniej, pseudowektorowym). Oblicza si j za pomoc polecenia
Curl:

Curl(VF)
Przykad 3.47. Obliczy rotacj pola wektorowego zadanego w kartezjaskim
~ y, z) = [xz, y 2 , z + sin(xy)].
ukadzie wsprzdnych: A(x,
> A:=VectorField( <x*z,y^2,z+sin(x*y)>,cartesian[x,y,z]);

66

Rozdzia 3. Funkcje Maple


F := xz ex + y 2 ey + (z + sin(xy)) ez

> Curl(A);
cos(xy) x ex + (x cos(xy) y) ey
/
Gradient oblicza si za pomoc funkcji Gradient:

Gradient(f |, coord |)
Przykad 3.48. Obliczy gradient funkcji f (x, y, z) = x2 y sin(zx).
> SetCoordinates(cartesian[x,y,z]);
cartesian x,y,z
> Gradient(x^2*y*sin(zx));
(2xy sin(xz) + x2 y cos(xz)z)ex + (x2 sin(xz))ey + x3 y cos(xz)ez
/

3.9.2

Rwnania rniczkowe zwyczajne: metody analityczne

Rwnanie rniczkowe zwyczajne rozwizuje si za pomoc funkcji dsolve:

dsolve({RRZ,warpoc},funkcja,par)
gdzie RRZ oznacza rwnanie rniczkowe zwyczajne, warpoc - warunki pocztkowe, funkcja - zmienna zalena (funkcja jednej zmiennej), za par - opcjonalnie
wystpujce parametry.
Dla ukadu rwna rniczkowych zwyczajnych skadnia polecenia dsolve jest
nastpujca:

dsolve({uklad RRZ,warpoc},{funkcje},par)
gdzie uklad RRZ oznacza ukad rwna, a parametr funkcje oznacza zbir zmiennych zalenych.
Przykad 3.49. Rozwiza rwnanie Newtona dla punktu materialnego o masie m = 1, na ktry dziaa zalena od czasu sia F (t) = et . W chwili t = 0
pooenie i prdko punktu wynosz x(0) = 0, v(0) = 0. Rozwizanie: Naley

3.9. Wybrane zagadnienia analizy matematycznej

67

= et przy danych warunkach pocztkorozwiza rwnanie rniczkowe d dtx(t)


2
wych. Poniewa prdko jest pochodn pooenia po czasie, drugi z warunkw
pocztkowych zapiszemy uywajc operatora D. Rwnanie rniczkowe przypiszemy zmiennej difeq:
> difeq:=diff(x(t),t$2)=exp(-t);
d2
dif eq := 2 x(t) = e(t)
dt
warunki pocztkowe zmiennej warpoc:
> warpoc:=x(0)=0,D(x)(0)=0;
warpoc := x(0) = 0, D(x)(0) = 0
Stosujemy funkcj dsolve:
> dsolve({difeq,warpoc},x(t));
x(t) = e(t) + t 1
Aby przypisa to rozwizanie wielkoci x(t) naley uy polecenia assign:
> assign(%); x(t);
e(t) + t 1
/
Przykad 3.50. Rozwiza ukad rwna rniczkowych:
dy(t)
dt = x(t) z warunkami pocztkowymi x(0) = 0, y(0) = 1.

dx(t)
dt

= x(t) + y(t),

>

difeqsys:=diff(x(t),t)=x(t)+y(t), diff(y(t),t)=x(t);
d
d
dif eqsys := x(t) = x(t) + y(t), y(t) = x(t)
dt
dt
> warpoc:=x(0)=0,y(0)=1;
warpoc := x(0) = 0, y0) = 1
> dsolve({difeqsys,warpoc},{x(t),y(t)});
x(t) = ( 12
3.9.3

( 5+1)t
5
5 (
)
1
2
+ ( 12 + 105 )e(( 2 +1/2)t)
,
{y(t) = ( 2 10 )e

( ( 51)t ) 1 ( (51)t ) 1
( 5+1)t
5
5
)
1
1 (
2
2
2
+ ( 2 5e
+ 2e
)( 2
10 )( 2 + 2 e

5
10 )}

Rwnania rniczkowe zwyczajne: metody numeryczne

Rozwizanie numeryczne rwnania rniczkowego zwyczajnego z zadanymi


warunkami pocztkowymi otrzymuje si za pomoc wprowadzonej w poprzednim

68

Rozdzia 3. Funkcje Maple

rozdziale funkcji dsolve z parametrem numeric (lub type=numeric). Domylnie stosowany jest algorytm RKF (RungeKuttaFehlberg). Algorytm mona
zmieni za pomoc parametru method. Wanym parametrem jest output. Jego domylna warto to procedurelist, a wynikiem dziaania funkcji dsolve
jest wwczas procedura, ktra dla zadanej wartoci zmiennej niezalenej oblicza
numerycznie warto zmiennej zalenej oraz jej pochodnych.
Przykad 3.51. Rozpatrzymy rwnanie oscylatora harmonicznego z si wy2
+ x(t) = sin 2t, z nastpujcymi warunkami pocztkowymi:
muszajc: d dtx(t)
2
x(0) = 0, v(0) = 0. (a) Rozwiza je numerycznie w przedziale 0 t 2 .
Wyznaczy pooenie i prdko w chwili t = 1. (b) Znale chwil czasu, dla
ktrej x = 0.5. (c) Narysowa wykres x(t).
> difeq:=diff(x(t),t$2)+x(t)=sin(2*t);
!
d2
dif eq :=
x(t) + x(t) = sin(2 t)
dt2
> warpoc:= x(0)=0, D(x)(0) = 0;
warpoc := x(0) = 0, D(x)(0) = 0
(a) Tworzymy procedur o nazwie OH:
> OH:=dsolve({difeq,warpoc},numeric,range=0..2*Pi);
OH := proc(x rkf 45) . . . endproc
Pooenie i prdko dla t = 1 wynosz:
> OH(1);
d
x(t) = .637632807968586234]
dt
(b) Napiszemy6 funkcj X argumentu t, ktra zwraca warto x(t). Uyjemy
funkcji op, ktra wybiera odpowiedni operand z takiej listy, jak powysza:
[t = 1., x(t) = .257881505213978068,

> X:=t-> rhs(op(2,OH(t)));


X := t rhs(op(2, OH(t)))
Do rozwizania rwnania X(t) = 0.5 uyjemy funkcji fsolve, zapobiegajc
przedwczesnemu obliczaniu piszc 0 X(t)0 :
> fsolve(X(t)=0.5,t,0..2);
1.339290798
6

Mona rwnie uy parametru output=listprocedure, w wyniku czego Maple tworzy te


procedury.

3.9. Wybrane zagadnienia analizy matematycznej

69

(c) Do rysowania wykresw rozwiza wyznaczonych numerycznie za pomoc


dsolve suy funkcja odeplot, ktra bdzie omwiona w nastpnym rozdziale.
Tutaj zastosujemy polecenie plot do funkcji X(t), nie podajc nazwy zmiennej
niezalenej:
> plot(X,0..2*Pi);
0.8
0.6
0.4
0.2
0
0.2

0.4
0.6
0.8

3.9.4

Rwnania rniczkowe zwyczajne: metody graficzne

Wykresy rozwiza rwna rniczkowych zwyczajnych, otrzymanych za pomoc funkcji dsolve z parametrem numeric, tworzy si uywajc funkcji odeplot
z pakietu plots:

odeplot(dsn|,zmienne||, parametry|)
gdzie dsn jest wynikiem wywoania funkcji dsolve z parametrem numeric, a
wic dsn := dsolve(..., numeric). Wany wystpujcy opcjonalnie parametr
zmienne ustala za pomoc list, jakie wykresy maj by utworzone. Domylnie
rysowane jest rozwizanie rwnania.
Przykad 3.52. cise rwnanie opisujce wychylenie ktowe wahada mated2
matycznego z pooenia rwnowagi ma posta: dt
2 (t) + sin ((t)) = 0. W chwili
pocztkowej (0) = 0, 0 (0) = 1.7, gdzie znak prim () oznacza pochodn po
czasie. Narysowa: (a) na jednym wykresie zalenoci (t) i 0 (t); (b) wykres w
przestrzeni fazowej 0 . Przyj 0 t 4. Rozwizanie: Uyjemy funkcji
dsolve:
> difeq:=diff(alpha(t),t$2)+sin(alpha(t))=0;

70

Rozdzia 3. Funkcje Maple


!

d2
(t) + sin((t)) = 0
dif eq :=
dt2
> warpoc:=alpha(0)=0,D(alpha)(0)=1.7;
warpoc := (0) = 0, D()(0) = 1.7
> rozw:=dsolve({difeq,warpoc},alpha(t),numeric,range=0..4*Pi);
rozw := proc(x rkf 45) . . . endproc
(a) Tworzymy list dwch list, definiujcych krzywe majce pojawi si na wykresie. W naszym przypadku na osi odcitych odkadamy czas t, a na osi rzdnych
wartoci (t) oraz 0 (t):
> with(plots):
> odeplot(rozw,[[t,alpha(t)],[t,diff(alpha(t),t)]]);
2
1
0

6t

10

12

1
2
alpha
alpha

Poniewa wychylenia s due, to obserwuje si wyrane odstpstwa od ruchu


harmonicznego prostego, dla ktrego rozwizaniami s funkcje sinus i kosinus, a
okres drga wynosi 2.
(b) Tworzymy list wskazujc na to, e na osiach odkadane bd wartoci kta
i jego pochodnej po czasie (prdkoci ktowej):
> odeplot(rozw,[alpha(t),diff(alpha(t),t)],scaling=constrained);
1.5
alpha

1
0.5

0
0.5

1
alpha

1
1.5