Skrypt Do Maple

Embed Size (px)

Citation preview

  • 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

    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;

    ∞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;

    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