Skrypt Do Maple
Transcript of Skrypt Do Maple
-
8/20/2019 Skrypt Do Maple
1/70
Antoni C. Mituś Rafał Orlik Grzegorz Pawlik
Wstęp do pakietu algebrykomputerowej Maple
Na prawach rękopisu - wszelkie prawa zastrzeżone
Wrocław 2007
-
8/20/2019 Skrypt Do Maple
2/70
-
8/20/2019 Skrypt Do Maple
3/70
Spis treści
1 Maple w przykładach 5
1.1 Maple jako kalkulator . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Przekształcanie wyrażeń . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Analityczne rozwiązywanie równań . . . . . . . . . . . . . . . . . . 6
1.4 Numeryczne rozwiązywanie równań . . . . . . . . . . . . . . . . . . 71.5 Działania na macierzach . . . . . . . . . . . . . . . . . . . . . . . . 71.6 Pochodne i całki . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.7 Równania różniczkowe . . . . . . . . . . . . . . . . . . . . . . . . . 81.8 Wykresy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.9 Projekt: ruch pod wpływem siły F (t) = e−t . . . . . . . . . . . . . 9
2 Podstawowe pojęcia, struktury i konstrukcje 13
2.1 Uwagi ogólne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Podstawowe obiekty . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3 Wyrażenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Struktury danych: zbiory, listy i tablice . . . . . . . . . . . . . . . 222.5 Zmienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3 Funkcje Maple 31
3.1 Upraszczanie i przekształcanie wyrażeń . . . . . . . . . . . . . . . 313.2 Elementy programowania . . . . . . . . . . . . . . . . . . . . . . . 323.3 Funkcje i procedury . . . . . . . . . . . . . . . . . . . . . . . . . . 333.4 Elementy grafiki dwuwymiarowej . . . . . . . . . . . . . . . . . . . 33
3
-
8/20/2019 Skrypt Do Maple
4/70
4 Spis treści
3.4.1 Podstawowe konstrukcje . . . . . . . . . . . . . . . . . . . . 333.4.2 Wykresy parametryczne . . . . . . . . . . . . . . . . . . . . 353.4.3 Wykresy w układzie współrzędnych biegunowych . . . . . . 363.4.4 Wykresy krzywych zadanych w postaci niejawnej . . . . . . 363.4.5 Dane dyskretne . . . . . . . . . . . . . . . . . . . . . . . . . 373.4.6 Pole wektorowe . . . . . . . . . . . . . . . . . . . . . . . . . 383.4.7 Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.8 Animacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5 Elementy grafiki trójwymiarowej . . . . . . . . . . . . . . . . . . . 41
3.5.1 Podstawowe konstrukcje . . . . . . . . . . . . . . . . . . . . 413.5.2 Wykresy parametryczne, krzywa przestrzenna . . . . . . . . 433.5.3 Wykresy w układach współrzędnych: sferycznym i cylin-
drycznym . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.5.4 Wykresy powierzchni zadanych w postaci niejawnej . . . . 453.5.5 Dane dyskretne . . . . . . . . . . . . . . . . . . . . . . . . . 463.5.6 Pole wektorowe . . . . . . . . . . . . . . . . . . . . . . . . . 463.5.7 Animacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6 Rozwiązywanie równań i nierówności algebraicznych . . . . . . . . 493.7 Elementy algebry liniowej . . . . . . . . . . . . . . . . . . . . . . . 52
3.7.1 Definiowanie wektorów i macierzy . . . . . . . . . . . . . . 523.7.2 Podstawowe operacje na wektorach . . . . . . . . . . . . . . 553.7.3 Podstawowe operacje na macierzach . . . . . . . . . . . . . 563.7.4 Wartości i wektory własne . . . . . . . . . . . . . . . . . . . 57
3.8 Granice, pochodne i całki . . . . . . . . . . . . . . . . . . . . . . . 583.8.1 Granice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.8.2 Pochodne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.8.3 Szereg Taylora . . . . . . . . . . . . . . . . . . . . . . . . . 603.8.4 Całki oznaczone . . . . . . . . . . . . . . . . . . . . . . . . 613.8.5 Całkowanie numeryczne . . . . . . . . . . . . . . . . . . . . 623.8.6 Całki niewłaściwe . . . . . . . . . . . . . . . . . . . . . . . 623.8.7 Całki nieoznaczone . . . . . . . . . . . . . . . . . . . . . . . 633.8.8 Całki wielokrotne . . . . . . . . . . . . . . . . . . . . . . . . 63
3.9 Wybrane zagadnienia analizy matematycznej . . . . . . . . . . . . 643.9.1 Elementy analizy wektorowej . . . . . . . . . . . . . . . . . 643.9.2 Równania różniczkowe zwyczajne: metody analityczne . . . 663.9.3 Równania różniczkowe zwyczajne: metody numeryczne . . . 673.9.4 Równania różniczkowe zwyczajne: metody graficzne . . . . 69
-
8/20/2019 Skrypt Do Maple
5/70
Rozdział
1Maple w przykładach
Celem pierwszego wykładu jest prezentacja wybranych przykładów, ilustru- jących oferowane przez Maple narzędzia matematyczne. Ograniczymy się przytym do kręgu typowych zagadnień z matematyki, z którymi student spotyka się
w czasie pierwszego roku studiów. Składnia występujących poniżej poleceń bę-dzie szczegółowo omówiona w kolejnych wykładach. Zachęcamy Czytelnika domodyfikowania kodu i prób eksperymentowania!
1.1 Maple jako kalkulator
Maple może działać jako kalkulator, mający wbudowane standardowe funkcjematematyczne:
> 2.13*sin(2.22)-log(2.7)/exp(-0.11);
0.587939283Działania na liczbach wymiernych są wykonywane bez konwersji na liczby rze-czywiste:
> 1/7+(2/12-1/3)/(1/2+4/13);−463
Zaimplementowana jest arytmetyka liczb zespolonych (I oznacza √ −1):
> 2*I + (1-I)/(1+2*I);
5
-
8/20/2019 Skrypt Do Maple
6/70
6 Rozdział 1. Maple w przykładach
−15
+ 75
I
1.2 Przekształcanie wyrażeń
Przypiszemy zmiennej a wyrażenie b + c2
> a:= b + c^2;
a := b + c2
Zmienna a może być użyta do konstrukcji wyrażeń arytmetycznych:
> a1:=a^5;
a1 := (b + c2)5,na których można wykonywać kolejne przekształcenia. Na przykład, przedstawi-my w postaci wielomianowej wyrażenie przypisane zmiennej a1 :
> expand(a1);
b5 + 5 b4 c2 + 10 b3 c4 + 10 b2 c6 + 5 b c8 + c10
1.3 Analityczne rozwiązywanie równań
Dane jest równanie kwadratowe: x2 + 5 x + 1 = 0. Jego pierwiastki wynoszą:
> solve(x^2+5*x+1=0,x);
−52 +
√ 212 , −
52 −
√ 212
Znajdziemy rozwiązanie układu równań liniowych: x + y = 2, x − y = 0:> solve({x+y=2,x-y=0},{x,y});
{y = 1, x = 1}
-
8/20/2019 Skrypt Do Maple
7/70
1.4. Numeryczne rozwiązywanie równań 7
1.4 Numeryczne rozwiązywanie równań
Gdy Maple nie znajduje ścisłego rozwiązania równania, można użyć metod nu-merycznych do wyznaczenia przybliżonego rozwiązania. Taka sytuacja ma miejscedla równania: sin(x) = e−x
2. Jedno z przybliżonych rozwiązań tego równania wy-
nosi:
> fsolve(sin(x)=exp(-x^2),x);
0.6805981744
1.5 Działania 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]]);
A :=
1 21 3
Wyznacznik i ślad macierzy A wynoszą:
> det(A); trace(A);
14
Macierz odwrotna do A ma postać:
> B:=evalm(A^(-1));
B :=
3 −2−1 1
-
8/20/2019 Skrypt Do Maple
8/70
8 Rozdział 1. Maple w przykładach
1.6 Pochodne i całki
Obliczymy pierwszą i drugą pochodną funkcji sin(x):
> diff(sin(x),x); diff(sin(x),x$2);
cos(x)
− sin(x)Znajdziemy całkę nieoznaczonoą cos(t) t2 dt:> int(cos(t)*t^2,t);
t2 sin(t)− 2sin(t) + 2t cos(t)Całka oznaczona
21 sin(ln(x)) dx wynosi:
> int(sin(ln(x)),x=1..2);
− cos(ln(2)) + sin(ln(2)) + 12
1.7 Równania różniczkowe
Rozwiążemy równanie różniczkowe: d2
dt2 x(t) + x(t) = 0, opisujące ruch swo-
bodnego oscylatora harmonicznego.
> difeq:=diff(x(t),t$2) + x(t)=0;
difeq := d2
dt2 x(t) + x(t) = 0
> dsolve(difeq,x(t));
x(t) = C 1sin(t) + C 2cos(t)
W rozwiązaniu występują dwie dowolne stałe: C1 i C2 .
1.8 Wykresy
Na poniższym rysunku przedstawiono wykres funkcji y = cos(x)(x + sin(x))w przedziale 0 x 4π:
-
8/20/2019 Skrypt Do Maple
9/70
1.9. Projekt: ruch pod wpływem siły F (t) = e−t 9
> plot(cos(x)*(x+sin(x)),x=0..4*Pi);
–5
0
5
10
2 4 6 8 10 12x
Tworzenie wykresów trójwymiarowych jest równie proste. Narysujemy wykresfunkcji 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);
–3 –2
–10
12
3
x
–3 –2
–10
12
3
y
–1
–0.5
0
0.5
1
1.9 Projekt: ruch pod wpływem siły F (t) = e−t
Przedstwione w tym rozdziale narzędzia Maple pozwalają na analizę wieluzagadnień fizycznych. Zbadamy jednowymiarowy, prostoliniowy ruch cząstki omasie m = 1 pod wpływem siły zależnej od czasu: F (t) = e−t. W chwili t = 0spoczywająca cząstka znajduje się w punkcie o współrzędnej x = 0. Należy zna-leźć zależność położenia cząstki od czasu x(t), narysować wykres tej zależnościoraz obliczyć czas t0, po upływie którego cząstka znajdzie się w punkcie o współ-
-
8/20/2019 Skrypt Do Maple
10/70
10 Rozdział 1. Maple w przykładach
rzędnej x = 1. 1
Należy rozwiązać równanie Newtona dla siły F (t): d2
dt2 x(t) = e−t. Napiszemy
je w Maple :
> restart:
> diffeq:=diff(x(t),t$2)=exp(-t);
diffeq := d2
dt2 x(t) = e(−t)
Rozwiążemy to równanie:
> dsolve(diffeq,x(t));
x(t) = e(−t) + C 1t + C 2Przypiszemy znalezione rozwiązanie zmiennej x:
> x := exp(-t)+ C1+ C2*t;
x := e(−t) + C 1 + C 2tStałe, oznaczone przez C 1 i C 2, wyznacza się z warunków początkowych. Wie-my, że prędkość w chwili t = 0 wynosi v(0) = 0. Prędkość obliczamy jako po-chodną położenia cząstki po czasie:
> v:=diff(x,t);
v := −e(−t) + C 2Z warunku v(0) = 0 otrzymujemy równanie 0 = − exp(0)+ C 2 = −1 + C 2, skądC 2 = 1. Nasze rozwiązanie przyjmuje postać:
> x:=exp(-t)+ C1+t;
x := e(−t) + C 1 + tZ drugiego warunku początkowego, x(0) = 0, otrzymujemy równanie x(0) =exp(0) + C 1 = 1 + C 1, skąd C 1 = −1. Znależliśmy w ten sposób zależność xod czasu:
> x :=exp(-t)-1+t;
x := e(−t) − 1 + tNarysujemy wykres zależności x(t):
> plot(x,t=0..3);
1Przedstawione poniżej rozwiązanie można znacznie skrócić. Naszym celem jest pokazanietego, że dysponując bardzo ograniczonym zestawem funkcji Maple można otrzymać zadowalającerozwiązanie postawionego problemu.
-
8/20/2019 Skrypt Do Maple
11/70
1.9. Projekt: ruch pod wpływem siły F (t) = e−t 11
0
0.5
1
1.5
2
0.5 1 1.5 2 2.5 3t
Czas t 0 , będący pierwiastkiem równania x(t0) = 1, wyznaczymy numerycznie:
> fsolve(x=1,t);
1.841405660
-
8/20/2019 Skrypt Do Maple
12/70
12 Rozdział 1. Maple w przykładach
-
8/20/2019 Skrypt Do Maple
13/70
Rozdział
2Podstawowe pojęcia, struktury i
konstrukcje
2.1 Uwagi ogólne
Zaczniemy od kilku ważnych informacji na temat edytora arkusza roboczego(ang. worksheet ) pakietu. Interpreter Maple rozróżnia duże i małe litery. Informa-cję, która ma być przetworzona przez Maple , wpisuje się po znaku zachęty. Składasię ona z poleceń, funkcji, wyrażeń itd. i musi być zakończona dwukropkiem lubśrednikiem. W linii może znajdować się więcej niż jedno polecenie; każde z nichmusi kończyć się średnikiem lub dwukropkiem. Jeżeli informacja wejściowa niemieści się w jednej linii, można przejść do następnej linii za pomocą kombinacjiklawiszy SHIFT + ENTER; tworzy się wówczas grupa dwóch linii połączonychz lewej strony klamrą. Naciśnięcie klawisza ENTER powoduje wykonanie pole-
ceń z danej linii (lub z kilku linii w obrębie jednej grupy). Gdy linię wejściowązakończono średnikiem powoduje to (z reguły) wyświetlenie wyniku obliczeń wy-konanych przez Maple na ekranie; wyniki nie są wyświetlane, gdy linia kończysię dwukropkiem:
> 2;
2> 3:
13
-
8/20/2019 Skrypt Do Maple
14/70
14 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
Podczas edycji arkusza roboczego szczególnie przydatne są skróty CTRL+K iCTRL+J, powodujące wstawienie nowej linii przed i po aktualnej linii. Informacjęwejściową można wprowadzać w trybie matematycznym albo tekstowym; wyborumiędzy nimi dokonuje się za pomocą klawisza F5. Użycie klawisza F3 powodujerozbicie grupy linii połączonych wspólną klamrą; klawisz F4 powoduje połącze-nie dwóch grup linii. Wyrażenia matematyczne, zapisane w notacjiMaple w trybie
tekstowym, mogą być (po podświetleniu) zapisane w standardowej notacji ma-tematycznej za pomocą ciągu Format-Convert to-Math Expression dostępnego zgłównego menu arkusza roboczego Maple .
Zawartość arkusza roboczego, lub jego części, można zapisać w formacie LATEX,HTML oraz w plikach języka Fortran lub C. Zagadnienia te są krótko omówionew rozdziale dwunastym.
Przy pracy z pakietem bardzo użyteczny jest rozwinięty system pomocy. In-formację odnośnie obiektu Maple o nazwie ”obiekt” uzyskuje się wykonując pole-cenie ?obiekt. Na przykład, informację o całkowaniu otrzymuje się w następującysposób:
> ?int;Nie zamieszczamy tu, z braku miejsca, odpowiedzi Maple .Polecenie restart restartuje jądro Maple i oczyszcza wewnętrzną pamięć, po-
wodując tym samym usunięcie przypisań nadanych zmiennym:
> restart;
2.2 Podstawowe obiekty
Zaliczają się do nich liczby całkowite i ułamki:> 2; 1/9;
219
oraz liczby rzeczywiste:
> 27.2; 0.272*10^2; 0.272e2;
27.2
-
8/20/2019 Skrypt Do Maple
15/70
2.2. Podstawowe obiekty 15
27.20027.2
Maple traktuje ułamek 1/9 jako symbol, a nie jako liczbę zmiennoprzecinkową.Przejścia do reprezentacji zmiennoprzecinkowej dokonuje się za pomocą poleceniaevalf. W dalszej części wykładu wprowadzone zostaną odgrywające podobne role
polecenia evalb, evalc, evalm. Mają one prostą składnię:evalf(expr ) evalb(expr ) evalc(expr ) evalm(expr )
W naszym przypadku:
> evalf(1/9);
0.1111111111
Liczby zespolone, będące wyrażeniami arytmetycznymi, omówimy w rozdziale2.3.
Druga grupa obiektów to stałe matematyczne: Pi (π = 3.14 . . .), exp(1) (e
– podstawa logarytmów naturalnych), I = √ −1, infinity (∞), true, false(patrz ?constants):> Pi; evalf(Pi); exp(1); evalf(exp(1));
π
3.141592654e
2.718281828> I; infinity; true;
I
∞trueoraz zmienne globalne i otoczeniowe (ang. global and environment variables ),patrz ?ininame, w ich liczbie Digits (liczba cyfr znaczących w arytmetyce zmien-noprzecinkowej):
> Digits;
10
-
8/20/2019 Skrypt Do Maple
16/70
16 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
Wartość przypisana zmiennej tego typu może być zmieniona za pomocą nowegoprzypisania. Można również użyć jej nowej wartości jako parametru funkcji Maple jak w poniższym przykładzie, gdzie podano 20 cyfr znaczących liczby π:
> evalf(Pi,20);
3.1415926535897932385
Ostatni omawiany podstawowy obiekt to łańcuch:> ’Burek’;
Burek
Maple oferuje wiele typów obiektów. Funkcje whattype i hastype:
whattype(expr ) hastype(expr, typ)
dostarczają informacji o typie obiektu. Liczby całkowite, ułamki oraz liczby rze-czywiste są stałymi o typie numerycznym (ang. numeric ):
> whattype(2); whattype(1/9); whattype(27.2);
integer
fraction
float
> hastype(2,numeric); hastype(1/9,numeric); hastype(27.2,numeric);
true
true
true
Stała Pi nie ma typu numerycznego:
> whattype(Pi); whattype(evalf(Pi)); hastype(Pi,numeric);symbol
float
false
-
8/20/2019 Skrypt Do Maple
17/70
2.3. Wyrażenia 17
2.3 Wyrażenia
Wyrażenia są jednymi z najważniejszych struktur Maple . W ich skład mogąwchodzić stałe, zmienne, funkcje i łańcuchy. Omawianie wyrażeń rozpoczniemyod wyrażeń arytmetycznych. Ich części składowe połączone są za pomocą działańarytmetycznych: dodawania (+), odejmowania (-), mnożenia (*), dzielenia (/)
oraz potęgowania (^):> 2 + x^(2*y)/(x-y);
2 + x(2y)
x− yJaki typ ma to wyrażenie? Odwołamy się do zmiennej otoczeniowej %, którejMaple przypisuje wynik ostatnio obliczonego wyrażenia (zmiennej %% przypisujesię wynik przedostatniego obliczonego wyrażenia) i użyjemy funkcji whattype:
> whattype(%);
+
Powyższe wyrażenie jest (ma typ) sumą.Do konstrukcji wyrażeń można używać funkcji. Maple ma wbudowaną więk-szość elementarnych i specjalnych funkcji znanych z analizy matematycznej itrygonometrii (patrz ?inifcn). Wiele funkcji z zakresu algebry, teorii liczb istatystyki matematycznej znajduje się w pakietach, które muszą być wczytane.Spis dostępnych pakietów otrzymuje się wykonując polecenie ?index[package].W szczególności sqrt, ln, exp, sin, arcsin, tan oznaczają, kolejno, funkcje:pierwiastek, logarytm naturalny, wykładniczą, sinus, arcus sinus i tangens. Dowyznaczania wartości bezwzględnej służy funkcja abs. Funkcje wywołuje się zargumentem podanym w okrągłym nawiasie:
> abs(sin(-Pi/2))+ y*tan(2*Pi/3);
1− y√ 3> (arcsin(x^2)-1)/(ln(exp(x)));
arcsin(x2)− 1ln(ex)
Gdy argument ma typ zmiennoprzecinkowy, Maple wykonuje obliczenia stosującartmetykę zmiennoprzecinkową:
-
8/20/2019 Skrypt Do Maple
18/70
18 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
> sqrt(3)+1/2; sqrt(3.0)+1/2;√
3 + 12
2.232050808
Ważną klasą wyrażen arytmetycznych są liczby zespolone, zawierające stałąI =
√
−1 1. Obliczymy I 2 oraz iloczyn liczb zespolonych 2 + 3I, 2
−3I :
> I*I;
−1> (2+I*3)*(2-I*3);
13Funkcje Re i Im służą do obliczania części rzeczywistej i urojonej liczby zespolo-nej:
> Re(2+I*3);Im(2+I*3);
23
Funkcje abs i conjugate obliczają wartość bezwzględną i liczbę sprzężoną:> abs(2+I*3); √
13> conjugate(2+I*3);
2− 3I
Poniższy przykład może zaskoczyć użytkownika:
> Re(a+I*b);
(a + bI )
Wynik jest bezpośrednim rezultatem filozofii oprogramowania pakietu Maple , wmyśl której w wyrażeniach zespolonych (i nie tylko) wszystkie występujące zmien-ne są traktowane jako zmienne zespolone. Tak więc część rzeczywista powyższegowyrażenia nie wynosi a. Aby a i b mają były traktowane jako wyrażenia rzeczy-wiste, użytkownik musi poinformować o tym Maple , za pomocą polecenia assume(omówionego w następnym rozdziale) albo polecenia evalc:
1W zastosowaniach fizycznych używa się notacji i =√ −1
-
8/20/2019 Skrypt Do Maple
19/70
2.3. Wyrażenia 19
> evalc(%);
a
Druga grupa wyrażeń to wyrażenia logiczne (patrz ?boolean), przyjmującewartości logiczne prawda (true) i fałsz (false). Tworzy się je za pomocą opera-torów logicznych: and, or, not oraz operatorów relacji: = (większy lub równy), = (równy), (nierówny). Po-lecenie evalb służy do obliczania wartości logicznej wyrażenia. Na przykład:
> 2>3; evalb(2>3); evalb(2-x>0);
3 Pi);
π is(2-Pi>0);
false
Przy konstrukcji wyrażeń należy rygorystycznie przestrzegać hierarchii kolej-ności działania występujących w nich operatorów: najwyżej w niej umiejscowionesą operatory arytmetyczne, następnie operatory logiczne, a na końcu – operatory
relacji (patrz ?operators[precedence]). Sugerujemy, w celu uniknięcia pomy-łek, używanie nawiasów tworzących grupy wyrażeń. Zilustrujemy te uwagi naprzykładzie jednego z praw de Morgana: zaprzeczenie koniunkcji to alternatywazaprzeczeń:
> evalb((not(a and b)) = ((not a) or (not b)));
true
Zwraca uwagę fakt, że wyrażenia a i b nie były deklarowane jako wyrażenia lo-giczne. Jest to konsekwencją ogólnej strategii Maple , polegającej na określeniu
-
8/20/2019 Skrypt Do Maple
20/70
20 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
typu wyrażenia na podstawie kontekstu w którym je użyto. Zauważmy również,że wyrażeniom a, b nie przypisano żadnych wartości logicznych. Oznacza to, żeMaple ma wbudowane tautologie logiczne.
Wyrażenia arytmetyczne można grupować w ciąg wyrażeń, będący ważnąstrukturą Maple , stosowaną między innymi do tworzenia innych struktur danych.Najprostszy sposób utworzenia ciągu wyrażeń polega na użyciu operatora - prze-cinka (,). Na przykład:
> 1,a^2,sin(z);
1, a2, sin(z)> whattype(%);
exprseq
Wynik ma typ ”ciąg wyrażeń” (ang. expression sequence ).Dwa podstawowe narzędzia do tworzenia ciągów wyrażeń to polecenie seq oraz
operator powtórzeń $. Najczęściej stosowane wywołanie polecenia seq ma postać:
seq ( f, i=m..n )
gdzie f oznacza wyrażenie, i - nazwę (łańcuch), a m i n przypisano wartości nume-ryczne. W wyniku otrzymuje się ciąg wyrażeń f obliczonych dla kolejnych wartościlicznika i , wynoszących m, m+1, ..., n . Na przykład:
> seq(n^2,n=1..4);
1, 4, 9, 16
Operator $ tworzy ciąg składający się z n kopii wyrażenia:
expr $ n
Na przykład,
> sin(z)$3;sin(z), sin(z), sin(z)
Wyrażenia tworzące ciąg wyrażeń są numerowane za pomocą indeksu - dotego zagadnienia powrócimy w rozdziale 2.5, przy omawianiu pojęcia zmiennejindeksowanej.
Do badania struktury wyrażeń używa się poleceń op oraz nops, zwracającychciąg komponentow wyrażenia symbolicznego oraz ich liczbę:
-
8/20/2019 Skrypt Do Maple
21/70
2.3. Wyrażenia 21
op(i,expr ) op(list,expr ) nops(expr )
gdzie i , list to, odpowiednio, liczba naturalna albo lista liczb naturalnych.
Przykład 2.1. Zbadać strukturę (komponenty) wyrażenia x4 + sin(x).
> wyr:=x^4+sin(x);
wyr := x4 + sin(x)
Na pierwszym poziomie mamy dwa komponenty:> nops(wyr); op(wyr);
2x4, sin(x)
Pierwszy i drugi komponent otrzymuje się podając jego numer, będący liczbąnaturalną z przedziału od 1 do nops(wyr):
> op(1,wyr);op(2,wyr);
x4
sin(x)
Dalsza analiza komponentów wymaga przejścia na kolejny poziom struktural-
ny. Można zagnieżdżać polecenie op: op(an, op(..., op(a2, op(a1,e)) ...)lub stosować jego skróconą wersję: op([a1, a2, ..., an], e). W rozważanymprzykładzie pierwszy komponent pierwszego komponentu wynosi:
> op([1,1],wyr);
x
Drugi komponent pierwszego komponentu to:
> op([1,2],wyr);
4
Funkcja op oferuje prosty spoób dokonywania skomplikowanych podstawień.
Przykład 2.2. Zamienić w wyrażeniu wyr z poprzedniego przykładu liczbę 4na sin(y). W tym celu stwierdzamy, jakiej liście indeksów odpowiada komponent4 i stosujemy polecenie op:
> wyr:=subs(op([1,2],wyr)=sin(y),wyr);
wyr := xsin(y) + sin(x)
-
8/20/2019 Skrypt Do Maple
22/70
22 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
(polecenie subs będzie omówione w trzecim rozdziale.) Maple ma wbudowanepolecenie subsop, które upraszcza linię wejściową:
> subsop([1,2]=sin(y), wyr);
xsin(y) + sin(x)
2.4 Struktury danych: zbiory, listy i tablice
Lista to kolejny typ danych, opisujący zbiory (”nieuporządkowane” listy) oraz”uporządkowane” listy. Zaczniemy od zbiorów (ang. set ), tworzonych za pomocąnawiasów klamrowych z ciągu wyrażeń:
> {1,3,2,4}; {1,2,4,2};
{1, 2, 3, 4}{1, 2, 4}
> whattype(%);
set
Zwraca uwagę zmiana kolejności elementów zbioru w pierwszym przykładzie iopuszczenie powtarzającego się elementu (2) w drugim. Listę (uporządkowaną)(ang. list ) tworzy się za pomocą nawiasów kwadratowych:
> [1,3,2,4]; [1,2,4,2];
[1, 3, 2, 4][1, 2, 4, 2]
> whattype(%);
list
W przeciwieństwie do poprzedniego przykładu, kolejność elementów listy zostałazachowana, a powtarzające się elementy nie są usuwane.Dostęp do elementu listy uzyskuje się za pomocą indeksu (patrz rozdział 2.5).
W poniższym przykładzie wyznaczymy pierwszy element zbioru i trzeci elementlisty:
> S:={1,2,4}; S[1];
S := {1, 2, 4}1
-
8/20/2019 Skrypt Do Maple
23/70
2.4. Struktury danych: zbiory, listy i tablice 23
> L:=[a,b,c,d]; L[3];
L := [a, sin(t), c, d]c
Omówimy dwie proste, ale ważne operacje na listach: dodawanie elementu dolisty oraz łączenie list. Znajduje tu zastosowanie polecenie op, które działając na
listę usuwa nawiasy kwadratowe, tworząc z niej ciąg wyrażeń. Niech L oznaczalistę z ostatniego przykładu:
> op(L); whattype(%);
a, sin(t), c, dexprseq
Element e dodajemy do listy L w intuicyjnie jasny sposób:
> L1:=[op(L), e];
L1 := [a, sin(t), c, d, e]Dwie listy łączymy na podobnej zasadzie. Na przykład, połączymy 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 ). Każdy element tablicy odpowiada zbiorowi indeksów, a więc ta strukturanie jest, w przeciwieństwie do listy, jednowymiarowa. Zdefiniujemy tablicę 3× 3,nie przypisując jej elementom żadnych wartości::
> tabl:=array(1..3,1..3,[]);
tabl := array(1..3, 1..3, [])Do elementów tej tablicy odwołujemy się za pomocą pary indeksów:
> tabl[1,1];tabl1,1
Ponieważ tablice grają szczególnie ważną rolę w naukach ścisłych, zostaną onedokładniej omówione w rozdziale dziewiątym, dotyczącym algebry liniowej.
Ostatnia omawiana struktura danych to uogólniona tablica (ang. table ), roz-szerzająca wprowadzony wyżej typ tablicowy array . Różnica między nimi polegana tym, że indeksem w typie table może być dowolny obiekt, nie tylko liczba
-
8/20/2019 Skrypt Do Maple
24/70
24 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
naturalna.
Przykład 2.3. Skonstruować tablicę, zawierającą całki 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)]);
calka := table([x = x2
2 , sin(x) = − cos(x)ex = ex])
Całka z funkcji sin(x) wynosi:> calka[sin(x)];
− cos(x)
2.5 Zmienne
Głównym obszarem zastosowań pakietów algebry komputerowej są obliczenia
symboliczne. Jednym z podstawowych pojęć jest tu, tak jak w językach progra-mowania zorientowanych na obliczenia numeryczne, pojęcie zmiennej. Zmienna(ang. variable ) ma nazwę 2 (ang. name ), zazwyczaj zaczynającą się od litery. Wodróżnieniu od większości języków programowania, w Maple nie ma koniecznościdefiniowania typu zmiennej, który zostanie określony automatycznie na podsta-wie kontekstu, w jakim zmienna jest użyta:
> a; whattype(a);
a
symbol
Taka swobodna zmienna (ang. free variable ) nie ma przypisanej wartości. Przy-
pisanie zmiennej wyrażenia dokonuje się za pomocą operatora przypisania (:=)w następujący sposób:
zmienna := expr
Na przykład:
> a:=2;
2Różnica między nazwą a łańcuchem polega między innymi na tym, że nazwa nie wymagaużycia apostrofów
-
8/20/2019 Skrypt Do Maple
25/70
2.5. Zmienne 25
a := 2W celu sprawdzenia tego, jaka wartość jest przypisana zmiennej o nazwie a na-leży wykonać polecenie
> a;
2Umieszczenie nazwy zmiennej między dwoma apostrofami powoduje usunięcie
przypisania wartości tej zmiennej:> a:=’a’: a;
a
Szczególnie ważna rolę w obliczeniach symbolicznych odgrywają przypisaniazłożone. W Maple przyjęto zasadę, że dla zmiennych globalnych obowiązuje pełneobliczenie wartości jej przypisania (ang. full evaluation ). Zmienne globalne to, wszczególności, zmienne występujące w standardowej (interaktywnej) sesji Maple .Dla zmiennych lokalnych, występujących w procedurach, reguła obliczania jestinna. Jeżeli więc zmiennej globalnej przypisano inną zmienną globalną 3 itd., to
przy obliczaniu wartości przypisanej pierwszej zmiennej Maple wykonuje pełnyłańcuch przypisań. Nieliczne wyjątki od tej reguły przedstawimy w dalszej częściwykładu. Zilustrujemy tę fundamentalną zasadę na prostym przykładzie - przy-piszemy zmiennej a zmienną b, a tej ostatniej - wartość 2. W wyniku pełnegoobliczenia wartości przypisanej zmiennej a otrzymuje się 2:
> a:=b: b:=2: a;
2Zmienimy wartość przypisaną zmiennej b na sin(t):
> b:=sin(t);
b := sin(t)
Zmienna a ma teraz przypisaną wartość sin(t):> a;
sin(t)
3Zmienna jest reprezentowana wewnętrznie za pomocą wektora o trzech polach; przypisaniezmiennej pewnej wartości oznacza stworzenie wskażnika łączącego wektor opisujący zmienną zwektorem, opisującym przypisaną wartość.
-
8/20/2019 Skrypt Do Maple
26/70
26 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
Do tej pory zajmowaliśmy się zmiennymi prostymi. W Maple istnieją takżezmienne indeksowane. Tworzy się je przez dołączenie do nazwy zmiennej indeksu,będącego listą utworzoną z liczb naturalnych:
> c[1,2]; whattype(%);
c1, 2
indexed
Użycie indeksu nie powoduje tego, że zmienna c jest tablicą. Staje się nią dopieropo przypisaniu zmiennej indeksowanej wartości. Na przykład, wykonanie instruk-cji:
> a[1]:=5; a[2]:=3;
a1 := 5a2 := 3
powoduje utworzenie tablicy i przypisanie jej elementom, indeksowanym liczbami1 i 2, odpowiednio wartości 5 i 3. Zwrócimy uwagę na następujący ważny fakt.Nazwa a odnosi się do całej zmiennej indeksowanej. W celu sprawdzenia wartościprzypisanych elementom a[1] itd. nie wystarczy wykonać polecenia
> a;a
Jest to jeden z nielicznych wyjątków od zasady pełnego obliczania. Ten sposóbobliczania, noszący nazwę zasady obliczanie ”do ostatniej nazwy” (ang. last name evaluation ), patrz ?last name eval, polega na wykonania łańcucha przypisań ażdo momentu osiągnięcia ostatniej nazwy występującej w tym łańcuchu, repre-zentującej tablicę, macierz lub procedurę. W celu sprawdzenia pełnych przypisańnależy użyć polecenia eval, wymuszającego wykonanie pełnego obliczania. Jegoskładnia ma postać4:
eval(expr )
W naszym przypadku:
> eval(a); whattype(eval(a));
table([1 = 5, 2 = 3])table
Zgodnie z wcześniejszym stwierdzeniem, utworzona została tablica.4Polecenie to w postaci eval(expr, x = a ) oblicza wartość wyrażenia w punkcie x = a .
-
8/20/2019 Skrypt Do Maple
27/70
2.5. Zmienne 27
W rozdziale 2.3 omawialiśmy ciągi wyrażeń. Rozpatrzymy ciąg:
> ciag:=seq(k^2,k=0..5);
ciag := 0, 1, 4, 9, 16, 25Do jego elementów odwołujemy się za pomocą indeksu. W Maple indeks pierw-szego składnika wynosi 1:
> ciag[1]; ciag[6];
025
natomiast element indeksowany liczbą 0, tj. ciag[0], nie istnieje:
> ciag[0];
Error, invalid subscript selector
Często korzysta się ze zmiennej przy założeniu, że ma pewną własność – naprzykład jest dodatnia. Ustalenie tej własności odbywa się za pomocą poleceniaassume:
assume(expr, własność )
Na przykład,
> assume(x>0); x;
x̃
Tylda towarzysząca nazwie zmiennej wskazuje na istnienie nałożonych na niąograniczeń. Polecenie about informuje o aktualnych własnościach 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
-
8/20/2019 Skrypt Do Maple
28/70
28 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
Na przykład,
> assume(x>0): additionally(x x:=’x’: about(x);
x: nothing known about this object
Jeżeli zmienna z ograniczeniem występuje w wyrażeniu, to powyższy sposób nie jest skuteczny:
> assume(a>0): wyr:=a^2: a:=’a’; wyr;
a := aã 2
Należy najpierw usunąć ograniczenie na zmienną w wyrażeniu, a nstępnie przy-pisać zmiennej jej nazwę, umieszczając ją pomiędzy apostrofami:
> assume(a>0): wyr:=a^2: wyr:=subs(a=’a’,wyr); a:=’a’;
wyr := a2
a := a(polecenie subs będzie omówione w trzecim rozdziale).
Zauważymy, że jeżeli ograniczenie używane jest tylko do jednej operacji i po jej ukończeniu powinno być usunięte, wygodniej jest użyć polecenia assuming.
Podobnego typu trudności powstają przy próbie przypisania wartości zmiennejz ograniczeniem, będącej częścią wyrażenia. Po wykonaniu poniższych poleceńoczekujemy, że końcowy wynik wynosi 4, a tymczasem:
> assume(b>0): wyr:=b^2; b:=2; wyr;
wyr := b 2̃b := 2
b̃ 2
Przypisanie zmiennej z ograniczeniem pewnej wartości dokonuje się za pomocąpolecenia assign 5:
5Polecenie assign ma jeszcze jedną postać, która będzie omówiona przy rozwiązywaniu rów-nań.
-
8/20/2019 Skrypt Do Maple
29/70
2.5. Zmienne 29
assign(nazwa = expr )
W naszym przypadku
> assume(c>0): wyr:=c^2; assign(c=2);wyr;
wyr := c˜2
4
-
8/20/2019 Skrypt Do Maple
30/70
30 Rozdział 2. Podstawowe pojęcia, struktury i konstrukcje
-
8/20/2019 Skrypt Do Maple
31/70
Rozdział
3Funkcje Maple
3.1 Upraszczanie i przekształcanie wyrażeń
simplify(expr )
normal(expr )
expand(expr )
combine(expr )
factor(expr )
collect(expr, x )
map( fcn, expr )
convert(expr, nazwa )
subs(wyr1=wyr2, wyr )
31
-
8/20/2019 Skrypt Do Maple
32/70
32 Rozdział 3. Funkcje Maple
3.2 Elementy programowania
for nazwa | from expr || by expr || to expr || while expr |do ciąg poleceń end do;
|...| oznacza, że dany składnik występuje opcjonalnie1. Średnik (dwukropek)poprzedzający słowo end do może być pominięty.
while expr do ciąg poleceń end do
for name in expr do ciąg poleceń end do
if cond expr then ciąg poleceń | elif cond expr then ciąg poleceń |
| else ciąg poleceń |end if
Pionowe ograniczniki |...| oznaczają, że dany składnik występuje opcjonalnie2.Konstrukcja | elif cond expr then ciąg poleceń | może być wielokrotnie powtó-rzona. Przed słowami kluczowymi elif, else, end if można nie używać śred-ników i dwukropków.
sum( f , i=m..n)
gdzie f oznacza wyrażenie, i – nazwę (zmienna sumowania), a m i n – liczbycałkowite lub wyrażenia określające granice sumowania.
product( f , i=m..n)1Zamiast end do można użyć słowa od, pochodzącego ze starszych wersji Maple 2Zamiast end if można użyć słowa fi, pochodzącego ze starszych wersji Maple
-
8/20/2019 Skrypt Do Maple
33/70
3.3. Funkcje i procedury 33
3.3 Funkcje i procedury
nazwa funkcji := nazwa zmiennej → wyrażenie Jeżeli zmiennych jest więcej niż jedna, to muszą być one oddzielone przecinkami,a całość ujęta w okrągłe nawiasy.
f := unapply(expr,nazwa zmiennej )
Jeżeli zmiennych jest więcej 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(| ciąg parametrów |)| local ciąg nazw ; || global ciąg nazw ; || options ciąg nazw ; |
ciąg poleceń end;
Pionowe ograniczniki |...| oznaczają, że dany składnik występuje opcjonalnie.Średnik (albo dwukropek) występujący bezpośrednio przed słowem kluczowymend może być pominięty. Zaleca się staranne definiowanie wszystkich lokalnych iglobalnych zmiennych występujących w procedurach.
Wynikiem działania procedury jest rezultat ostatniej operacji wykonanej wciele procedury.
3.4 Elementy grafiki dwuwymiarowej
3.4.1 Podstawowe konstrukcje
plot( f(x), x=a..b, parametry )
-
8/20/2019 Skrypt Do Maple
34/70
34 Rozdział 3. Funkcje Maple
gdzie f(x) oznacza funkcję (która może być podana w postaci wyrażenia, porównajtrzeci sposób tworzenia funkcji omówiony w rozdziale 5.1), a a..b – przedziałwartości zmiennej niezależnej, dla których ma być narysowany wykres. Polecenieplot ma kilka ważnych parametrów (ang. options ) służących do kontroli wygląduwykresów (?plot, ?plot[options]).
Maple ma wbudowany interaktywny kreator wykresów, służący do wyboruwartości parametrów za pomocą okna dialogowego. W celu jego uruchomienia
należy albo zaznaczyć wynik uprzednio wykonanego polecenia Maple , a następniewybrać opcje Plots, Plot Builder, albo użyć polecenia interactive (konieczne jest załadowanie 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 można umie-
ścić w oddzielnym oknie – należy w tym celu otworzyć okno dialogowe, wychodząc
z pozycji File w głównym 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
1
–3 –2 –1 1 2 3x
Przykład 3.1. Narysować na jednym rysunku wykresy następujących funkcji:cos(x), sin(x), e−x
2w przedziale (−π, π), używając, odpowiednio, koloru niebie-
skiego, czerwonego i czarnego.
> plot([cos(x),sin(x),exp(-x^2)],x=-Pi..Pi, color=[blue,red,
black]);
-
8/20/2019 Skrypt Do Maple
35/70
3.4. Elementy grafiki dwuwymiarowej 35
–1
–0.5
0.5
1
–3 –2 –1 1 2 3x
display(L, parametry )
Dla funkcji z poprzedniego przykładu 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
1
–3 –2 –1 1 2 3x
3.4.2 Wykresy parametryczne
plot([ x(t), y(t), t=a..b ], parametry)
Przykład 3.2. Narysować elipsę, zadaną parametrycznie równaniami x(t) =sin(t), y(t) = 2 cos(t), t ∈ (0, 2 π). Użyć opcji scaling=constrained, powodują-cej użycie tej samej jednostki na obu osiach:
-
8/20/2019 Skrypt Do Maple
36/70
36 Rozdział 3. Funkcje Maple
> plot([sin(t), 2*cos(t), t=0..2*Pi], scaling=constrained);
–2
–1
0
1
2
–1 –0.5 0.5 1
3.4.3 Wykresy w układzie współrzędnych biegunowych
polarplot(r(phi), phi=a..b)
Przykład 3.3. Narysować wykres spirali, zadanej w układzie współrzędnychbiegunowych za pomocą równania r =
√ φ.
> with(plots):
Warning, the name changecoords has been redefined
> polarplot(sqrt(t),t=0..Pi*4);
–3
–2
–1
0
1
2
–3 –2 –1 1 2 3
plot([ r(t), phi(t), t=a..b ],coords=polar, parametry)
3.4.4 Wykresy krzywych zadanych w postaci niejawnej
implicitplot(równanie, x=a..b, y=c..d, parametry )
-
8/20/2019 Skrypt Do Maple
37/70
3.4. Elementy grafiki dwuwymiarowej 37
Przykład 3.4. Narysować wykres hiperboli x2 − y2 = 1.> implicitplot(x^2-y^2=1,x=-3..3,y=-3..3);
–2
–1
0
1
2
y
–3 –2 –1 1 2 3x
3.4.5 Dane dyskretne
pointplot(L, parametry )
L oznacza listę (albo zbiór) dwuelementowych list, zawierających współrzędnepunktów.
Przykład 3.5. Dane do wykresu są zbiorem dziewięciu par liczb [n, Ln], n =1 . . . 9, gdzie Ln oznacza n-tą liczbę pierwszą. Narysować wykresy, traktując paręliczb jako współrzędne punktu w układzie (a) kartezjańskim i (b) biegunowym.Użyjemy funkcji ithprime(n ), zwracającej Ln. Opcja symbol=box ustala sym-bol graficzny (tutaj kwadrat, inne możliwości: point,cross,diamond,circle), jakim będą rysowane punkty wykresu, a symbolsize – jego wielkość. Listę parliczb 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);
-
8/20/2019 Skrypt Do Maple
38/70
38 Rozdział 3. Funkcje Maple
5
10
15
20
2 4 6 8
Ostatni omawiany przypadek dotyczy sytuacji, gdy współrzędne x i y punktówznajdują się w dwóch oddzielnych listach lista x, lista y .
scatterplot(lista x, lista y, parametry )
Przykład 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);
1
2
3
4
5
6
1 2 3 4 5 6
3.4.6 Pole wektorowe
fieldplot(lista, x=a..b, y=c..d, opcje )
-
8/20/2019 Skrypt Do Maple
39/70
3.4. Elementy grafiki dwuwymiarowej 39
Obiekt lista jest listą dwóch wyrażeń zależnych od x, y, interpretowanych jakoskładowe pola wektorowego w punkcie (x, y). Zmienne x, y przyjmują wartościz podanych przedziałów. Użyteczne parametry to arrow, który opisuje postaćgraficzną wektora, oraz grid, ustalający rozmiar siatki, na której będą rysowanewektory.
Przykład 3.7. Narysować pole wektorowe A(x, y) = [x, y] na siatce o rozmia-
rach 11× 11. Użyjemy tu opcji axes = box, powodującej umieszczenie wykresuwewnątrz prostokąta.> fieldplot([x,y],x=0..1,y=0..1,arrows=SLIM, grid=[11,11],axes=
box);
0
0.2
0.4
0.6
0.8
1
y
0 0.2 0.4 0.6 0.8 1x
gradplot(expr, x=a..b, y=c..d, parametry )
Tutaj expr oznacza pole skalarne, zależne od zmiennych x, y, przyjmujących war-tości z podanych przedziałów.
Przykład 3.8. Narysować pole wektorowe, będące gradientem funkcji f (x, y) =x2 + y2, na siatce o rozmiarach 8 × 8.> gradplot(x^2+y^2,x=-1..1,y=-1..1,grid=[8,8]);
–1
–0.5
0.5
1
y
–1 –0.5 0.5 1x
-
8/20/2019 Skrypt Do Maple
40/70
40 Rozdział 3. Funkcje Maple
3.4.7 Histogram
histogram(lista, parametry )
Obiekt lista zawiera listę danych służących do budowy histogramu.
histogram(lista, parametry )Obiekt lista zawiera listę danych służących do budowy histogramu.
Przykład 3.9. Narysować histogram reprezentujący empiryczny rozkład praw-dopodobieństwa kolejnych dwustu liczb pierwszych, począwszy od liczby pierw-szej 3.
> with(stats[statplots]):
> data:=[seq(ithprime(n),n=1..200)]:
> histogram(data);
0.0002
0.0004
0.0006
0.0008
0.001
0.0012
0.0014
200 400 6 00 8 00 1000 1200
Tutaj słupki mają jednakowe pola, natomiast na poniższym histogramie mają jednakowe szerokości:
> histogram(data,area=1);
0.02
0.04
0.06
0.08
0.1
0.12
0.14
2 00 4 00 6 00 8 00 1 00 0 1 20 0
-
8/20/2019 Skrypt Do Maple
41/70
3.5. Elementy grafiki trójwymiarowej 41
3.4.8 Animacja
animate(plot, [ f(x,t), x=a..b], t=p..q, argumenty )
Pierwszy parametr (tutaj: plot) jest nazwą funkcji Maple służącej do tworzeniawykresu. Obiekty a, b mogą zależeć od t. Aby uruchomić animację należy zazna-czyć wykres, a następnie użyć menu kontekstowego, wywoływanego za pomocą
prawego klawisza myszy, albo użyć symboli klawiszy przypominających klawiszemagnetofonowe, które pojawiają się po zaznaczeniu wykresu nad arkuszem ro-boczym. Spośród parametrów warto wymienić frames, zmieniający liczbę klatekanimacji wynoszącą standardowo 25.
Przykład 3.10. Pokazać animację biegnącej fali sinusoidalnej. W tym celu użyćfunkcji f (x, t) = sin(2π(x + t)) dla 0 x 4, oraz dla parametru animacji t zprzedziału (0, 1).
> animate(plot,[sin(2*Pi*(x+t)),x=0..4],t=0..1, tickmarks=[2,2]);
t = 0.
–1
0
1
2 4x
3.5 Elementy grafiki trójwymiarowej
3.5.1 Podstawowe konstrukcje
plot3d( f(x,y), x=a..b, y=c..d, parametry )
Tutaj f(x,y) oznacza funkcję (która może być podana w postaci wyrażenia wzmiennych x, y, porównaj trzeci sposób tworzenia funkcji omówiony w rozdzia-le 5.1), natomiast a..b, c..d – przedziały wartości zmiennych niezależnych x, y,
-
8/20/2019 Skrypt Do Maple
42/70
42 Rozdział 3. Funkcje Maple
dla których ma być narysowany wykres3. Polecenie plot3d ma kilka ważnychparametrów (ang. options ) służących do kontroli wyglądu wykresów (?plot3d,?plot3d[options]).
Rozpatrzymy funkcję z(x, y) = 1√ x2+y2+1
.
> z:=1/sqrt(1+x^2+y^2);
z := 1 1 + x2 + y2Jej wykres ma postać:
> plot3d(z,x=-2..2,y=-2..2,axes=box);
–2
–10
12
x
–2 –1
01
2
y
0.4
0.6
0.8
1
Parametr style, przyjmujący wartości 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 przykładu:
> contourplot(z,x=-2..2,y=-2..2,contours=[0.4,0.5,0.7,0.9],filled=
true);
3Patrz również: rozdział 5.2.
-
8/20/2019 Skrypt Do Maple
43/70
3.5. Elementy grafiki trójwymiarowej 43
–2
–1
1
2
y
–2 –1 1 2x
densityplot(expr, x=a..b, y=c..d, parametry )
3.5.2 Wykresy parametryczne, krzywa przestrzenna
spacecurve(L, parametry )
Tutaj L oznacza listę, składającą się conajmniej z trzech elementów, interpre-towanych jako parametryczna reprezentacja współrzędnych x, y ,z. Podanie listykilku list umożliwia rysowanie kilku wykresów. Interwał zmienności parametru
może być określony zarówno wewnątrz tej listy (jako czwarty jej element), jak ipoza nią.
Przykład 3.11. Narysować trójwymiarową spiralę, zadaną za pomocą następu- jącej 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);
–1
–0.5
0
0.5
1
–1
–0.5
0
0.5
1
0
4
8
12
Parametryzacja listy za pomocą dwóch parametrów prowadzi do dwuwymia-rowej powierzchni w przestrzeni trójwymiarowej. Używa się tu znanej już funkcjiplot3d:
-
8/20/2019 Skrypt Do Maple
44/70
44 Rozdział 3. Funkcje Maple
plot3d([exprx, expry, exprz ], s=a..b, t=c..d, parametry )
Wyrażenia exprx, expry i exprx zadają parametryzację współrzędnych x, y ,z po-wierzchni za pomocą dwóch parametrów s, t.
Przykład 3.12. ”Rozciągnąć” spiralę z powyższego przykładu w powierzchniędwuwymiarową, zmieniając promień spirali r w granicach od 0 do 1. Parametry-
zacja 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 ustalapromień walca wokół krzywej przestrzennej.
3.5.3 Wykresy w układach współrzędnych: sferycznym i cylindrycz-
nym
plot3d(r( θ, φ), φ=a..b, θ=c..d , coords=spherical, opcje)
W celu uniknięcia nieporozumień podkreślimy, że niezależnie od stosowanychoznaczeń, pierwsza zmienna (tutaj: φ), o przedziale zmienności (a, b), reprezentujekąt azymutalny; podobnie, druga zmienna reprezentuje kąt polarny.
Przykład 3.13. Narysować powierzchnię jednostkowej sfery (r(θ, φ) = 1).
> plot3d(1,phi=0..2*Pi,theta=0..Pi,style=patchnogrid, coords=
-
8/20/2019 Skrypt Do Maple
45/70
3.5. Elementy grafiki trójwymiarowej 45
spherical,scaling=constrained);
plot3d(r( φ, z ), φ=a..b, z=c..d , coords=cylindrical, opcje)
W celu uniknięcia nieporozumień podkreślimy, że niezależnie od stosowanychoznaczeń, pierwsza zmienna (tutaj: φ), o przedziale zmienności (a, b), reprezentujekąt azymutalny; podobnie, druga zmienna reprezentuje współrzędną z .
Przykład 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);
–1 –0.5
00.5
1
–1 –0.5
00.5
1
–2
–1
0
1
2
3.5.4 Wykresy powierzchni zadanych w postaci niejawnej
implicitplot3d(równanie, x=a..b, y=c..d, z=p..q, opcje )
Obiekt równanie oznacza równanie w zmiennych x, y ,z.
Przykład 3.15. Narysować elipsoidę x2 + y2
4 + z2
8 = 1.
-
8/20/2019 Skrypt Do Maple
46/70
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
–10
12
3
x
–3 –2
–10
12
3
y
–3 –2
–10123
z
3.5.5 Dane dyskretne
pointplot3d(L, opcje )
L oznacza listę (albo zbiór) trójelementowych list, zawierających współrzędnepunktów.
Przykład 3.16. Współrzędne punktu materialnego zależą od czasu w następują-cy sposób: x(t) = cos(πt/20), y(t) = sin(πt/20), z(t) =
√ t. Przedstawić graficznie
położenia 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]);
–1 –0.5
00.5
1
–1 –0.5
00.5
2
4
6
8
3.5.6 Pole wektorowe
fieldplot3d(lista, x=a..b, y=c..d, z=p..q, opcje )
-
8/20/2019 Skrypt Do Maple
47/70
3.5. Elementy grafiki trójwymiarowej 47
Obiekt lista jest listą trzech wyrażeń zależnych od x, y, z, interpretowanych jakoskładowe pola wektorowego w punkcie (x,y ,z). Zmienne x,y , z przyjmują warto-ści z podanych przedziałów. Użyteczne parametry to arrow, który opisuje postaćgraficzną wektora, oraz grid, ustalający rozmiar siatki, na której będą rysowanewektory.
Przykład 3.17. Natężenie pola elektrycznego E (r), wytworzonego przez dodatni
jednostkowy ładunek punktowy umieszczony w początku układu współrzędnych,dane jest, w punkcie opisanym wektorem wodzącym r ≡ [x,y ,z], wzorem4 E (r) =rr3
. Wprowadzono tu oznaczenie r = |r| = x2 + y2 + z2. Przedstawić graficznieto pole.
> r:=sqrt(x^2+y^2+z^2): r3:=r^3;
r3 := (x2 + y2 + z2)(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
0
2
4
x –4
–20
24
y
–4
–2
0
2
4
z
Obracanie wykresu w przestrzeni za pomocą myszy znacznie ułatwia analizę pólwektorowych.
gradplot3d(expr, x=a..b, y=c..d, z=p..q parametry )
Tutaj wyrażenie expr oznacza pole skalarne, zależne od zmiennych x,y , z, przyj-mujących wartości z podanych przedziałów.
Przykład 3.18. Potencjał pola elektrostatycznego z poprzedniego przykładuwynosi φ(x,y ,z) = 1√
x2+y2+z2. Należy przedstawić graficznie to pole. Z elek-
trostatyki wiadomo, że E (x,y ,z) = −∇φ(x,y ,z). Po wykonaniu następujących4Pomijamy tu współczynnik (4π0)
−1
-
8/20/2019 Skrypt Do Maple
48/70
48 Rozdział 3. Funkcje Maple
poleceń otrzymuje się wykres z poprzedniego przykładu:
> r:=sqrt(x^2+y^2+z^2);
r := (x2 + y2 + z2)(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
0
2
4
x –4
–20
24
y
–4
–2
0
2
4
z
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 służącej do two-rzenia wykresu. Obiekty a,b,c,d mogą zależeć od t. Aby uruchomić animacjęnależy zaznaczyć wykres, a następnie użyć menu kontekstowego, wywoływanegoza pomocą prawego klawisza myszy, albo użyć symboli klawiszy przypominają-cych klawisze magnetofonowe, które pojawiają się (po zaznaczeniu wykresu) nadarkuszem roboczym. Spośród parametrów warto wymienić frames, zmieniającyliczbę klatek animacji wynoszącą standardowo 25.
Przykład 3.19.
Pokazać animację wykresu funkcji z(x, y) = cos(tx) sin(ty)dwóch zmiennych−π x, y π, dla wartości parametru t z przedziału 1 t 2.Przyjąć liczbę klatek równą 10.
> animate(plot3d,[cos(t*x)*sin(t*y),x=-Pi..Pi,y=-Pi..Pi],t=1..2,
frames=10);
-
8/20/2019 Skrypt Do Maple
49/70
3.6. Rozwiązywanie równań i nierówności algebraicznych 49
t = 1.
3.6 Rozwiązywanie równań i nierówności algebraicznych
solve(eqn, nazwa zmiennej )
Tutaj eqn oznacza równanie, nierówność albo nazwę procedury, natomiast pa-
rametr nazwa zmiennej oznacza zmienną względem której należy to równanie(nierówność) rozwiązać.
Przykład 3.20. Rozwiązać równanie kwadratowe x2 + x − 4 = 0 i sprawdzićrozwiązanie.
> e q : = x ^ 2 + x - 4 = 0 ;
x2 + x − 4 = 0Wygodnie jest wprowadzić zmienną reprezentującą rozwiązania:
> rozw := solve(eq,x);
rozw := −12
+
√ 172
,−12 −
√ 172
Otrzymany wynik jest ciągiem wyrażeń; do kolejnych rozwiązań odwołujemy sięza pomocą indeksowania:
> rozw1 := rozw[1]; rozw2 := rozw[2];
rozw1 := −12
+
√ 172
rozw2 := −12 −
√ 172
-
8/20/2019 Skrypt Do Maple
50/70
50 Rozdział 3. Funkcje Maple
Przykład 3.21. Rozwiązać nierówność x2 + x − 4 0> solve(x^2 + x - 4 eq:=cos(x)-sin(x); solve(eq);
π
4Maple znalazł tylko jedno rozwiązanie, tymczasem jest ich nieskończenie wiele:
> EnvAllSolutions := true:
> solve(eq);π
4
+ π Z 2̃
Maple wprowadził zmienną Z 2˜przyjmującą wartości naturalne, o czym łatwo jest przekonać się wykonując polecenie about( Z2).
W tych przypadkach kiedy funkcja solve nie znajduje rozwiązań, można po-szukiwać ich za pomocą funkcji fsolve, stosującej numeryczne metody rozwią-zywania równań. Znajduje ona z reguły tylko jeden pierwistek równania.
fsolve(eqn, nazwa zmiennej, argumenty )
Oznaczenia są tutaj takie same, jak dla funkcji solve. Spośród argumentów wy-mienimy przedział a
x
b, w którym ma być szukane rozwiązanie; zadaje się
go w postaci a..b albo x = a..b.Przykład 3.23. Znależć rozwiązanie równania e−x
2= sin(x) w przedziale 10
x 15.> eq:=exp(-x^2)-sin(x):
> x:=fsolve(eq,x=10..15);
x := 12.56637061
-
8/20/2019 Skrypt Do Maple
51/70
3.6. Rozwiązywanie równań i nierówności algebraicznych 51
Dla równań piątego i wyższych stopni Maple reprezentuje te rozwiązania,które nie są liczbami wymiernymi, za pomocą funkcji RootOf. W celu wyzna-czenia wszystkich wartości wyrażenia zawierającego RootOf stosuje się funkcjęallvalues:
allvalues(expr )
Tutaj expr jest dowolnym wyrażeniem algebraicznym, zbiorem lub listą takichwyrażen.
Przykład 3.24. Rozwiązać równanie: 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 przykładzie znane są dokładne rozwiązania. Na przykład, drugi z pier-wiastków wynosi
> allvalues(rozw[2]);
14 −
√ %3
12 +
√ 6
19%2√ %3 + 2√ %3%1 − 28√ %3 + 63 %2(143 + 3
√ 2577)(1/3)
√ %3
12%1 := (143 + 3
√ 2577)(2/3)
%2 := (143 + 3√
2577)(1/3)
%3 := 57%2− 12 %1 + 168(143 + 3
√ 2577)(1/3)
Przykład 3.25. Rozwiązać układ równań x2 + y2 = 1, y = x + 12 .
> eq:={y^2+x^2=1,y=x+1/2}; zm:={x,y};
eq := {y2 + x2 = 1, y = x + 12}
zm := {y, x}> solve(eq,zm);
{y = 12RootOf (2 Z 2 − 2 Z − 3,label = L2),x = 12RootOf (2 Z
2 − 2 Z − 3, label = L2)− 12}> rozw:=allvalues(%);
-
8/20/2019 Skrypt Do Maple
52/70
52 Rozdział 3. Funkcje Maple
rozw := {y = 14
+
√ 7
4 , x = −1
4 +
√ 7
4 }, {y = 1
4 −
√ 7
4 , x = −1
4 −
√ 7
4 }
Zwracamy uwagę na to, że znalezione rozwiązania nie przypisują zmiennym x, yżadnych wartości. W celu przypisania (nazwom) zmiennych powyższych rozwią-zań stosuje się funkcję assign5:
assign(eqs )
gdzie eqs oznacza zbiór lub listę równań otrzymanych w wyniku działania funkcjisolve.
Przypiszemy zmiennym x, y wartości z pierwszego rozwiązaniań:
> assign(rozw[1]); x; y;
−14
+
√ 7
414
+
√ 7
4
3.7 Elementy algebry liniowej
Pakiety:
> with(LinearAlgebra):
> with(VectorCalculus):
Pakiet Student[LinearAlgebra]
oferuje wartościowe narzędzia ułatwiającestudentom zrozumienie podstaw algebry liniowej.
3.7.1 Definiowanie wektorów i macierzy
< a1, a2, . . . , an > < a1|a2| . . . |an >5Funkcja ta była wprowadzona w podobnym kontekście w rozdziale 2.5.
-
8/20/2019 Skrypt Do Maple
53/70
3.7. Elementy algebry liniowej 53
albo
Vector[poz ]([a1, a2, . . . , an])
gdzie występujący opcjonalnie parametr poz przyjmuje wartości row albo column(ustawienie domyślne: column). Wynik zależy od tego, czy załadowany jest pakietVectorCalculus.
> restart:
> with(LinearAlgebra):
> v1:=; v2:=;
v1 :=
12
3
v2 := [a, b, c]> v3:=Vector[column]([1,2,3]); v4:=Vector[row]([a,b,c]);
v3 :=
12
3
v4 := [a, b, c]> with(VectorCalculus):
> v1:=; v2:=;
v1 := ex + 2ey + 3ezv2 := aex + bey + cez
Wygodna w użyciu jest nieco inna postać polecenia Vector:
Vector[poz ](n, symbol=a )
gdzie n jest nazwą zmiennej reprezentującej liczbę składowych ai wektora.Wektory w pakiecie Maple 9 są automatycznie traktowane jako kartezjańskie.
Układ współrzędnych można zmienić za pomocą funkcji
SetCoordinates(v, c )
-
8/20/2019 Skrypt Do Maple
54/70
54 Rozdział 3. Funkcje Maple
gdzie c jest nazwą (łańcuchem) określającą układ współrzędnych, która może byćuzupełniona listą specyfikującą nazwy współrzędnych. Parametr v jest opcjonalnyi określa nazwę wybranego wektora zdefiniowanego w danym układzie współrzęd-nych.
Przykład 3.26. Zdefiniować wektor o składowych (1, 2, 3) w sferycznym ukła-dzie współrzędnych, w którym współrzędne sferyczne mają nazwy (r,φ,θ).
> restart:> with(VectorCalculus):
> SetCoordinates(, ’spherical’[r, phi, theta]);
er + 2eφ + 3eθ
Macierze tworzy się w podobny sposób jak wektory:
, < d|e|f >>albo:
| < d, e, f >>albo:
Matrix([[a,b,c],[d,e,f]])
Macierz o wymiarach m × n (odpowiednio, liczba wierszy i kolumn) i elemen-tach ai,j:
Matrix(m, n, symbol=a )
Przykład 3.27. Utworzyć macierz
1 4 72 5 83 6 9
.> restart:
> M := ;
M :=
1 4 72 5 8
3 6 9
-
8/20/2019 Skrypt Do Maple
55/70
3.7. Elementy algebry liniowej 55
> M1:=Matrix([[1,4,7],[2,5,8],[3,6,9]]);
M 1 :=
1 4 72 5 8
3 6 9
3.7.2 Podstawowe operacje na wektorach
Pakiet:
> with(VectorCalculus):
Iloczyn skalarny wektorów v1 i v2 (o jednakowej liczbie składowych) można ob-liczyć na dwa sposoby:
DotProduct(v1, v2 ) albo v1 . v2
Do obliczenia iloczynu wektorowego dwóch trójwymiarowych wektorów służą po-
lecenia:
CrossProduct(v1, v2 ) albo v1 &x v2
Przykład 3.28. Wyprowadzić wzory na iloczyn skalarny v1 · v2 i wektorowyv1× v2 dla kartezjańskich wektorów v1 = [a1, a2, a3] oraz v2 = [b1, b2, b3].> v1:=;
v1 := a1ex + a2ey + a3ez> v2:=Vector(3, symbol=b);
v2 := b1ex + b2ey + b3ez
> DotProduct(v1, v2);a1b1 + a2b2 + a3b3
> CrossProduct(v1, v2);
(a2b3 − a3b2)ex + (a3b1 − a1b3)ey + (a1b2 − a2b1)ez
-
8/20/2019 Skrypt Do Maple
56/70
56 Rozdział 3. Funkcje Maple
3.7.3 Podstawowe operacje na macierzach
W tym rozdziale zakładamy, że załadowany jest pakiet LinearAlgebra:Przedstawione niżej funkcje stosuje się do wyznaczania: śladu macierzy
Trace(M )
wyznacznikaDeterminant(M )
macierzy transponowanej
Transpose(M )
oraz macierzy odwrotnej
MatrixInverse(M ) albo Mˆ(-1)
Przykład 3.29.
Obliczyć wyznacznik, ślad oraz macierz odwrotną do macierzyM o wymiarze 2 × 2, której elementy są postaci ai,j:> M:=Matrix(2, 2, symbol=a);
M :=
a1,1 a1,2a2,1 a2,2
> Determinant(M);
a1,1a2,2 − a1,1a2,2> Trace(M);
a1,1 + a2,2> MI:=MatrixInverse(M);
M I := a2,2
a1,1a2,2−a1,1a2,2 − a1,2
a1,1a2,2−a1,1a2,2−a2,1a1,1a2,2−a1,1a2,2
a1,1a1,1a2,2−a1,1a2,2
Dodawanie macierzy:
MatrixAdd(M1, M2, a, b) albo M1 + M2
Iloczyn dwóch macierzy oblicza się w następujący sposób
-
8/20/2019 Skrypt Do Maple
57/70
3.7. Elementy algebry liniowej 57
MatrixMatrixMultiply(M1, M2 ) albo M1 . M2
Kolejne dwie funkcje pozwalają obliczyć iloczyn wektora i macierzy M . Wpierwszym przypadku wektor jest kolumnowy (ColVect ), w drugim - wierszowy(RowVect ):
MatrixVectorMultiply(M , ColVect ) albo M . ColVect
VectorMatrixMultiply(RowVect , M ) albo RowVect . M
Przykład 3.30. Obliczyć iloczyn macierzy M =
1 02 1
i wektora c =
12
.
> M := ;
M :=
1 02 1
> v:=;
v :=
12
> M . v ;
v :=
14
3.7.4 Wartości i wektory własne
Zakładamy, że załadowany jest pakiet LinearAlgebra.
Do wyznaczania wartości własnych oraz wektorów własnych macierzy M służąpolecenia:
Eigenvalues(M ) Eigenvectors(M, parametry )
Pierwsze z nich zwraca wartości własne w postaci wektora kolumnowego, a drugieciąg dwóch wyrażeń: wektor kolumnowy wartości własnych oraz macierz, którejkolumny zbudowane są z wektorów własnych. Parametr output=list powoduje
-
8/20/2019 Skrypt Do Maple
58/70
58 Rozdział 3. Funkcje Maple
wyznaczenie degeneracji wartości własnych. Jako wynik otrzymuje się listę, któ-rej elementy zawierają następujące informacje: wartość własną, jej degenerację,wektor własny.
Przykład 3.31. Wyznaczmy wartości oraz wektory własne macierzy M :
> M:=;
M := 1 2
2 1
> Eigenvalues(M); 3−1
> Eigenvectors(M); −1
3
,
−1 1
1 1
> Eigenvectors(M, output=list);
−1, 1, −1
1 , 3, 1, 11
Obie wartości własne nie są zdegenerowane.
3.8 Granice, pochodne i całki
3.8.1 Granice
Granicę funkcji jednej zmiennej f(x) w punkcie a oblicza się za pomoca funkcjilimit:
limit( f, x=a |,dir |)
Przykład 3.32. Obliczyć granicę funkcji sin(x)/x w punkcie x = 0.
> limit(sin(x)/x,x=0);
1
-
8/20/2019 Skrypt Do Maple
59/70
3.8. Granice, pochodne i całki 59
Granicę funkcji dwóch zmiennych oblicza się analogicznie, jak w przypadkufunkcji jednej zmiennej:
limit( f, {x=a,y=b} |,dir |)
3.8.2 Pochodne
Pochodną (pierwszego rzędu) oraz pochodne rzędu n wyrażenia exp w zmiennejx wyznacza się za pomocą funkcji diff:
diff(exp, x ) diff(exp, x $ n )
Funkcja ta ma postac bezwładną Diff.
Przykład 3.33. Obliczyć pochodną wyrażenia xx.
> diff(x^x,x);
x
x
(ln(x) + 1)
Pochodne cząstkowe wyrażenia exp w zmiennych x1, . . . xn wyznacza się po-dobnie, jak dla wyrażenia w jednej zmiennej:
diff(exp, x1, ...xn )
Przykład 3.34. Obliczyć pochodną cząstkową ∂ 3 x2yz∂ 2x∂y
.
> f:=x^2*y*z;
f := x2yz
> Diff(f,x,x,y)=diff(f,x,x,y);∂ 3
∂y∂x2(x2yz) = 2z
Pochodną funkcji f , pochodną tej funkcji w punkcie x, oraz n-tą pochodnąwyznacza się za pomocą operatora różniczkowania D:
D( f ) D( f )(x) (D@@n )( f )
-
8/20/2019 Skrypt Do Maple
60/70
60 Rozdział 3. Funkcje Maple
Przykład 3.35. Obliczyć pochodne następujących funkcji: sinus, wykładniczej,oraz funkcji kwadratowej x− > x2.> D(sin); D(exp); f:=x->x^2; D(f);
cosexp
f := x → x2x → 2x
Widzimy, że pochodną funkcji jest funkcja. Wyznaczymy wartość pochodnej funk-cji f w punkcie x = 1:
> D(f)(1);
2
Pochodną funkcji f wielu zmiennych wyznacza się podobnie, jak w przypadkufunkcji jednej zmiennej:
D[...]( f )
W nawiasie kwadratowym podaje się numery zmiennych (w kolejności ich wystę-powania w definicji funkcji), po których obliczane są pochodne.
Przykład 3.36. Obliczyć pochodną cząstkową ∂ 3 f (x,y,z)∂ 2x∂y funkcji f : (x,y ,z)− >
x2yz.
> f:=(x,y,z)->x^2*y*z;
f := (x,y ,z) → x2yz> D[1,1,2](f);
(x,y ,z) → 2zW wyniku otrzymujemy funkcję.
3.8.3 Szereg Taylora
Rozwinięcie w szereg Taylora wyrażenia (funkcji) f w zmiennej x wokół punk-tu x=a z dokładnością do rzędu n wyznacza się za pomocą funkcji taylor.
-
8/20/2019 Skrypt Do Maple
61/70
3.8. Granice, pochodne i całki 61
Współczynnik przy k-tym członie rozwinięcia można wyznaczy za pomocą funkcjicoeftayl:
taylor( f, x=a |,n |) coeftayl( f, x=a, n)Pominięcie parametru a spowoduje domyślne przyjęcie a = 0.
Przykład 3.37.
Rozwinąć funkcję sin(x) w szereg Taylora wokół punktu x = 0,z dokładnością do wyrazów czwartego rzędu. Znależć wspólczynnik rozwinięciaprzy x7.
> t:=taylor(sin(x),x=0,4);
t := x − 16
x3 + O(x4)
Wynik ma typ:
> whattype(t);
series
Przed wykonywaniem dalszych operacji algebraicznych należy pozbyć się resztyO(x4) za pomocą funkcji convert:
> convert(t,polynom);
x − 16
x3
Współczynnik przy x7 wynosi:
> coeftayl(sin(x),x=0,7);−1
5040
3.8.4 Całki oznaczone
Całkę oznaczoną b
a f (x) dx oblicza się za pomocą funkcji int:
int( f, x=a..b, opcje )
gdzie f jest wyrażeniem algebraicznym w zmiennej x. Forma bezwładna funkcjiint ma postać Int.
Przykład 3.38. Obliczyć 1
0 x sin√
x2 + 1 dx.
-
8/20/2019 Skrypt Do Maple
62/70
62 Rozdział 3. Funkcje Maple
> int(x*sin(x^2 +1),x=0..1);12
cos(1)− 12
cos(2)
Wartości niektórych całek oznaczonych Maple podaje za pomocą funkcji spe-cjalnych.
Przykład 3.39.
Funkcja sinus całkowy S i(x) jest często stosowana w optyce:> Int(sin(x)/x,x=0..t)=int(sin(x)/x,x=0..t); t0
sin(x)x
dx = Si(t)
Jej wartość dla t = 1 wynosi
> evalf(Si(1));
0.9460830704
3.8.5 Całkowanie numeryczne
Przy obliczaniu wartości całki oznaczonej Maple oblicza najpierw funkceę pier-wotną. W tych przypadkach, gdy funkcja pierwotna nie istnieje (lub Maple niepotrafi jej wyznaczyć), można numerycznie obliczyć przybliżoną wartość całki.
Przykład 3.40. Obliczyć wartość całki 1
0 exp(−x3)sin(x) dx.> int(exp(-x^3)*sin(x),x=0..1); 1
0exp(−x3)sin(x) dx
> evalf(%);
.3261940545
3.8.6 Całki niewłaściwe
Granice całkowania mogą wynosić plus lub minus nieskończoność.
Przykład 3.41. Obliczyć wartość całki niewłaściwej ∞−∞
11+x2 dx.
> Int(1/(1+x^2),x=-infinity..infinity)=int(1/(1+x^2),
-
8/20/2019 Skrypt Do Maple
63/70
3.8. Granice, pochodne i całki 63
x=-infinity..infinity); ∞−∞
11 + x2
dx = π
3.8.7 Całki nieoznaczone
Całkę nieoznaczoną
f (x) dx oblicza się za pomocą funkcji int:
int( f, x )
gdzie f jest wyrażeniem algebraicznym w zmiennej x. Forma bezwładna funkcjiint ma postać Int.
Przykład 3.42. Wyznaczyć całkę nieoznaczoną
11+x2
dx.
> int(1/(1+x^2),x): Int(1/(1+x^2),x)=%; 11 + x2
dx = arctg(x)
3.8.8 Całki wielokrotne
Całki wielokrotne, zarówno nieoznaczone jak i oznaczone, zapisuje się stosujączagnieżdżanie całek pojedynczych. Dla całek podwójnych i potrójnych istniejepostać bezwładna, odpowiednio Doubleint i Tripleint:
Doubleint( f, x |=a..b|, y |=c..d |)Tripleint( f, x |=a..b|, y |=c..d |, z |=e..f )
Przykład 3.43. Obliczyć objętość 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(%);
.8473820172Tutaj γ oznacza stałą Eulera, zaś Ci - kosinus całkowy.
-
8/20/2019 Skrypt Do Maple
64/70
64 Rozdział 3. Funkcje Maple
3.9 Wybrane zagadnienia analizy matematycznej
3.9.1 Elementy analizy wektorowej
Operatory dywergencji i rotacji działają na pola wektorowe, które definiuje sięza pomocą funkcji VectorField z pakietu VectorCalculus:
VectorField(vec |, coord |)
gdzie vec oznacza wektor, zaś opcjonalny parametr coord opisuje układ współ-rzędnych.
Przykład 3.44. Zdefiniować pole wektorowe A(x,y ,z) = [1,xy ,z] w kartezjań-skim układzie współrzędnych i wyznaczyć określony przez to pole wektor w punk-cie x = 0, y = 0, z = 1.
> SetCoordinates(cartesian[x,y,z]):
> VectorField();
ēx + x y ēy + z ēz
Do wyznaczania pola wektorowego VF w punkcie, opisanym za pomocą wektorav , stosuje się funkcję evalVF z pakietu VectorCalculus:
evalVF(VF, v )
W naszym przypadku
> evalVF(%,);
ēx + ēz
W Maple wektor ma przypisany jeden atrybut:
> ;
ex + x y ey + z ez> attributes(%);
c oords = cartesianx,y,zPole wektorowe jest wektorem o dodatkowym atrybucie vectorfield :
-
8/20/2019 Skrypt Do Maple
65/70
3.9. Wybrane zagadnienia analizy matematycznej 65
> attributes(VectorField());
v ectorfield, coords = cartesianx,y,z
Dywergencję pola wektorowego VF oblicza się za pomocą funkcji Divergence:
Divergence(VF )
Przykład 3.45. Dane jest pole elektryczne E (x,y ,z) = [sin xy, exp(−x), cos z].Wyznaczyć jego dywergencję.
> E:=VectorField(,cartesian[x,y,z]);
E := sin(xy) ēx + e(−x) ēy + cos(z) ēz> Divergence(E);
cos(xy)y − sin(z)
Przykład 3.46. Podać wzór na obliczanie dywergencji w biegunowym układziewspółrzędnych r, φ. W tym celu obliczyć dywergencję pola wektorowego F (r, φ) =[F 1(r, φ), F 2(r, φ)].
> VF:=VectorField(,polar[r,phi]);
V F := F1(r, φ) ēr + F2(r, φ) ēφ> Divergence(VF);
F1(r, φ) + r ∂ ∂r F1(r, φ)
+ ∂ ∂φ F2(r, φ)
r
Rotacja pola wektorowego VF w przestrzeni trójwymiarowej jest polem wek-
torowym (dokładniej, pseudowektorowym). Oblicza się ją za pomocą poleceniaCurl:
Curl(VF )
Przykład 3.47. Obliczyć rotację pola wektorowego zadanego w kartezjańskimukładzie współrzędnych: A(x,y ,z) = [xz,y2, z + sin(xy)].
> A:=VectorField( ,’cartesian’[x,y,z]);
-
8/20/2019 Skrypt Do Maple
66/70
66 Rozdział 3. Funkcje Maple
F := xz ex + y2 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 |)
Przykład 3.48. Obliczyć gradient funkcji f (x,y ,z) = x2y sin(zx).
> SetCoordinates(’cartesian’[x,y,z]);
cartesian x,y,z
> Gradient(x^2*y*sin(zx));
(2xy sin(xz) + x2y cos(xz)z)ex + (x2 sin(xz))ey + x3y cos(xz)ez
3.9.2 Równania różniczkowe zwyczajne: metody analityczne
Równanie różniczkowe zwyczajne rozwiązuje się za pomocą funkcji dsolve:
dsolve({RRZ,warpoc },funkcja,par )
gdzie RRZ oznacza równanie różniczkowe zwyczajne, warpoc - warunki począt-kowe, funkcja - zmienna zależna (funkcja jednej zmiennej), zaś par - opcjonalniewystępujące parametry.Dla układu równań różniczkowych zwyczajnych składnia polecenia dsolve jestnastępująca:
dsolve({uklad RRZ,warpoc },{ funkcje },par )
gdzie uklad RRZ oznacza układ równań, a parametr funkcje oznacza zbiór zmien-nych zależnych.
Przykład 3.49. Rozwiązać równanie Newtona dla punktu materialnego o ma-sie m = 1, na który działa zależna od czasu siła F (t) = e−t. W chwili t = 0położenie i prędkość punktu wynoszą x(0) = 0, v(0) = 0. Rozwiązanie: Należy
-
8/20/2019 Skrypt Do Maple
67/70
3.9. Wybrane zagadnienia analizy matematycznej 67
rozwiązać równanie różniczkowe d2x(t)dt2 = e
−t przy danych warunkach początko-wych. Ponieważ prędkość jest pochodną położenia po czasie, drugi z warunkówpoczątkowych zapiszemy używając operatora D. Równanie różniczkowe przypi-szemy zmiennej difeq :
> difeq:=diff(x(t),t$2)=exp(-t);
difeq := d2
dt2
x(t) = e(−t)
warunki początkowe – zmiennej warpoc:
> warpoc:=x(0)=0,D(x)(0)=0;
warpoc := x(0) = 0, D(x)(0) = 0Stosujemy funkcję dsolve:
> dsolve({difeq,warpoc},x(t));
x(t) = e(−t) + t − 1Aby przypisać to rozwiązanie wielkości x(t) należy użyć polecenia assign:
> assign(%); x(t);
e(−t) + t−
1
Przykład 3.50. Rozwiązać układ równań różniczkowych: dx(t)dt = x(t) + y(t),dy(t)dt = x(t) z warunkami początkowymi x(0) = 0, y(0) = 1.
> difeqsys:=diff(x(t),t)=x(t)+y(t), diff(y(t),t)=x(t);
difeqsys := d
dtx(t) = x(t) + y(t),
d
dty(t) = x(t)
> warpoc:=x(0)=0,y(0)=1;
warpoc := x(0) = 0, y0) = 1> dsolve({difeqsys,warpoc},{x(t),y(t)});
{y(t) = (12 − √ 510 )e((√ 5+1)t2 ) + (12 + √ 510 )e((−
√
52 +1/2)t),
x(t) = (12 −√ 5
10 )(√ 52 +
12e
((√ 5+1)t2
) + (−12√
5e(−(√ 5−1)t2
) + 12e(− (
√ 5−1)t2
))(12 +√ 5
10 )}
3.9.3 Równania różniczkowe zwyczajne: metody numeryczne
Rozwiązanie numeryczne równania różniczkowego zwyczajnego z zadanymiwarunkami początkowymi otrzymuje się za pomocą wprowadzonej w poprzednim
-
8/20/2019 Skrypt Do Maple
68/70
68 Rozdział 3. Funkcje Maple
rozdziale funkcji dsolve z parametrem numeric (lub type=numeric). Domyśl-nie stosowany jest algorytm RKF (Runge–Kutta–Fehlberg). Algorytm możnazmienić za pomocą parametru method. Ważnym parametrem jest output. Je-go domyślna wartość to procedurelist, a wynikiem działania funkcji dsolve jest wówczas procedura, która dla zadanej wartości zmiennej niezależnej obliczanumerycznie wartość zmiennej zależnej oraz jej pochodnych.
Przykład 3.51.
Rozpatrzymy równanie oscylatora harmonicznego z siłą wy-muszającą: d2x(t)dt2
+ x(t) = sin2t, z następującymi warunkami początkowymi:x(0) = 0, v(0) = 0. (a) Rozwiązać je numerycznie w przedziale 0 t 2 π.Wyznaczyć położenie i prędkość w chwili t = 1. (b) Znaleźć chwilę czasu, dlaktórej x = 0.5. (c) Narysować wykres x(t).
> difeq:=diff(x(t),t$2)+x(t)=sin(2*t);
difeq :=
d2
dt2x(t)
+ x(t) = sin(2 t)
> 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) . . . endprocPołożenie i prędkość dla t = 1 wynoszą:
> OH(1);
[t = 1., x(t) = .257881505213978068, d
dt x(t) = .637632807968586234]
(b) Napiszemy6 funkcję X argumentu t, która zwraca wartość x(t). Użyjemyfunkcji op, która wybiera odpowiedni operand z takiej listy, jak powyższa:
> X:=t-> rhs(op(2,OH(t)));
X := t → rhs(op(2, OH (t)))Do rozwiązania równania X (t) = 0.5 użyjemy funkcji fsolve, zapobiegającprzedwczesnemu obliczaniu pisząc X (t):
> fsolve(’X(t)’=0.5,t,0..2);
1.3392907986Można również użyć parametru output=listprocedure, w wyniku czego Maple tworzy te
procedury.
-
8/20/2019 Skrypt Do Maple
69/70
3.9. Wybrane zagadnienia analizy matematycznej 69
(c) Do rysowania wykresów rozwiązań wyznaczonych numerycznie za pomocądsolve służy funkcja odeplot, która będzie omówiona w następnym rozdziale.Tutaj zastosujemy polecenie plot do funkcji X (t), nie podając nazwy zmiennejniezależnej:
> plot(X,0..2*Pi);
–0.8
–0.6
–0.4
–0.2
0
0.2
0.4
0.6
0.8
1 2 3 4 5 6
3.9.4 Równania różniczkowe zwyczajne: metody graficzne
Wykresy rozwiązań równań różniczkowych zwyczajnych, otrzymanych za po-mocą funkcji dsolve z parametrem numeric, tworzy się używając funkcji odeplotz pakietu plots:
odeplot(dsn |,zmienne ||, parametry |)
gdzie dsn jest wynikiem wywołania funkcji dsolve z parametrem numeric, awięc dsn := dsolve(..., numeric). Ważny występujący opcjonalnie parametrzmienne ustala za pomocą list, jakie wykresy mają być utworzone. Domyślnierysowane jest rozwiązanie równania.
Przykład 3.52. Ścisłe równanie opisujące wychylenie kątowe α wahadła mate-matycznego z położenia równowagi ma postać: d
2
dt2α(t)+sin(α(t)) = 0. W chwili
początkowej α(0) = 0, α(0) = 1.7, gdzie znak prim (’) oznacza pochodną poczasie. Narysować: (a) na jednym wykresie zależności α(t) i α(t); (b) wykres wprzestrzeni fazowej α − α. Przyjąć 0 t 4π. Rozwiązanie: Użyjemy funkcjidsolve:
> difeq:=diff(alpha(t),t$2)+sin(alpha(t))=0;
-
8/20/2019 Skrypt Do Maple
70/70
70 Rozdział 3. Funkcje Maple
difeq :=
d2
dt2α(t)
+ sin(α(t)) = 0
> 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ę dwóch list, definiujących krzywe mające pojawić się na wykre-sie. W naszym przypadku na osi odciętych odkładamy czas t, a na osi rzędnychwartości α(t) oraz α(t):
> with(plots):
> odeplot(rozw,[[t,alpha(t)],[t,diff(alpha(t),t)]]);
alphaalpha’
–2
–1
0
1
2
2 4 6 8 10 12t
Ponieważ wychylenia α są duże, to obserwuje się wyraźne odstępstwa od ruchuharmonicznego prostego, dla którego rozwiązaniami są funkcje sinus i kosinus, aokres drgań wynosi 2π.(b) Tworzymy listę wskazującą na to, że na osiach odkładane będą wartości kątai jego pochodnej po czasie (prędkości kątowej):
> odeplot(rozw,[alpha(t),diff(alpha(t),t)],scaling=constrained);
–1.5
–1
–0.5
0
0.5
1
1.5
alpha’
–2 –1 1 2alpha