Mitu
Rafa Orlik
Grzegorz Pawlik
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
.
.
.
.
.
.
.
.
.
.
.
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
1.2
Przeksztacanie wyrae
1.3
5
21
5
21
+
,
2
2
2
2
1.4
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
1.6
Pochodne i caki
R2
1
> int(sin(ln(x)),x=1..2);
cos(ln(2)) + sin(ln(2)) +
1.7
1
2
Rwnania rniczkowe
d2
dt2
1.8
Wykresy
> plot(cos(x)*(x+sin(x)),x=0..4*Pi);
10
6
x
10
12
1
0.5
0
0.5
1
3
1.9
1
0
y
1
x
10
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.
11
1.5
0.5
0.5
1.5
t
2.5
12
Rozdzia
Uwagi oglne
14
2.2
Podstawowe obiekty
2
1
9
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:
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
2.3. Wyraenia
2.3
17
Wyraenia
x(2y)
xy
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
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
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
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
2.4
23
24
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
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
26
eval(expr)
W naszym przypadku:
> eval(a); whattype(eval(a));
table([1 = 5, 2 = 3])
table
Zgodnie z wczeniejszym stwierdzeniem, utworzona zostaa tablica.
4
2.5. Zmienne
27
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
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
Funkcje Maple
3.1
32
3.2
Elementy programowania
for nazwa | from expr || by expr || to expr || while expr |
do cig polece end do;
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
3.3
33
Funkcje i procedury
nazwa funkcji := nazwa zmiennej wyraenie
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)
3.4
3.4.1
34
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
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
36
1 0.5 0
0.5
/
3.4.3
polarplot(r(phi), phi=a..b)
Przykad 3.3. Narysowa wykres spirali,
zadanej w ukadzie wsprzdnych
0
1
2
3
37
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
20
15
10
5
2
/
3.4.6
Pole wektorowe
39
0.2
0.4
0.6
0.8
0.5
0.5
0.5
x
0.5
40
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
400
600
800
1000 1200
41
Animacja
t = 0.
2
x
3.5
3.5.1
42
> 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
43
1
x
1
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
45
spherical,scaling=constrained);
2
1
0
1
2
1
0.5
0
0.5
1 1
0
0.5
1
0.5
/
3.5.4
y2
4
z2
8
= 1.
46
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
47
4
2
z 0
2
4
4
4
2
0
2
y
2
4
~
trostatyki wiadomo, e E(x,
y, z) = (x, y, z). Po wykonaniu nastpujcych
4
48
4
2
z 0
2
4
4
4
2
0
2
y
2
4
/
3.5.7
Animacja
49
t = 1.
3.6
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
!
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.
51
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
1
7
7
7
7
1
1
1
rozw := {y = +
,x = +
}, {y =
,x =
}
4
4
4
4
4
4
4
4
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
Pakiety:
> with(LinearAlgebra):
> with(VectorCalculus):
Pakiet Student[LinearAlgebra] oferuje wartociowe narzdzia uatwiajce
studentom zrozumienie podstaw algebry liniowej.
3.7.1
< a 1 , a2 , . . . , a n >
5
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
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
1 4 7
M := 2 5 8
3 6 9
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
Pakiet:
> with(VectorCalculus):
Iloczyn skalarny wektorw v1 i v2 (o jednakowej liczbie skadowych) mona obliczy na dwa sposoby:
DotProduct(v1, v2)
albo
v1 . v2
CrossProduct(v1, v2)
albo
v1 &x v2
56
Trace(M)
wyznacznika
Determinant(M)
macierzy transponowanej
Transpose(M)
oraz macierzy odwrotnej
MatrixInverse(M) albo
M(-1)
"
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
57
MatrixMatrixMultiply(M1, M2)
albo
M1 . M2
MatrixVectorMultiply(M, ColVect)
albo
M . ColVect
VectorMatrixMultiply(RowVect, M)
albo
RowVect . M
"
"
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
Eigenvalues(M)
Eigenvectors(M, parametry)
58
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
59
/
Pochodne
diff(exp, x)
diff(exp, x$n)
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
D(f)
D(f)(x)
(D@@n)(f)
60
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
> 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.
61
coeftayl(f, x=a, n)
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
R
Przykad 3.38. Obliczy 01 x sin x2 + 1 dx.
62
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
> int(exp(-x^3)*sin(x),x=0..1);
Z 1
> evalf(%);
3.8.6
Caki niewaciwe
1
1+x2
> Int(1/(1+x^2),x=-infinity..infinity)=int(1/(1+x^2),
dx.
63
1
dx =
1 + x2
/
3.8.7
Caki nieoznaczone
Cak nieoznaczon
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.
Caki wielokrotne
64
3.9
3.9.1
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:
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
> 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
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
67
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 )}
68
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,
69
0.4
0.6
0.8
3.9.4
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
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
1
0.5
0
0.5
1
alpha
1
1.5