Professional Documents
Culture Documents
Mathematica Dla Niecierpliwych (Całość)
Mathematica Dla Niecierpliwych (Całość)
Mathematica Dla Niecierpliwych (Całość)
niecierpliwych
Miros aw Majewski
I
M. Majewski
Literatura ....................................................................82
II
Przedmowa
Od wielu lat zajmuję się tak zwanymi Systemami Algebry Komputerowej (ang.
Computer Algebra Systems, lub krótko CAS). Programy te mogą uczynić zarówno
nauczanie matematyki, jak i uczenie się matematyki, znacznie bardziej efektywnym
oraz, co jest również ważne, bardziej interesującym. Na codzień używam programu
Scientific Notebook jako mojej tablicy elektronicznej do wykładania takich
przedmiotów jak algebra liniowa, rachunek różniczkowy czy matematyka skończona.
Od wielu lat nie biorę do ręki kredy czy pisaka. Każdy mój wykład powstaje w sali
wykładowej na laptopie i jest rzutowany na ekran. Bezpośrednio po wykładzie moi
studenci mogą otrzymać notatki z wykładu w postaci elektronicznej, jako plik PDF, lub
drukowanej.
W sytuacjach, gdy zachodzi potrzeba zrobienia bardziej skomplikowanej ilustracji do
wykładu, lub napisania krótkiego programu, zazwyczaj używam programu MuPAD,
znanego obecnie jako Matlab Symbolic Maths Toolbox. Program Mathematica jest
ostatnim dodatkiem do arsenału moich narzędzi dydaktycznych. Przyczyn jest tu kilka
– MuPAD nie istnieje już w wersji niezależnej, a startowanie go z wnętrza programu
Matlab zabiera zbyt wiele czasu; Mathematica jest idealnym środowiskiem do
operowania strukturami matematycznymi, nawet tymi bardziej skomplikowanymi,
oraz ma wręcz niezwykłe możliwości graficzne. Na dodatek Mathematica posiada tę
niezwykłą procedurę Manipulate, która pozwala w kilka sekund zamienić każdy
przykład w interaktywne laboratorium.
Przedstawiony tu materiał powstał z doświadczeń i materiałów zgromadzonych przez
lata nauczania z komputerem. Pewne z pokazanych tu przykładów pochodzą z moich
wcześniejszych książek, z notatek do wykładów, oraz licznych eksperymentów z
różnymi programami matematycznymi. Wiele z załączonych tu zadań, podobnie jak
tytuł tego tekstu, zostało wzięte z mojej książki MuPAD dla niecierpliwych. Pokazane tu
środowisko i przykłady pochodzą z programu Mathematica wersja 7. Wszystkie
omówione tu przykłady zostały wielokrotnie przetestowane w różnych sytuacjach i z
różnymi parametrami. Nie wykluczam jednak możliwych pomyłek podczas
kopiowania przykładów z programu Mathematica oraz formatowania tekstu.
Wreszcie warto wspomnieć co czytelnik może znaleźć w tym opracowaniu i jak to
może wykorzystać. Mathematica jest programem bogatym w liczne narzędzia, funkcje
i wiele subtelności. Jest to niezmierzone morze wiadomości, które jest w stanie
oszołomić, lub nawet zniechęcić, początkującego użytkownika. Trzeba wielu lat na to,
aby poznać ten program dogłębnie. Tymczasem nauczyciel czy student potrzebuje
niewielki fragment tej wiedzy, tylko najpotrzebniejsze rzeczy, te których będzie
używał na lekcji czy do rozwiązania stosunkowo prostego problemu matematycznego.
Jak tytuł tego opracowania wskazuje, mam zamiar omówić tu wybrane i tylko
najpotrzebniejsze elementy programu.
Przedstawiony tu tekst jest fragmentem książki tego samego autora przygotowywanej
do druku. W tym opracowaniu czytelnik znajdzie tylko cztery rozdziały. We
wprowadzeniu omówimy najpotrzebniejsze rzeczy, które są potrzebne do tego aby
moc rozpocząć pracę z programem Mathematica. Jest to absolutne minimum, bez
którego trudno byłoby czytać pozostałe rozdziały. Czasem czytelnik może odczuwać
brak pewnych wiadomości. Pewne z nich z zostaną omówione w dalszych rozdziałach.
M. Majewski
IV
1
Wprowadzenie do programu
Mathematica
Zaczynając pracę z jakimkolwiek programem warto poświęcić kilka chwil na poznanie
otoczenia, w którym będziemy pracować. W przypadku programu Mathematica jest to
bogaty zestaw palet i oferta wielopoziomowej pomocy, które w tej chwili możemy
spokojnie pominąć i pozostawić na odpowiedniejszy moment. Dla nas w tej chwili
najważniejszy jest pusty notatnik na ekranie. Tu będziemy wpisywać nasze polecenia i
tu będziemy oczekiwać wyników. Na wielu typach ekranów domyślny notatnik używa
zbyt małych znaków aby można było wygodnie pracować. Dobrym i sprawdzonym
rozwiązaniem jest wyszukanie w menu FormatScreen Environment opcji Presentation.
W wyniku takiego wyboru otrzymujemy notatnik, który idealnie nadaje się do pracy
indywidualnej, jak również do prezentacji w trakcie lekcji czy wykładu.
Aby zapoznać się ze sposobem pracy w programie Mathematica wpiszemy nasze
pierwsze polecenie i wykonamy je. Zacznijmy od najbardziej naturalnego polecenia
jakie zadajemy programom komputerowym, np. aby rozwiązał nam jakieś proste
równanie, coś w rodzaju x 2 5x − 1 0. Polecenie rozwiązania takiego równania
może mieć postać:
Solve[x^2 5 x ‐ 1 0, x]
Aby uniknąć pomyłek już na samym początku zauważmy kilka istotnych rzeczy.
Mathematica rozróżnia pomiędzy dużymi i małymi literami. Polecenie Solve będzie
zrozumiane przez program, natomiast polecenie solve już nie. Wszystkie polecenia
zdefiniowane w programie Mathematica, nazwy funkcji i operatorów zaczynają się od
dużej litery, np. Solve, Simplify, Expand, Sin, Cos, etc. Drugą istotną sprawą jest
nawias przy Solve, jest to nawias kwadratowy. W każdym poleceniu, czy funkcji,
używamy nawiasów kwadratowych do wpisania argumentów polecenia czy funkcji.
Mamy zatem Sin[x], Cos[x], Expand[(x‐1)^3], Simplify[Sin[x]^4‐Cos[x]^4],
itd. Do tych spraw będziemy wracać jeszcze wielokrotnie. A oto kolejne istotne
elementy występujące w naszym poleceniu. Wyrażenie x^2 oznacza x 2 , natomiast 5 x
oznacza 5 ∗ x lub po prostu 5x. W tym ostatnim przypadku nie musimy pisać symbolu
mnożenia, wystarczy spacja.
Zauważmy ponadto, że równości w równaniach wpisujemy używając symbolu "".
Pojedynczy symbol "" ma nieco inne znaczenie w programie Mathematica.
Mirosław Majewski
Zanim pójdziemy dalej w poznawaniu programu, przyjrzyjmy się jeszcze przez chwilę
pewnym specyficznym elementom notatnika. Każda linia kodu i wyników
poprzedzona jest wyrażeniem In[nr]: lub Out[nr]:. Linie In[nr] oznaczają
input czyli wpisane przez nas polecenia, linie Out[nr] oznaczają wyniki obliczone i
wyświetlone przez program Mathematica. Każde polecenie, jak i wynik, ma numer
pokazujący w jakiej kolejności wpisywaliśmy i wykonywaliśmy polecenia. Kolejność
ta nie koniecznie musi zgadzać się z kolejnością w jakiej polecenia występują na
ekranie.
Drugą widoczną na obrazku cechą notatnika są nawiasy kwadratowe na prawym
obrzeżu notatnika. Każdy z tych nawiasów wskazuje obszar jakiegoś bloku elementów
2
Mathematica dla niecierpliwych
notatnika, np. blok danego polecenia, blok wyniku, blok polecenia i odpowiadającego
mu wyniku, blok rozdziału, itd. Każdy blok może być skasowany poprzez wybranie
odpowiadającego mu nawiasu na prawym marginesie i wciśnięcie klawisza [Delete].
Pomiędzy dwa kolejne bloki możemy wstawić nowe polecenie lub tekst. Wystarczy w
tym celu ustawić wskaźnik myszy w odpowiednie miejsce, a kiedy zamieni się w
poziomą kreskę, kliknąć i zacząć wpisywać nowe polecenie.
Podobnie postępujemy jeśli chcemy wpisać w notatniku dowolny tekst. Ustawiamy
wskaźnik myszy w odpowiednim miejscu, klikamy aby rozpocząć wpisywanie i
następnie wciskając [Alt][7] zamienić dany blok w tekst. Jeśli chcemy, aby nasz
notatnik był podobny do dokumentów jakie tworzymy w MS Word, czy innym
programie do edycji tekstów, to kolejne sekwencje klawiszy z [Alt] mają następujący
efekt: tytuł ([Alt][1]), podtytuł ([Alt][2]), podpodtytuł ([Alt][3]), sekcja ([Alt][4]),
podsekcja ([Alt][5]), podpodsekcja ([Alt][6]), tekst ([Alt][7]), kod ([Alt][8]), input
([Alt][9]). Bloki input oraz kod mają podobne własności ale mogą różnić się wyglądem
na ekranie.
Po tych bardzo wstępnych uwagach możemy przystąpić do poznawania możliwości
programu Mathematica.
1.1.1 Arytmetyka
Na początek zauważmy, że Mathematica posiada bardzo bogatą kolekcję funkcji do
obliczeń, jak te wykonywane przez nas codziennie z użyciem kalkulatora. Mamy
zatem wszelkie funkcje arytmetyczne: , −, , /, potęgę (wyrażenie 2 3 zapisujemy jako
2^3), oraz pierwiastek (wyrażenie 2 zapisujemy jako Sqrt[2]). Mamy do
dyspozycji często używaną w matematyce operację silnia "!". Z pomocą tych operacji
możemy tworzyć dowolnie skomplikowane wyrażenia i obliczać ich wartości, np.
(234 ‐ 456)*(752 345)/((23 34)*(75 ‐ 32) (78*99))
− 81178
3391
34!
295232799039604140847618609643520000000
Sqrt[1 2 2^2 2^3 2^4 2^5]
3 7
Bardziej skomplikowane wyrażenia pierwiastkowe zapisujemy używając symbolu
potęgi, np. 3 1 2 2 2 2 3 2 4 2 5 zapiszemy jako
3
Mirosław Majewski
Pisanie wyrażeń w tej postaci jest możliwe za pomocą odpowiednich palet symboli.
Możemy je znaleźć w menu Palettes i dalej np. Classroom Assistant, lub Basic Math
Assistant. Ponieważ na dalszych stronach tego tekstu będziemy używać licznych
poleceń korzystających głównie z zapisu liniowego, opis palet i ich wykorzystania
zostawimy sobie na inną okazję.
Wreszcie zauważmy dość istotną cechę programu Mathematica. Jak każdy inny CAS,
Mathematica stara się podawać wyniki w postaci symbolicznej, a więc 23 2
zamiast 4. 941 1, 1 zamiast 0. 1, itd. Jeśli zatem chcemy aby program podawał nam
10
wyniki w postaci numerycznej, to musimy go do tego w jakiś sposób zachęcić.
Sposobów zachęty jest conajmniej trzy.
Możemy zapisać jedną z liczb w postaci dziesiętnej, np. zamiast 234 napisać 234.0, to
wystarczy aby Mathematica podała cały wynik w postaci dziesiętnej.
(234.0 ‐ 456)*(752 345)/((23 34)*(75 ‐ 32) (78*99))
Możemy użyć polecenia N[wyrażenie]
N[(234 ‐ 456)*(752 345)/((23 34)*(75 ‐ 32) (78*99))]
lub
(234 ‐ 456)*(752 345)/((23 34)*(75 ‐ 32) (78*99)) //N
Każde z tych poleceń wyprodukuje wynik −23. 9393. Na szczególną jednak uwagę
zasługuje polecenie środkowe. Tu możemy zażądać dodatkowej precyzji wyniku, np.
wynik z dokładnością do 50 miejsc po przecinku otrzymamy przez użycie
dodatkowego parametru.
N[(234 ‐ 456)*(752 345)/((23 34)*(75 ‐ 32) (78*99)), 50]
−23. 939250958419345325862577410793276319669713948688
Ostatnie z trzech powyżej podanych poleceń zostało użyte w tzw. postaci postfix, czyli
4
Mathematica dla niecierpliwych
operator podany jest na końcu polecenia, tu //N . Z pewnych powodów jest to bardzo
wygodny sposób wykonywania pewnych operacji nie tylko arytmetycznych. Do tego
problemu wrócimy przy innej okazji.
Na zakończenie tego krótkiego rozdziału poświeconego arytmetyce warto wspomnieć
o dwu najczęściej używanych w matematyce stałych: oraz e. Zapisujemy je jako Pi
oraz E. Mamy zatem:
N[Pi, 50]
3. 1415926535897932384626433832795028841971693993751
oraz
N[E, 50]
2. 7182818284590452353602874713526624977572470937000
Ćwiczenia
1. Oblicz dziesiętną wartość ułamka 123/456 z dokładnością 10, 100, oraz 1000
miejsc po przecinku.
2. Oblicz oraz e z dokładnością 150 miejsc po przecinku.
5
Mirosław Majewski
6
Mathematica dla niecierpliwych
7
Mirosław Majewski
8
Mathematica dla niecierpliwych
Ćwiczenia
Rozwiąż następujące równania lub układy równań w programie Mathematica.
1. x 2 − 49 0
2. x2 x − 6 0
3. 20x 2 − 31x − 9 0
4. x 2 − 3x − 1 0
5. x 2 − 6x 1 0
6. x 2 7x 9 0
7. x 2 y 2 4xy − 1 0, rozwiąż ze względu na zmienną x, a następnie jeszcze raz
ze względu na y.
8. x 3 − x 2 x 1 0
9. x − 2y 7 i x 2 4y 2 37
10. x y 1 i 16x 2 y 2 65
11. y − x a i 2x 2 xy y 2 8
9
Mirosław Majewski
1.3 Zmienne
Każdemu obiektowi w programie Mathematica możemy przyporządkować jakąś
zmienną, lub inaczej mówiąc możemy mu nadać nazwę. W takim przypadku zamiast
za każdym razem wpisywać cały obiekt, np. system równań, łatwiej będzie posłużyć
się jego nazwą. Oto jak to wygląda w przypadku równań.
Nasz układ równań otrzymuje nazwę równania. Zauważmy, że nazwa może zawierać
specyficzne polskie litery. Niestety system w którym edytuję ten tekst nie pozwala mi
na to.
rownania {x y 1, x ‐ 2 y 2}
x y 1, x − 2y 2
Teraz nazywamy nasze zmienne i dokładamy średnik na końcu polecenia, aby
Mathematica nie wyświetlała niepotrzebnego na ekranie wyniku.
zmienne {x, y};
Po tych nazwaniach możemy rozwiązać system równań bez wypisywania od nowa
równań i zmiennych.
rozwiazania Solve[rownania, zmienne]
4
x → 3
, y → − 13
4
Otrzymany wynik jest zbiorem/listą zawierającym listę z dwu reguł x → 3
oraz
y → − 13 . Naszym zadaniem będzie wyłuskanie z tego liczb 43 oraz − 13 .
W programie Mathematica mamy operację podstawiania. Działa ona w następujący
sposób, polecenie
f(x)/. x‐a
zamieni w f(x) wszystkie wystąpienia zmiennej x na a. Możemy więc zastosować je
do pojedynczej zmiennej, pary zmiennych, lub innej struktury zwierającej zmienną x.
Oto jak to wygląda w naszym przypadku,
r1 x /. rozwiazania
4
3
r2 y/. rozwiazania
− 13
10
Mathematica dla niecierpliwych
r2 r2[[1]]
− 13
Teraz możemy już bez problemu operować naszymi rozwiązaniami dalej, np.
r1‐r2
5
3
To co otrzymaliśmy jest już macierzą, ale i w jej przypadku mamy dostęp do każdego
elementu,
x1 u[[1, 1]]
−1
x2 u[[2, 1]]
3
5
y1 u[[1, 2]]
0
11
Mirosław Majewski
y2 u[[2, 2]]
4
5
Teraz należy tylko zapamiętać, że pierwszy numer w parze [n,m] oznacza wiersz
macierzy, a drugi kolumnę, w której znajduje się dane rozwiązanie. Kolumny
zazwyczaj odpowiadają kolejnym zmiennym x, y, itd., numery wierszy są numerami
poszczególnych par (trójek, itd.) rozwiązań.
Ćwiczenia
Wpisz deklaracje następujących wyrażeń
1. pierwiastek x 1
2. drugiPierwiastek 2
1
1x− x
3. wielomian 3x 3 2x 2 x 1
4. ułamki b 1 1 1 1
a x b a1 1 c 1
1
x
b a 1x
5. dużoPierwiastków a a a a x
1.4 Funkcje
Funkcje i relacje są istotą matematyki. Używamy ich w każdej dyscyplinie
matematycznej. Możemy je również definiować w programie Mathematica. Oto kilka
przykładów
Tak definiujemy funkcje jednej zmiennej
f[x_] : x^2 3 x 2
g[x_] : 2 Sin[3 x] 3 Cos[5 x]
A tak ich używamy w naszych dalszych obliczeniach,
f[a 1]
a 1 2 3a 1 2
g[Pi/4]
3
2 −
2
12
Mathematica dla niecierpliwych
programie Mathematica zaczynają się od dużej litery to, dla odróżnienia, powinniśmy
zaczynać nasze funkcje od małych liter. Zazwyczaj, jeśli nie prowadzi to do
niepotrzebnych komplikacji, używamy nazw bardzo krótkich. Jeśli z jakiegoś powodu
nazwa funkcji musi być bardziej opisowa wówczas używamy jednego słowa lub kilku
połączonych w odpowiedni sposób, np. poleDwuOkregow. Jak widzimy nazwa zaczyna
się od małej litery, ale każde kolejne słowo już od dużej.
W deklaracji funkcji zmienna, lub zmienne, po lewej stronie mają znak podkreślenia.
Są to zmienne, za które możemy podstawić dowolne wyrażenia. Wreszcie symbol :
powoduje, że wyrażenie po prawej stronie pozostanie bez wartości w momencie
deklaracji, a jego wartość za każdym razem zostanie wyliczona od nowa w zależności
od wartości jakie podstawimy za zmienne.
Oto kilka innych przykładów deklaracji funkcji i ich użycia,
h[x_, y_] : 3 x^5 2 x^3
h[11, 23]
485815
s[x_, y_, n_] : Expand[(x y)^n]
s[a, b, 5]
a 5 5a 4 b 10a 3 b 2 10a 2 b 3 5ab 4 b 5
Podany tu sposób deklaracji funkcji pozwala również na łatwe deklaracje funkcji
rekurencyjnych. Oto jak możemy szybko utworzyć sobie deklarację funkcji
rekurencyjnej produkującej wyrazy ciągu Fibonacciego.
Zaczynamy od deklaracji dwu pierwszych wyrazów,
fibo[1] 1;
fibo[2] 1;
i dalej deklaracja już całej funkcji,
fibo[n_] : fibo[n ‐ 1] fibo[n ‐ 2]
Teraz możemy wyliczyć dowolny wyraz ciągu Fibonacciego.
fibo[17]
1597
Tak zdefiniowana funkcja rekurencyjna nie jest zbyt szybka i ma ograniczenia
odnośnie liczby kroków rekurencji, dlatego powinna być stosowana raczej dla małych
wartości argumentu. Bardziej efektywna metoda deklaracji funkcji rekurencyjnych
pojawi się przy innej okazji.
Na zakończenie omawiania deklaracji funkcji warto wspomnieć jak można szybko
utworzyć pewną liczbę wyrazów ciągu mając jego wzór. Dla przykładu pierwsze 15
wyrazów ciągu Fibonacciego utworzymy za pomocą następującego polecenia.
13
Mirosław Majewski
Table[fibo[n],{n, 1, 15}]
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610
14
Mathematica dla niecierpliwych
Ćwiczenia
Napisz deklaracje poniżej wymienionych funkcji, a następnie wylicz ich wartości dla
x 2 oraz x 3 .
1. fx 1 2x 1
2. gx 1
2
3x − 3x 5
3. hx x 4 2x 2 4
4. Frx 1 1 1
1 1
1− x 1 1− 1x
5. Rtsx x − 2x 3x − 4x x
15
Mirosław Majewski
Simplify[Sin[3*x] * Cos[3*x]]
1 sin6x
2
Simplify[Exp[x]*Exp[3*x]‐Exp[x]*Exp[2*x]]
e 3x e x − 1
Mathematica może również uprościć dowolne wyrażenie korzystając z podanych jej
założeń. Tu, dla przykładu, pokazujemy jak uprościć wyrażenie uwzględniając znak
zmiennej występującej w wyrażeniu.
Simplify[Sqrt[x*(Sqrt[x] x)^2]]
xx x 3
16
Mathematica dla niecierpliwych
w x^2/(x^3 ‐ 3*x 2)
x2
3
x − 3x 2
Apart[w]
4 5 1
9x 2 9x − 1 3x − 1 2
Ćwiczenia
1. Rozwiń następujące wyrażenia:
a. 2x 3 2
b. 4x 2 − 1 2
c. x − 1 2 x − 3 4
d. x − 2x − 3 5 x − 4 2
e. 1 x n , dla n 2, 3, 4, 5.
2. Rozwiń następujące wyrażenia z funkcjami trygonometrycznymi:
a. sin x cos x 3
b. 1 sin x 5
cos x
c. tanx 1
d. cotx 2 1
3. Zapisz w postaci iloczynu dwumianów:
a. 2x 2 − 3x 3
b. 4x 4 − 5x 2 1
c. 9x 2 21x 10
d. 6x 2 − 4x − 4x 3 x 4 1
e. 1 1x 1 1 1x 1
y1 2 2 1−y 2 2
4. Uprość następujące wyrażenia:
a. cos x sin y cos y sin x
b. 5x 10x 2 10x 3 5x 4 x 5 1
c. 1 1x 1 1 1x 1
y1 2 2 1−y 2 2
5
1 3x
d.
1 3x3 9x
2 − 3
e.
2 3
5. Rozwiń na ułamki częściowe:
a. x7
x2 − x − 6
17
Mirosław Majewski
2
b. 50x3 20x 6
x 2x 2 x
18
Mathematica dla niecierpliwych
Integrate[x^2 3*x 1, x]
x 3 3x 2 x
3 2
Dotychczas przeprowadzaliśmy operacje na wyrażeniach matematycznych, te same
operacje możemy wykonywać na wcześniej zadeklarowanych funkcjach. Jest tu kilka
istotnych różnic, o których warto pamiętać.
Zacznijmy zatem od zadeklarowania funkcji.
f[x_] : 1/(1 x^3)
No, a teraz, skoro już zdefiniowaliśmy sobie funkcję, to możemy wyliczyć jej pochodną
i całkę. Mamy zatem pochodną,
D[f[x], x]
− 3x 2
x 1 2
3
całkę nieoznaczoną,
Integrate[f[x], x]
2x−1
tan −1
− 1 logx 2 − x 1 1 logx 1
3
6 3 3
całkę oznaczoną w granicach od x 0 do x 5,
Integrate[f[x], {x, 0, 5}]
1 3 3 log 12 6 3 tan −1 3 3
18 7
oraz całkę oznaczoną w granicach od zera do nieskończoności.
Integrate[f[x], {x, 0, Infinity}]
2
3 3
Inną czynnością na lekcjach rachunku różniczkowego jest znajdowanie granic funkcji i
ciągów. Na początek zajmijmy się granicami funkcji. Zbadajmy granice funkcji znanej z
poprzedniego przykładu, w dwu punktach, dla x 0, oraz dla x −1, gdzie występuje
nieciągłość drugiego rodzaju.
f[x_] : 1/(1 x^3)
Dla x 0 dostajemy wynik bez większego problemu.
Limit[f[x], x ‐ 0]
1
Oto granica tej funkcji w punkcie x −1 z lewej strony,
Limit[f[x], x ‐ ‐1, Direction ‐ 1]
−
19
Mirosław Majewski
Ćwiczenia
Napisz polecenia deklarujące, a następnie obliczające, pochodne i całki podanych
poniżej funkcji.
1. y x3 x2 x 1
2. y
sin x cos x
3. y
tan x cot x
2
4. y e 1xx
5. y 1x
1 x x2
sposób, że poszczególne słowa pisane są razem i każde z zaczyna się z dużej litery, np.
PlotStyle, ColorData, ControlType, itd. Jeśli deklarujemy nasze własne nazwy
zmiennych czy procedur to powinniśmy zaczynać je od małej litery aby odróżnić je od
tych już istniejących w programie.
1.7.2 Nawiasy
Mathematica używa różnych rodzajów nawiasów do zupełnie różnych celów.
Wpisanie złego nawiasu powoduje, że program nie rozumie naszego polecenia
poprawnie i nawet jeśli otrzymamy wynik to będzie on zły.
1. Nawiasy kwadratowe używane są do wpisywania argumentów poleceń czy
funkcji, np. Sin[x], Solve[x^2‐10,x]. Używamy ich również do
oznaczania indeksów wyrazów w ciągach lub bardziej złożonych strukturach.
2. Nawiasy klamrowe używane są do tworzenia list, np. {x,0,1}, {n, 1, 15},
itd.
3. Nawiasy okrągłe używane są do grupowania wyrażeń we wzorach, np.
(1x)^2, (Sin[x]/(Cos[x]1))^2
4. Nawiasy okrągłe z gwiazdką są ignorowane przez program, a zatem mogą
służyć jako komentarz, np. (* A ten tekst nic nie znaczy *). Taki
fragment wpisany na obszarze dowolnego polecenia Mathematica zignoruje.
5. /. jest używany w celu zastosowania określonych reguł do wyrażenia po
prawej stronie, np. x^2 /. x‐5 podstawi wartość 5 w wyrażeniu x^2.
Zauważmy przy tym, że to podstawienie jest tymczasowe. Jeśli za chwilę
zechcemy użyć zmiennej x to okaże się, że ma ona ciągle swoją dotychczasową
wartość.
6. // pozwala otrzymać wartość wyrażenia po lewej stronie przekształconego
funkcją użytą po prawej stronie, np. polecenie x^2 1 0 //Solve
spowoduje rozwiązanie równania po lewej stronie.
21
Mirosław Majewski
3. Znak ":" używany jest do deklarowania funkcji, np. f[x_] : 1/(1 x^3).
W takim przypadku wyrażenie po lewej stronie jest nazwą funkcji, zmienna z
podkreśleniem jest zmienną, za którą możemy podstawiać wartości, wyrażenie
po prawej stronie jest definicją naszej funkcji.
22
Mathematica dla niecierpliwych
23
Mirosław Majewski
Ćwiczenia
Znajdź w pomocy programu Mathematica informację o poniżej wymienionych
procedurach. Napisz kilka poleceń ilustrujących działanie tych procedur.
TrigExpand
PowerExpand
TrigReduce
24
2
Grafika 2D w programie Mathematica
Jednym z najważniejszych zastosowań CAS jest wizualizacja matematyczna.
Możliwość precyzyjnego pokazania obiektów matematycznych na rysunku jest tym
czego brakowało w tradycyjnych narzędziach matematycznych. Program Mathematica
posiada bardzo interesujące możliwości graficzne. Mamy tu nie tylko bogactwo
procedur do wykresów funkcji, zarówno tych w 2D jak i 3D, ale również bardzo
interesujące rozwiązania do wizualizacji obiektów złożonych, które nie są wyrażone
za pomocą funkcji. Nasz przegląd zaczniemy od grafiki na płaszczyźnie i skupimy się
na tych rodzajach wykresów, które mają znaczenie w nauczaniu matematyki.
Najprostsza forma polecenia wykonującego wykres funkcji ma postać:
Plot[Funkcja[x],{x,xmin,xmax}]
Podstawą polecenia jest bardzo uniwersalna funkcja Plot. W nawiasie kwadratowym
mamy wymienioną funkcję. Jest to albo wyrażenie ze zmienną, albo nazwa wcześniej
zdefiniowanej funkcji. Dalej następują parametry. W najprostszym przypadku jest to
tylko, tak jak powyżej, deklaracja zakresu zmiennej względem której robimy wykres.
Mamy tu wymienioną zmienną, potem dolną granicę tej zmiennej, a następnie jej
górną granicę zgrupowane nawiasem kwadratowym. Oto prosty przykład,
Plot[x^2,{x,‐1,1}]
Jeśli zechcemy zrobić wykres kilku funkcji to grupujemy je, również nawiasem
klamrowym, w jeden obiekt, np.
Plot[{x,x^2,x^3,x^4},{x,‐1,1}]
W miarę przybywania parametrów, polecenie robiące wykres może się bardzo
skomplikować, ale o tym za chwile. Teraz zajmijmy się konkretami.
Skoro mamy już wykres funkcji oscylator, to możemy zobaczyć co się stanie jeśli
dołożymy do tego wykresu parę innych rzeczy, np. funkcje y x, y 2 x , y 2 −x .
Plot[{oscylator[x], x, 2^(‐x), 2^(x)}, {x, 0, Pi}]
26
Mathematica dla niecierpliwych
27
Mirosław Majewski
8
2.466, 2.453
x cos 10 x
2
6
y 2x
4
y=x
28
Mathematica dla niecierpliwych
3.0
2.5
2.0
1.5
1.0
0.5
29
Mirosław Majewski
3.0
2.5
2.0
1.5
1.0
0.5
Tu otrzymaliśmy wykres w którym jednostki na każdej osi mają tę samą długość. Inne
wartości AspectRatio powodują otrzymanie wykresów o specyficznych proporcjach
wymiarów.
3.0
2.5
2.0
1.5
1.0
0.5
Jeśli nie zależy nam na dokładnym manipulowaniu liniami siatki to sama deklaracja
GridLines ‐ Automatic
powinna zupełnie wystarczyć. Tu warto zwrócić uwagę na to, że deklaracja siatki może być
bardzo skomplikowana. Możemy zadeklarować grubość linii siatki, ich kolory, rodzaj linii,
itp. To zagadnienie zostawiamy czytelnikom do samodzielnych eksploracji.
Deklaracja osi układu współrzędnych może być równie bogata w szczegóły jak w
przypadku parametru GridLines. My zostaniemy przy kilku najważniejszych
opcjach.
W nielicznych przypadkach może być konieczne usunięcie osi układu współrzędnych
z wykresu. Są to na ogół przypadki, kiedy bardziej istotna jest artystyczna wartość
wykresu niż jego dokładność. Oto nasz oscylator bez osi układu współrzędnych,
oscylator[x_] : 2^(‐x*Cos[10 Pi x])
Plot[oscylator[t], {t, 0, Pi},
Axes ‐ False
]
31
Mirosław Majewski
Wykres w takiej postaci nie daje zbyt dużo informacji, ale może znakomicie służyć do
sprawdzenia wiedzy studentów czy uczniów. Dajmy im taki wykres wraz z
równaniem funkcji, i poprośmy, aby dorysowali do tego układ współrzędnych i
jednostki na osiach.
W przypadku bardzo skomplikowanych wykresów możemy chcieć wykreślić je z
ramką, skalą dookoła i siatką. Oto przykład takiego wykresu,
Plot[oscylator[t], {t, 0, 3 Pi},
Frame ‐ True,
GridLines ‐ Automatic
]
30
25
20
15
10
0
0 2 4 6 8
32
Mathematica dla niecierpliwych
12
10
1 2 3 4 5 6
33
Mirosław Majewski
Jeśli zależy nam na bardziej specjalnych kolorach, czy niestandardowej grubości linii,
to możemy deklarować te rzeczy samodzielnie, ale to wymaga trochę eksperymentów.
Zauważmy jeszcze jedną istotną własność wykresów w programie Mathematica.
Poszczególne krzywe układane są na wykresie jako kolejne warstwy. Wykres
pierwszej funkcji będzie na spodzie, wykres drugiej funkcji na niej, itd. To sprawia, że
grube linie umieszczone w górnej warstwie wykresu będą przykrywały to co poniżej.
To oczywiście jest łatwo naprawić poprzez ustalenie odpowiedniej kolejności funkcji
w deklaracji Plot. Oto przykład, w którym łączymy te wszystkie rzeczy jednocześnie.
Plot[{x, 2^x, 2^(‐x), oscylator[x]}, {x, 0, Pi},
PlotStyle ‐ {
(* parametry dla funkcji yx *)
{RGBColor[0.6, 0.6, 0.8], Dashed, Thickness[0.05]},
(* parametry dla funkcji 2^x *)
{RGBColor[0.1, 0.8, 0], Thickness[0.02]},
(* parametry dla funkcji 2^(‐x) *)
{RGBColor[0.1, 0, 0.8], Thick},
(* parametry dla funkcji oscylator *)
{Red, Thin}
},
(* Tu zaczynaja sie parametry ogolne wykresu *)
GridLines ‐ Automatic, Frame ‐ Automatic
]
0
0.0 0.5 1.0 1.5 2.0 2.5 3.0
W ostatnim wykresie pojawiły się dwa nowe elementy: kolor RGB i grubość linii
zadane liczbami. Kolor definiujemy za pomocą trzech lub czterech liczb. Są to
składniki koloru – czerwony, zielony, niebieski i przezroczystość. Każdy z tych
składników reprezentujemy liczbą z przedziału [0,1], gdzie 0 interpretujemy jako
brak danego składnika, a 1 jako pełne nasycenie danym składnikiem koloru. W
przypadku przezroczystości jest odwrotnie, 0 oznacza kolor kompletnie
przezroczysty, natomiast 1 pozbawiony kompletnie przezroczystości. Nas interesują
wartości pośrednie.
34
Mathematica dla niecierpliwych
35
Mirosław Majewski
Uwaga techniczna Dotychczas prezentowane w tym dokumencie wykresy były zapisywane jako
pliki EPS a następnie importowane do tekstu. W przypadku wykresów z wypełnieniami
pojawiały się zniekształcenia kolorów. Wobec czego ostatnie trzy wykresy zapisane zostały
jako pliki rastrowe TIF i dopiero takie wstawiane w tekst.
Ćwiczenia
1. Wykonaj wykres funkcji y x sin x dla x −1. . 1. Zastosuj parametr
PlotPoints ‐ 500 aby otrzymać dokładniejszy wykres? Zbadaj jak działa
parametr PlotPoints dla bardzo małych wartości, np. 3, 5, 10.
2. Wykonaj wykresy następujących funkcji. Zmodyfikuj je tak, aby jak najlepiej
pokazać szczególne miejsca na wykresie.
a. y 1 cos26x
1x
b. y sin 3x cos 5x
c. y sin x2
1−x
2
d. y 1 2x − x
sin x 1
36
Mathematica dla niecierpliwych
0.5
0.0
0.5
1.0
1.0 0.5 0.0 0.5 1.0
37
Mirosław Majewski
0.5
0.0
0.5
1.0
1.0 0.5 0.0 0.5 1.0
38
Mathematica dla niecierpliwych
0.5
0.5
1.0
39
Mirosław Majewski
50
40
30
20
10
0
0 10 20 30 40 50
40
Mathematica dla niecierpliwych
250
200
150
100
50
0
0 50 100 150 200 250
Ćwiczenia
1. Równia parametryczne x cos at i y sin bt, gdzie a i b są stałymi, opisują
rodzinę krzywych znanych jako krzywe Lissajou. Wykonaj wykresy kilku
krzywych Lissajou.
2. Spróbuj odgadnąć kształt wykresu krzywej zadanej równaniami
2
parametrycznymi x 1−t
1t 2
2t
i y 1t 2 , gdzie − t . Wykonaj wykres
41
Mirosław Majewski
200
100
100
42
Mathematica dla niecierpliwych
10 5 5 10
10
43
Mirosław Majewski
Ćwiczenia
1. Wykreśl funkcje r 2 sin i r 2 cos dla 0 ≤ ≤ 2 w układzie
współrzędnych biegunowych. Czy umiesz udowodnić, że obie krzywe
przedstawiają okrąg?
2. Rozpatrzmy rodzinę krzywych zadanych we współrzędnych biegunowych
r sin n, gdzie n 3. . 10 oraz 0 ≤ ≤ 2. Ich kształt często określa się jako
róże n‐płatkowe. Wykonaj wykres kilku krzywych z tej rodziny i sprawdź czy
zawsze ta nazwa jest odpowiednia.
3. Spiralę Archimedesa opisujemy równaniem r 3 for 0 ≤ ≤ 6. Wykonaj
wykres spirali Archimedesa.
4. Równanie r A B cos nC D sin p, gdzie A, B, C i D są liczbami
naturalnymi,opisuje rodzinę krzywych. Wykonaj wykresy kilku krzywych z tej
rodziny.
44
Mathematica dla niecierpliwych
2
2 1 0 1 2
45
Mirosław Majewski
Ćwiczenia
1. Zastosuj ContourPlot w celu otrzymania wykresów krzywych zadanych
równaniami,
a. x cos x y cos y 0
b. x sin x y cos y 0
c. x cos x y sin y 0
d. x cos y y cos x 0
e. x cos y y sin x 0
46
3
Grafika 3D w programie Mathematica
Po zapoznaniu się z grafiką na płaszczyźnie, możemy przejść do omawiania grafiki w
3D. Wiele z poznanych dotychczas koncepcji będziemy mogli wykorzystać bez
większych zmian. Pewne z nich będą wymagały nowego podejścia i modyfikacji.
Wreszcie dojdzie parę nowych procedur i parametrów specyficznych dla wykresów w
3D. Na początek zaczniemy od wykresów funkcji dwu zmiennych i przeanalizowania
specyficznych dla nich parametrów.
48
Mathematica dla niecierpliwych
ColorData["PlumColors"]
ColorDataFunction[{0, 1}, ]
49
Miroslaw Majewski
Teraz kiedy już znamy podstawy wykresów w 3D, możemy zająć się wybranymi
rodzajami obiektów i ich wykresami, ale zanim to nastąpi warto wykonać trochę
samodzielnych wykresów.
50
Mathematica dla niecierpliwych
Ćwiczenia
Wykonaj wykresy wymienionych tu funkcji dwu zmiennych.
1. fx, y sin x cos y
2. fx, y sinx 3 − y 3
3. fx, y cos 7y 2 sin 3x 2
xyx 2 − y 2
4. fx, y
x2 y2
5. z 4 − x 2 − y 2
6. z x 2 y 2 − 3x 4y 2
7. z 2x 2 10x 3y 3 − 6y 2 1
8. z 1
1 cos x sin y
2 2
9. z x 2 − y 2 e −x −y
2 2
10. z e 2x−4y−x −y
2 2
11. z xye −x y
12. z xyx 2 − y 2
xyx 2 − y 2
13. z
x2 y2
51
Miroslaw Majewski
Ćwiczenia
1. Wykreśl krzywe przestrzenne zadane równaniami,
a. x, y, z 3 sin t, t, 3 cos t, gdzie t −3. . 4
b. x, y, z 4 cos t, 4 sin t, sin t cos t, gdzie t 0. . 2
c. Potrójny węzeł: x, y, z 2 cos 32 t cos t, 2 cos 3
2
t sin t, sin 3
2
t
d. x, y, z t, sin 5t, cos 5t
53
Miroslaw Majewski
54
Mathematica dla niecierpliwych
Skoro już wiemy jak wykreślać równania uwikłane, to możemy teraz zająć się czymś
trudniejszym.
Oto przykład pokazujący w jaki sposób możemy wykonać wykres powierzchni
Steinera, zwanej również powierzchnią rzymską. W naszym przykładzie używamy
uproszczonego równania uwikłanego powierzchni Steinera
y z z x x y 2xyz 0. Otrzymanie wykresu trwa dłużej niż zwykle ze względu
2 2 2 2 2 2
55
Miroslaw Majewski
57
Miroslaw Majewski
58
Mathematica dla niecierpliwych
Ćwiczenia
Wykonaj wykresy równań uwikłanych i nierówności:
1. x sin x y sin y z sin z 0
2. x sin x y sin y z sin z ≤ 0
3. x cos y y cos z z cos x 0
4. x cos y y cos z z cos x ≤ 0
5. x y z cos x 0
6. x y z cos x ≥ 0
59
Miroslaw Majewski
PlotRange ‐ 1.2,
Mesh ‐ 0,
PlotPoints ‐ 50,
PlotStyle ‐ {White, Specularity[White, 70]},
Lighting ‐ {
{"Directional",
RGBColor[1,0.7,0.1],
{{5,‐5, 5},{5,5,0}}}
}
]
Ćwiczenia
Wykonaj wykresy podanych równań we współrzędnych sferycznych.
1. r 1. 2 sin A, gdzie A 1, 2, 3, . . . 7, −1. . 2, oraz 0. . .
2. r , gdzie −0. . 2 oraz 0. . .
3. r sin 2, gdzie 0. . oraz 0. . 2.
4. r cos 2 2 sin 2 2 , gdzie 0. . 2 oraz 0. .
5. r cos 2 2 sin 2 2 , gdzie 0. . 2 oraz 0. .
6. r 1. 3 tan , gdzie −1. . 5 oraz − 4 . .
4
7. r 1. 2 sin 2 , gdzie −1. . 2, oraz 0. .
8. r 1. 2 sin 3 , gdzie −1. . 2, oraz 0. .
9. r sin2 3, gdzie 0. . 2, 0. .
60
Mathematica dla niecierpliwych
oraz
RevolutionPlot3D[Sin[t], {t, ‐2 Pi, 2 Pi}, RevolutionAxis ‐ "Z"]
61
Miroslaw Majewski
Wreszcie zauważmy, że możemy obracać względem innej osi, a raczej wektora, tak jak
poniżej,
RevolutionPlot3D[Sin[t],{t,‐2 Pi,2 Pi},RevolutionAxis ‐ {1,0,1}]
62
Mathematica dla niecierpliwych
Ćwiczenia
Wykonaj wykresy brył powstających przez obracanie wykresów funkcji wokół osi OX,
OY oraz 1, 0, 1,
1. z 1 cos26x
1x
2. z sin 3x cos 5x
3. z sin x2
1−x
2
4. z 2x − x
1
sin x 1
63
Miroslaw Majewski
deklaracji,
goraDolina[x_, y_] : 15*x*Exp[‐(x^2 y^2)];
f ColorData["DarkRainbow"];
gd Plot3D[goraDolina[x, y], {x, ‐2, 2}, {y, ‐2, 2},
PlotRange ‐ 6.5,
AspectRatio ‐ 2/3,
ColorFunction ‐ f
]
2 1 0 1 2
Graphics[
{
Inset[gd, {1, 1}, Center, {3, 2.2}],
Inset[cgd, {0, 0}, Center, {1.5, 1.5}]
},
64
Mathematica dla niecierpliwych
Background ‐ LightBlue
]
Zwróćmy uwagę na to, że tu rola parametru Mesh jest zupełnie inna niż rola
parametru Contours w przypadku procedury ContourPlot.
65
Miroslaw Majewski
Ćwiczenia
Wykonaj wykresy wymienionych tu funkcji dwu zmiennych, tym razem używając
procedur ContourPlot oraz DensityPlot.
1. fx, y sin x cos y
2. fx, y sinx 3 − y 3
3. fx, y cos 7y 2 sin 3x 2
xyx 2 − y 2
4. fx, y
x2 y2
5. z 4 − x 2 − y 2
6. z x 2 y 2 − 3x 4y 2
7. z 2x 2 10x 3y 3 − 6y 2 1
8. z 1
1 cos x sin y
2 2
9. z x 2 − y 2 e −x −y
2 2
10. z e 2x−4y−x −y
2 2
11. z xye −x y
12. z xyx 2 − y 2
xyx 2 − y 2
13. z
x2 y2
66
4
Animacja i manipulacja
Możliwość animacji obiektów matematycznych znacznie rozszerza nasze możliwości
poznawcze. Pozwala ona nie tylko obserwować zmiany obiektów zależne od
występujących w nich parametrach, ale również symulować eksperymenty
zmieniające się w miarę upływu czasu. W tym rozdziale przyjrzymy się metodom
animacji i manipulacji obiektów matematycznych w programie Mathematica.
Otrzymany wynik jest tym razem czymś w rodzaju okna dialogowego, tak
popularnego w wielu programach komputerowych. Mamy tu suwak, którym możemy
zmieniać wartości n aby otrzymać odpowiednie wartości e n . Zanim przejdziemy do
dalszych przykładów zastanówmy się przez chwilę nad strukturą polecenia
Manipulate oraz nad tym co otrzymaliśmy.
Jak łatwo można zauważyć składnia polecenia Manipulate jest następująca,
Manipulate[
{obiekt1,obiekt2,..,obiektN}(*obiekty do_manipulacji*)
parametry do manipulacji
]
Mirosław Majewski
W poleceniu tym możemy użyć jednego obiektu, lub wielu związanych nawiasem
klamrowym. Obiekty te mogą być dosłownie wszystkim – funkcjami, ciągami,
wykresami, itp. W drugiej części polecenia mamy parametry, które mogą być
manipulowane. Każdy z tych parametrów musi być zadeklarowany osobno. w
deklaracji podajemy nazwę parametru, jego początkową wartość, końcową wartość,
oraz parę innych rzeczy, które są opcjonalne. W naszym przykładzie liczba 1 oznacza
skok parametru. Mówimy bowiem o wyrazach ciągu, w związku z czym zakładamy, że
argumenty wyrażenia definiującego ciąg są liczbami naturalnymi. Jeśli opuścimy skok
parametru to otrzymamy parametr ciągły.
Teraz zajmijmy się panelem manipulacji. Tu mamy suwak z nazwą zmiennej
natomiast poniżej okienko z wartościami wyrazów ciągu. Panel manipulacji możemy
uczynić bardziej użytecznym wciskając mały znak "" znajdujący się z prawej strony
suwaka. Otrzymamy wówczas panel, w którym mamy okienko z aktualną wartością
parametru n, i dodatkowe guziki (krok do tyłu, uruchom animację, krok do przodu,
szybciej, wolniej, kierunek animacji).
Omówiony tu przykład jest bardzo prosty, ale pokazuje istotę działania procedury
Manipulate. W bardzo podobny sposób możemy konstruować wiele pomocy
dydaktycznych ilustrujących własności obiektów matematycznych.
Jednym z częstych pytań w dydaktyce szkolnej jest pytanie jak zmienia się funkcja w
zależności od występujących w niej parametrów. Oto jeden z takich przykładów.
Załóżmy, że mamy funkcję fx sin ax cos bx. Jak będzie się zmieniał wykres funkcji
w zależności od wartości parametrów a and b? Odpowiedź na to pytanie da nam
prosta konstrukcja,
Manipulate[
Plot[Sin[a x] Cos[b x], {x, ‐Pi, Pi}],
{a, 0, 10, 1},
{b, 0, 10, 1}
]
68
Mathematica dla niecierpliwych
69
Mirosław Majewski
Ćwiczenia
1. Jednym z ciekawszych przykładów funkcji w układzie biegunowym są tzw. róże
(rodonea curve), r sin kt, gdzie parametr k może przyjmować dowolne
wartości całkowite. Użyj procedury Manipulate w celu wykonania panelu do
wizualizacji tych krzywych.
2. Inną ciekawą rodziną krzywych są krzywe Lissajous. Możemy je zdefiniować na
kilka sposobów. Jednym z nich są równania parametryczne x A sinat d,
y B sin bt. Użyj procedury Manipulate w celu wykonania panelu do
71
Mirosław Majewski
72
Mathematica dla niecierpliwych
],
Background ‐ RGBColor[1 ‐ r, 1 ‐ g, 1 ‐ b],
PlotRange ‐ 15,
Axes ‐ True
],
{{A, 4}, {1, 2, 3, 4, 5}},
{{B, 2}, {1, 2, 3, 4, 5}},
{{r, 0.2, "Czerwony"}, 0, 1},
{{g, 0.1, "Zielony"}, 0, 1},
{{b, 0.1, "Niebieski"}, 0, 1}
]
73
Mirosław Majewski
Manipulate[
Show[
Graphics[{Orange, Disk[{0, 0}, 1.6 (A B)]}],
ParametricPlot[
{(A B)*Cos[t] B*Cos[(A B)/B*t],
(A B)*Sin[t] B*Sin[(A B)/B*t]},
{t, 0, 1.5 (A B) Pi},
PlotPoints ‐ 31,
PlotStyle ‐ RGBColor[r, g, b]
],
Background ‐ RGBColor[1 ‐ r, 1 ‐ g, 1 ‐ b],
Axes ‐ True,
ImageSize ‐ {300, 300}
],
{{A, 4}, {1, 2, 3, 4, 5, 6, 7, 8, 9}},
{{B, 2}, {1, 2, 3, 4, 5, 6, 7, 8, 9}},
{{r, 0.2, "Czerwony"}, 0, 1},
{{g, 0.1, "Zielony"}, 0, 1},
{{b, 0.1, "Niebieski"}, 0, 1}
]
Warto zauważyć, że wartości parametrów mogą być nie tylko liczbowe ale również
innego rodzaju. Możemy np. wykonać panel demonstrujący wykresy różnych funkcji.
Konstrukcja takiego panelu jest bardzo prosta. Oto jeden z możliwych przykładów.
74
Mathematica dla niecierpliwych
Manipulate[
Plot[f[x], {x, ‐3*Pi, 3*Pi},
AspectRatio ‐ 1/2,
ImageSize ‐ {400, 200}
],
{
{f, Sin, "Wykres funkcji"},
{Sin,Cos,Tan,Cot,Sec,Csc,Log,Exp,Sinh,Cosh,Tanh,Coth},
ControlType ‐ SetterBar
}
]
75
Mirosław Majewski
76
Mathematica dla niecierpliwych
{Sin[t], Cos[t]},
{Sin[A [[1]] t B[[1]]], Cos[A[[2]] t B[[2]]]}
},
{t, 0, 10 Pi, 0.1}
] (* koniec polecenia Table *)
]}, (* koniec polecenia Line *)
Background ‐ Tlo
], (* koniec polecenia Graphics *)
{{A, {0, 0}}, 0, 5, Slider2D}, (* suwak 2D dla A *)
{{B, {0, 0}}, 0, 10, Slider2D},(* suwak 2D dla B *)
{Tlo, Gray}, (* suwak koloru dla tla *)
{Wzor, LightGray}, (* suwak koloru dla odcinkow *)
(* wstawiamy suwaki z lewej strony *)
ControlPlacement ‐ Left
]
77
Mirosław Majewski
pisma, ich grubości czy koloru. Tak jak w wielu innych elementów Mathematica ma
bardzo rozbudowane możliwości w tym zakresie. I tym razem ograniczymy się
wyłącznie do najprostszych elementów.
Wróćmy zatem do ostatniego przykładu. Łatwo można zauważyć, że poszczególne
elementy kontrolne pojawiały się na panelu dokładnie w tej samej kolejności w jakiej
je deklarowaliśmy. Mieliśmy tam blok deklaracji,
{{A, {0, 0}}, 0, 5, Slider2D}, (* suwak 2D dla A *)
{{B, {0, 0}}, 0, 10, Slider2D}, (* suwak 2D dla B *)
{Tlo, Gray}, (* suwak koloru dla tla *)
{Wzor, LightGray}, (* suwak koloru dla odcinkow *)
(* wstawiamy suwaki z lewej strony *)
ControlPlacement ‐ Left
Zacznijmy teraz uzupełniać te deklaracje o nowe elementy. Na początek tytuł panelu.
Do wstawienia tytułu wystarczy dodać na początku powyższego bloku polecenie
Style["Pajeczyny", FontFamily ‐ "Verdana", 28, Orange, Bold],
Mamy tu kompleksową deklarację tytułu oraz stylu w jakim zostanie on wypisany na
ekranie. Będzie więc to tytuł "Pajęczyny", wypisany krojem pisma Verdana, wielkości
28pt, koloru pomarańczowego, z literami pogrubionymi.
Bezpośrednio po linii z deklaracją tytułu wstawmy słowo Delimiter. Będzie to linia
pozioma oddzielająca tytuł od elementów występujących poniżej.
Teraz możemy dodać w identyczny sposób tytuły dwu sekcji panelu. Będą to
Style["Parametry", 18, Bold, Orange],
oraz
Style["Kolory", 18, Bold, Orange],
z odpowiednimi liniami oddzielającymi sekcję parametrów od sekcji koloru.
Tak może wyglądać uzupełniony kod poprzedniego przykładu z uzupełnieniami i
poprawkami.
Manipulate[
Graphics[{
Circle[{0, 0}, 1],
Wzor,
Line[
Table[
{
{Sin[t], Cos[t]},
{Sin[A[[1]]*t B[[1]]],Cos[A[[2]]*t B[[2]]]}
},
{t, 0, Zakres*Pi, 0.1}
]
]},
78
Mathematica dla niecierpliwych
Background ‐ Tlo
],
Style["Pajeczyny", FontFamily ‐"Verdana",28,Orange,Bold],
Delimiter,
Style["Parametry", 18, Bold, Orange],
{{A, {0, 0}}, 0, 5, Slider2D},
{{B, {0, 0}}, 0, 10, Slider2D},
{Zakres, 2, 15, 1},
Delimiter,
Style["Kolory", 18, Bold, Orange],
{Tlo, Gray},
{Wzor, LightGray},
ControlPlacement ‐ Left
]
79
Mirosław Majewski
80
Mathematica dla niecierpliwych
"Tangens" ‐ ftan,
"Cotangens" ‐ fcot
},
ImageSize ‐ {600, 400}
]
Ćwiczenia
1. Mathematica posiada zdefiniowaną liczną kolekcję wielościanów. Dla
przykładu wielościany Archimedesowe są tu zdefiniowane jako
"Cuboctahedron",
"GreatRhombicosidodecahedron",
"GreatRhombicuboctahedron",
"Icosidodecahedron",
"SmallRhombicosidodecahedron",
"SmallRhombicuboctahedron",
"SnubCube",
"SnubDodecahedron",
"TruncatedCube",
"TruncatedDodecahedron",
"TruncatedIcosahedron",
"TruncatedOctahedron",
"TruncatedTetrahedron".
Każdy z nich może być wykreślony za pomocą polecenia podobnego do tego
PolyhedronData["Octahedron"]. Wykonaj panel demonstrujący wybrane
wielościany Archimedesowe.
81
Mirosław Majewski
Literatura
[1] Core Language, Wolfram Mathematica© Tutorial Collection, 2008
[2] Visualization and Graphics, Wolfram Mathematica© Tutorial Collection, 2008
[3] Majewski M., MuPAD Pro Computing Essentials, Springer Verlag, 2002
[4] Majewski M., MuPAD dla niecierpliwych, Omega Art, 2006
[5] Torrence B., Torrence E., The Student’s Introduction to Mathematica©,
Cambridge University Press, 2009
82