mathematica

37
( Notatki, w opracowaniu M. Szurka do Seminarium „Modelowanie matematyczne”: wersja 25 października 2004) De computer is niet de steen, maar de slijpsteen der wijzen. Komputer nie jest kamieniem filozoficznym, ale osełką. (Hugo Battus, 1983) Mathematica Najbardziej podstawowe zasady posługiwania się programem Mathematica. Ewaluacja wyrażenia to Shift-Enter lub klinięcie na odpowiednią ikonę. Samo Enter to tylko przejście do następnego wiersza edycji. Kolejne polecenia oddzielamy średnikiem. Funkcje (= procedury) , które ma Mathematica zaczynamy wielką literą. Argumenty funkcji bierzemy zawsze w nawias kwadratowy, np. Abs[-3], Max[x,y], Log[a,x] Plot [Sin[x], {x, -2 Pi, 2 Pi}]. Zakres zmienności zmiennej oznaczamy tak: {i,1,10}. % = ostatnio otrzymany wynik, %% - wynik przedostatni, %n = Out[n] Wiele poleceń jest takich samych, jak w ogólnych Windowsach: Ctrl-C = kopiuj itd. Wczytanie pakietu : <<nazwa. Zapamiętanie własnego: >>nazwa. Mathematica ma na ogół wiele możliwości obliczenia tego samego. Czas obliczeń może się bardzo żnić w zależności od wyboru stosownej funkcji. Notatki te są pisane dla wersji 4.0 pakietu. Niektóre komendy innych wersji programu mogą być nieco inne. Ćwiczenie 0.1. Napisz 2*2, naciśnij Shift-Enter i zwróć uwagę, co się stało: Jeśli jest to pierwsze obliczenie „sesji”, to program wczytuje „kernel”, jądro programu, zbiór najważniejszych komend. Trwa to chwilę. Wyrażenie 2*2 dostało numer, In[1] , a wynik to Out[1] . Zwróć uwagę na to, że po In[1] mamy znak := a po Out[1] znak = . W dalszych obliczeniach można będzie przywoływać wynik Out[1] np. jako %1. Z prawej strony pojawiły się trzy klamerki, jedna obejmuje dane wejściowe, druga wyjściowe, trzecia obie razem. Mamy zatem do czynienia z trzema komórkami (cell). Kopiując komórkę do schowka (Clipboard) zaznaczamy odpowiadającą jej klamerkę i stosujemy zwykłą procedurę kopiowania. Możemy też zaznaczać, kopiować, usuwać i przenosić fragmenty tekstu z komórki. Najważniejsze operacje na komórkach (okno cell) to: formatowanie (wybór kroju pisma itp.), aktywacja (komórka gotowa do przetwarzania musi być oczywiście aktywna), inicjalizacja (zaznacza komórki do przetwarzania). Demo 1. Rozwiąż równanie x 2 – 5x + 6: Solve[x^2-5x+6==0, x] Zwróć uwagę na podwójny znak równości i na „listową” strukturę podanego rozwiązania. Spróbuj zrozumieć instrukcję: w = Flatten[Solve [x^2 - 5x + 6 ==0, x]]; {w[[1,2]], w[[2,2]]} Demo 2 . Zobacz, ile czasu zajmie Mathematica obliczenie 10000 cyfr rozwinięcia π: Timing[N[Pi, 10000]] Demo 3. Symulacja gry w orła i reszkę: 1000 rzutów; ile razy orzeł, ile reszka? lista:={}; Do[AppendTo[lista, Random[Integer,1]], {1000}]; Print["Wypadło ", Count[lista,0], " orłów, a reszek ", Count[lista,1], "."] Uwaga: mogą być kłopoty z polskimi literami i z cudzysłowami. Demo 4. Animacja. Wczytaj pakiet „animacja”: <<Graphics`Animation` Wykonaj: Animate[ Plot[ Sin[ x/k - k], {x, 0, 6 Pi}, Ticks -> False], {k, 1, 3, 0.1}] Zobaczysz ciąg rysunków. Kliknij dwukrotnie na jeden z nich.

Upload: vendelin90

Post on 23-Nov-2015

21 views

Category:

Documents


5 download

TRANSCRIPT

  • ( Notatki, w opracowaniu M. Szurka do Seminarium Modelowanie matematyczne: wersja 25 padziernika 2004) De computer is niet de steen, maar de slijpsteen der wijzen. Komputer nie jest kamieniem filozoficznym, ale osek.

    (Hugo Battus, 1983)

    Mathematica Najbardziej podstawowe zasady posugiwania si programem Mathematica.

    Ewaluacja wyraenia to Shift-Enter lub klinicie na odpowiedni ikon. Samo Enter to tylko przejcie do nastpnego wiersza edycji. Kolejne polecenia oddzielamy rednikiem. Funkcje (= procedury) , ktre ma Mathematica zaczynamy wielk liter. Argumenty funkcji bierzemy zawsze w nawias kwadratowy, np. Abs[-3], Max[x,y], Log[a,x] Plot [Sin[x], {x, -2 Pi, 2 Pi}]. Zakres zmiennoci zmiennej oznaczamy tak: {i,1,10}. % = ostatnio otrzymany wynik, %% - wynik przedostatni, %n = Out[n] Wiele polece jest takich samych, jak w oglnych Windowsach: Ctrl-C = kopiuj itd. Wczytanie pakietu : nazwa. Mathematica ma na og wiele moliwoci obliczenia tego samego. Czas oblicze moe si bardzo rni w zalenoci od wyboru stosownej funkcji. Notatki te s pisane dla wersji 4.0 pakietu. Niektre komendy innych wersji programu mog by nieco inne. wiczenie 0.1. Napisz 2*2, nacinij Shift-Enter i zwr uwag, co si stao: Jeli jest to pierwsze obliczenie sesji, to program wczytuje kernel, jdro programu, zbir najwaniejszych komend. Trwa to chwil. Wyraenie 2*2 dostao numer, In[1] , a wynik to Out[1] . Zwr uwag na to, e po In[1] mamy znak := a po Out[1] znak = . W dalszych obliczeniach mona bdzie przywoywa wynik Out[1] np. jako %1. Z prawej strony pojawiy si trzy klamerki, jedna obejmuje dane wejciowe, druga wyjciowe, trzecia obie razem. Mamy zatem do czynienia z trzema komrkami (cell). Kopiujc komrk do schowka (Clipboard) zaznaczamy odpowiadajc jej klamerk i stosujemy zwyk procedur kopiowania. Moemy te zaznacza, kopiowa, usuwa i przenosi fragmenty tekstu z komrki. Najwaniejsze operacje na komrkach (okno cell) to: formatowanie (wybr kroju pisma itp.), aktywacja (komrka gotowa do przetwarzania musi by oczywicie aktywna), inicjalizacja (zaznacza komrki do przetwarzania). Demo 1. Rozwi rwnanie x2 5x + 6:

    Solve[x^2-5x+6==0, x] Zwr uwag na podwjny znak rwnoci i na listow struktur podanego rozwizania. Sprbuj zrozumie instrukcj: w = Flatten[Solve [x^2 - 5x + 6 ==0, x]]; {w[[1,2]], w[[2,2]]} Demo 2. Zobacz, ile czasu zajmie Mathematica obliczenie 10000 cyfr rozwinicia :

    Timing[N[Pi, 10000]] Demo 3. Symulacja gry w ora i reszk: 1000 rzutw; ile razy orze, ile reszka? lista:={}; Do[AppendTo[lista, Random[Integer,1]], {1000}]; Print["Wypado ", Count[lista,0], " orw, a reszek ", Count[lista,1], "."]

    Uwaga: mog by kopoty z polskimi literami i z cudzysowami. Demo 4. Animacja. Wczytaj pakiet animacja:

  • CCIIGGAAWWKKAA ZZ NNAAJJWWAANNIIEEJJSSZZYYMMII WWIIAADDOOMMOOCCIIAAMMII Stae

    = Infinity, = Pi, E = e , Deg = /180

    Relacje x == y lub Equal[x,y] x != y lub Unequal[x,y] x === y lub SameQ[x,y] (identyczne) x == y == z wszystkie rwne . Pojedynczy znak rwnoci to przypisanie, przy waru-nku (w szczeglnoci w rwnaniu! ) musi by == .

    Przypisanie x = a albo Set[x,a] nadanie wartoci symbolowi x . x += a albo AddTo[x,a] to nadanie x-owi wartoci x+a . (podobnie dla mnoenia, odejmowania i dzielenia). x++ albo Increment[x] to dodanie jedynki do x. x-- albo Decrement[x] to odjcie jedynki od x. ++x albo PreIncrement[x] to dodanie jedynki do x z tym, e najpierw dodaje si jedynka a potem wykonuje stosowna instrukcja. Podobnie - - x (PreDecrement[x]). wiczenie: Zobacz rnic midzy x = 1; y = x++; y = y^2; Print [y] x = 1; y = ++x; y = y^2; Print [y] Rnica midzy przypisaniem = a := polega na tym, e pierwsze wykonuje si od razu, a drugie jest odoon ewaluacj. Zobacz to na przykadzie: a = 1 , potem b := 2.

    Operatory logiczne Not[p] And [p,q] lub p && q p || q lub Or[p,q] Implies [p,q] Xor [p,q]

    Podstawienie In [1] := v = x^3+x+1 Out [1] = 1 + x + x^3 In[2] := v/.x->2 Out[2] :=11 Takie podstawienie nie zmienia wartoci wyraenia!

    Instrukcje warunkowe:

    If [warunek, pierwsze, drugie] wybiera pierwsze albo drugie w zalenoci od tego, czy warunek jest speniony, czy nie. If [warunek, pierwsze, drugie, niewiadomo] jak wyej, ale ponadto wybiera niewiadomo , jeli warunek nie jest okrelony. Instrukcja For : For [start, koniec, krok, tre]. Jak zwykle, mona opuci krok, jeeli jest rwny 1. Zobacz i zanalizuj rnic midzy For [k=2, k 2

    51+}} , a gdy chcemy wydosta warto

    251

    , to musimy j

    wydosta np. za pomoc %[[1]][[1]][[2]] czyli instrukcji wybierz drugi element listy bdcej pierwszym elementem listy pierwszego elementu przed chwil otrzymanej listy. Prociej byoby od razu wywoa

    Solve[x^2-x-1==0,x][[1,1,2]] 2

  • 3

    Dwa razy dwa

    Wolno to moli-wo goszenia, e dwa razy dwa rwna si cztery. Wszystko inne z tego wynika. George Orwell, 1984 .

    (...) Maszyna wci pracowaa, jakby przychodzio jej rozstrzyga najtrudniejszy problem w caym Kosmosie; ziemia dygotaa, piasek usuwa si spod stp od wibracji, bezpieczniki strzelay jak korki z flaszek, a przekaniki a nadryway si z wysiku. Nareszcie, kiedy Trurla porzdnie ju zniesmaczy taki rwetes, maszyna zahamowaa gwatownie i rzeka gromowym gosem: SIEDEM! No, no, moja droga! rzek od niechcenia Trurl. Nic podobnego, jest

    cztery, bd tak dobra, popraw si! Ile jest dwa a dwa? SIEDEM! odpara maszyna niezwocznie.

    Stanisaw Lem, Maszyna Trurla. Zadanie 1.1. Poniej widzisz kilka metod obliczenia, ile jest rwne dwa razy dwa. Oblicz na kady z tych sposobw warto sumy 2+2. Metoda (co piszemy). Pamitaj o Shift-Enter!

    Uwagi

    2 2 lub 2*2 Strasznie toporna metoda, niegodna prawdziwego matematyka! Oglnie, x y to iloczyn xy , zapis xy bez spacji oznacza zmienn o nazwie xy.

    Times[2,2]

    x=2; TimesBy[x, 2]

    Uywamy raczej w programach.

    x=2; x*=2

    Wygodne przy programowaniu.

    F[x-] := 2 x ; F[2] F := Function[x, x*2]; F[2]

    lub n.p. Definiujemy funkcj, ktra mnoy argument przez 2. Wywoujc F[2], obliczamy szukamy iloczyn. Podkrelenie oznacza zmienn woln.

    Product [2, {i,1,2}]

    Oblicza iloczyn dwch dwjek.

    Apply [Times, {2,2}]

    lista = {2} ; Times[lista, 2]

    Tworzymy list obiektw, ktre potem mnoymy przez 2. Times jest operacj, ktra stosuje si do list, to znaczy do kadego obiektu listy.

    n=2; Do[n=Times[n,2],{k,2,2}];Print[n]

    Najprostsza ptla: k jest licznikiem w ptli, w ktrej pocztkowa warto mnoona jest przez dwa. Po wyjciu z ptli drukujemy wynik.

    f [m_,n_] := If[And [m==2,n==2], m*n, Print["Ojej, za trudne!]]

    Przykadowe uycie instrukcji warunko-wej. Podana procedura wykonuje tylko jedn operacj: mnoy dwa przez dwa.

    Fold [Times, 2, Range[1,2] ]

    Range[1,n] to lista liczb od 1 do n. Mnoymy dwukrotnie wszystko przez siebie.

    Zadanie 1.2. Znajd inne sposoby obliczenia iloczynu dwa razy dwa.

  • Mathematica jako kalkulator 2.1. N, SetAccuracy, SetPrecision. Obliczy liczb z dokadnoci do 100 cyfr dziesitnych. Obliczy iloczyn 1,3541764357612 i 4,45175425

    2.2. Sqrt. Obliczy 211 ++ z dokadnoci do 50 cyfr znaczcych. 2.3. Binomial[m,n] . Obliczy warto wspczynnika Newtona .

    50100

    2.4. Expand. Obliczy rozwinicie . 10)( yx +2.5. Sum. Znale wzr na .

    =

    n

    kk

    1

    10

    2.6. Ile trzeba wzi wyrazw szeregu odwrotnoci kwadratw liczb naturalnych, by obliczy

    6

    2 z dokadnoci do dwch miejsc po przecinku? Ile czasu trwaj obliczenia? (Timing)

    2.7. Obliczy granic cigu 54

    732

    ++ n

    nn Limit[cig, wskanik -> Infinity]

    2.8. Obliczy pit pochodn funkcji okrelonej wzorem f(x) = 53

    2 ++

    xx i warto tej pochodnej

    dla x = 17/13 . Definiujemy pit pochodn funkcji f : g = D[(x+3)/(x^2+5), {x,5}] Wykonujemy podstawienie: g/.x -> 17/13 i odczytujemy wynik.

    2.9. Obliczy cak nieoznaczon 532 ++xx dx . Integrate[(x+3)/(x^2+5),x] 2.10. Wypisujc stosown cak, obliczy pole koa i pole elipsy o posiach dugoci a, b. 2.11. Rozwiza rwnanie kwadratowe x2 5x + 6 = 0 . Rozwiza ukad rwna liniowych 2x + 3y = 4 , 5x + 6y = 7 .

    Solve [{2x+3y==4,5x+6y==7}, {x,y}] Zwr uwag na podwjny znak rwnoci i na to, e ukad rwna bierzemy w nawiasy klamrowe. Oglniej, w nawiasy klamrowe bierzemy listy elementw.

    2.12. NSolve[...]. Znale przyblione pierwiastki rwnania x5-5x+2=0 z dokadnoci do 10 cyfr znaczcych. 2.13. Rozwin funkcj f(x) = sin x na szereg Maclaurina, do 11 miejsca:

    Series [Sin[x], {x,0,11}] 2.14. FactorInteger . Rozoy na czynniki liczb 1234567890987654321. 2.15. Factor. Rozoy na czynniki w piercieniu Z[x] wielomian 12 2 4 6 8 10

    1 + x + x + 2 x + x + x + x

    2.16 (matura 1880). 0,46666... sumy otrzymanej ze sprzeday weksla 36000 rs. z potrceniem 8 % za 9 miesicy przed terminem, uyto na kupno lasu prostoktnego o dugoci 768 sni, szerokoci 175 sni. Za reszt otrzymanych pienidzy kupiono dom; dochd z domu za trzy miesice stanowi tyle rubli, ile zapacono za dziesicin lasu. Obliczy, jaki procent przynosi kapita uyty na kupno domu.

    Wsk. Dziesicina = 2400 sni kwadratowych. 2.17. Zadanie Juliana Tuwima. Szeroko siedmiokopiejkowej marki rwna si

    4

  • 361

    181

    91

    61

    31

    3635

    1817

    98

    85

    32

    45374

    ++++++++

    jej dugoci, ktra wynosi 109 cala. Za jak sum trzeba kupi marek pocztowych, aby wylepi

    nimi cian pokoju, ktrej dugo rwna si 5 arszynom, szeroko 434 , a wysoko

    765

    arszyna? Wedug Tuwima (Cicer cum Caule czyli Groch z Kapust, II wyd. Czytelnik, Warszawa 1959), jest to autentyczne zadanie ze Sbornika arifmieticzeskich zadacz (1906) , ktrego autorem by Wereszczagin. Uwiadamiajc, e 3 arszyny to 48 cali, zachcam do rozwizania zadania1.

    2.18. Gdy 86 okci Polskich wyrwnywaj 97 okciom Litewskim, 54 Litewskich idzie na 59 Rossyjskich, 32 Rossyjskich na 33 Amsterdamskie, Amsterdamskich 31 na 24 Lipskie, Lipskich 15 na 13 Berliskich, Berliskich 7 na 6 Wiedeskie, okci Polskich 454 ile uczyni Wiedeskich? (P. Lhulier, Arytmetyka sposobem atwym do pojcia uoona..., Pary 1785, przek. polski nieznanego autora 1841).

    2.19. Podatki w Rurytanii. Stolic Rurytanii jest prastary Rurogrd, a walut rura (oznaczenie R, dzieli si na 100 centorw). Podatki w Rurytanii paci si wedug nastpujcej skali: Dochd roczny Podatek 1 Mniej ni 5 tysicy R Nie pacimy 2 Od 5 tysicy do 30 tysicy R Pacimy 20% rnicy midzy dochodem a kwot

    5 tysicy 3 Od 30 tysicy do 60 tysicy R Pacimy 5 tysicy plus 30% rnicy midzy

    dochodem a kwot 30 tysicy 4 Powyej 60 tysicy R Pacimy 14 tysicy plus 40% rnicy midzy

    dochodem a kwot 60 tysicy 2.19.1. Napisz funkcj podatek , wyliczajc naleny w Rurytanii podatek od dochodu d . Uyj Which. 2.19.2. Narysuj wykres funkcji obrazujcej wielko podatku w zalenoci od dochodu. Obierz skale na osiach tak, by wykres by czytelny.

    5

    1 Zamieszczam tu sformuowanie z cytowanej ksiki Cicer cum Caule, zawierajcej zbir ciekawostek, jakie kolekcjonowa Julian Tuwim. Zapewne i dla niego, jak i dla redaktora i korektora ksiki byo to za trudne zadanie, bo tak sformuowana tre nie ma sensu: ciana nie ma trzech wymiarw. Chodzi oczywicie o wymiary pokoju.

  • Odp. 2.19.3. Napisz funkcj, ktra podaje wielko dochodu, gdy znany jest podatek. 2.19.4. Napisz funkcj, wyliczajc wsplny podatek maonkw, gdy m ma dochd m, a ona z. Stwrz ulotk reklamow, zachcajc maonkw do wsplnego rozliczania si. 2.19.5. W Rurytanii mona sobie odlicza niektre wydatki od dochodu, a niektre od podatku. Napisz funkcj podatek[maz, zona, prog1, stopa 1, prog2, stopa2, prog3, stopa3, wydatki1, procent1, prog4, wydatki2, procent2, prog5], ktra wylicza wsplny podatek maonkw. Zmienne maj nastpujce znaczenie: maz, zona to dochody maonkw, prog1, prog2, prog3 to progi podatkowe, stopa1, stopa2, stopa3 to stopy procentowe dla tych progw, procent1 mwi, ile procent wartoci wydatkw wydatki1 mona odliczy od dochodu (ale odliczenia nie mog by wiksze ni prog4); procent2 mwi, ile procent wartoci wydatkw wydatki2 mona odliczy od podatku (ale odliczenia nie mog by wiksze ni prog5). 2.19.6. Bd Belk Rurytanii. Za, e w Rurytanii jest N mieszkacw paccych podatek, w tym N1 mczyzn (w tym Z onatych) i N2 kobiet (w tym Z zamnych). Struktura zarobkw jest nastpujca: m1 mczyzn zarabia mniej ni prog1 , m2 mczyzn midzy prog1 a prog2, m3 mczyzn powyej prog3. Dla kobiet odpowiednio k1 , k2 , k3 .

    a) pracuj z danymi N = 10000000, po rwno kobiet i mczyzn, Z = 4000000, b) nowy rzd Rurytanii znis moliwo wsplnego opodatkowania maonkw. Wylicz

    dochody budetu pastwa; c) wiadomo, e rzdzca Rurytani partia skompromitowaa si. Po wyborach przywrcona

    zostanie moliwo wsplnego opodatkowania si maonkw. Ile straci na tym budet? Jakie informacje potrzebne s jeszcze, by mc to wyliczy? Przyjmij je rozsdnie. Na szczcie to tylko symulacja komputerowa a Rurytania ley daleko od Polski.

    6

  • Wykresy krzywych

    3.1. Wykreli parabol y = x2 . 3.2. Wykreli na jednym rysunku sinusoid i tangensoid. Poniej podane s najwaniejsze opcje komendy Plot : oznaczenie osi (Mathematica nie rysuje strzaek na osiach), nazwa wykresu, liczba punktw, w ktrych s wyznaczane wartoci funkcji, oraz zakres rysunku (PlotRange ) to ostatnie wane jest przy rysowaniu krzywych uciekajcych do nieskoczonoci. Zobacz najpierw, co bdzie, jeli narysujesz tangensoid bez tego ograniczenia: Plot [ {Sin[x], Tan[x]}, {x,0,2Pi}]

    Trzeba zatem troch popracowa:

    Plot [ {Sin[x], Tan[x]}, {x,0,2 Pi}, AxesLabel -> {"->x", "y"}, PlotLabel -> "Oto sinusoida i tangensoida", PlotPoints -> 100, PlotRange -> {{0,2*Pi}, {-2,2}}]

    3.3. Zmieni skal: Show [%, AspectRatio -> 1] 3.4. Narysowa pk krzywych trzeciego stopnia y = x3 + ax2 - ax + 1.

    7

  • 3.5. Poka na rysunku, e cig funkcyjny 21)(

    nxnxxfn += jest jednostajnie zbieny.

    Rozwizanie. Zrb wykres tego cigu i przypomnij sobie, o co chodzi w pojciu jednostajnej zbienoci. Najpierw tworzymy tablic zoon z pierwszych 10 wyrazw cigu a nastpnie wykrelmy. Zwr uwag, e musimy zwolni tablic. ciag[x_] = Table [ n* x/(1+n x^2), {n,10}] Plot[Release[ciag[x]], {x,0,5}] 3.6. Poka na rysunku, e cig 21

    )(x

    nxgn += nie jest jednostajnie zbieny.

    Listy Listy bierzemy w nawiasy klamrowe, np. : lista = {1,4,7,8,9}. Mona uywa te Table i Array 4.1. Zobacz, co daj instrukcje: Table[ x^2, {x,5}], Table [x^2, {x,3,7}], Table[x^2, {x,17,170,5}] 4.2.Co daje f[k_]:=k^2; Array [f, 10] ?

    Uywajc Array zapisz macierz . Oblicz jej wyznacznik (Det).

    =

    543432321

    A

    4.3. Range[n] to lista {1,2,3,...n}. Co daj Range [10, 20], Range [17,85,5] ? Oblicz iloczyn wszystkich liczb podzielnych przez 17 zawartych w przedziale 170, 255. 4.4. IntegerDigits to lista cyfr danej liczby. Napisz funkcj f(k,n), ktra oblicza sum n-tych potg cyfr liczby k . Znajd wszystkie liczby rwne sumie szecianw swoich cyfr (wyka, e takie liczby nie mog by za due i u program przeszukujcy). Napisz funkcj, ktra zamienia cig cyfr na liczb.

    Length[lista] podaje dugo (liczb elementw) listy. Count[lista, element] liczy, ile razy dany element wystpuje w licie. Position[lista,element] podaje numery pozycji, na ktrych wystpuje dany element. MemberQ[lista, element] sprawdza, czy element jest na licie. FreeQ[lista, element] sprawdza, czy podany element nie wystpuje na licie. TableForm[lista] wypisuje list w formie tablicy. ColumnForm[lista] wypisuje list w formie macierzowej. Sort [lista] sortuje elementy listy. Union[lista] przetwarza list na zbir, to znaczy opuszcza powtrzenia a take sortuje. Reverse[lista] odwraca list. RotateLeft[lista], RotateLeft[lista, i], RotateRight[lista], RotateRight[lista, i] , Flatten [lista] opuszcza nawiasy, Flatten[lista, i] opuszcza nawiasy na i-tym poziomie. Map[instrukcja, lista], MapAt[instrukcja, lista], Apply[instrukcja, lista] Prepend[lista, element], PrependTo[lista, element] Append[lista, element], AppendTo[lista, element]

    8

  • Insert[lista, element, i] , Insert[lista, element, -i], Insert[lista, element, {{i}, {j}, ...}] Delete [lista, {i,j,k}], Drop[lista, i] Rest[lista,i], Take[lista, i], Take[lista, {i,j,k,...}], Part[lista,i], lista[[i]], First[lista], Last[lista].

    4.5. lista[[n]] to n-ty element listy, inaczej Part[lista,n] . Dla list zagniedonych (wielopitrowych) moemy pisa np. lista [[2,3,4]] zamiast lista [[2]][[3]][[4]]. Na przykad w macierzy A powyej A[[3,3]] = 5. 4.6. Napisz list wszystkich rnych czynnikw pierwszych liczby 802172880. Rozwizanie, np. lista := {}; Do[AppendTo[lista, FactorInteger[802172880] [[i,1]]],{i,5}] Napisz to prociej, uywajc Table lub Array. 4.7. Napisz funkcj, ktra podaje list rnych czynnikw danej liczby naturalnej n . Wsk. Patrz zadanie poprzednie. 4.8. Wr do zadania 2.18. Napisz funkcj przeliczajc jedne okcie na drugie. Wskazwka: ponumeruj okcie, np. Polski = 1, Litewski = 2, Rossyjski = 3, Amsterdamski = 4, Lipski = 5, Berliski = 7, Wiedeski = 8. Funkcja lokiec (m, n, k) ma oblicza, ile to jest k okci nr m w okciach nr n. Na przykad lokiec(2, 4, k) to . Utwrz list przeliczniki = {86, 97, 54, 59, 32, 33, 31, 24, 15, 13, 7, 6}. 4.9. W poprzednim zadaniu zamieniamy rne okcie na waluty: zoty, lit, rubel, gulden, marka berliska, marka lipska, szyling. ( nie szkodzi, e niektre ju nie istniej). Zakadamy, e podane przeliczniki opisuj kurs redni. Wprowadzamy kurs sprzeday i kurs kupna: o 10 procent wikszy i odpowiednio o 10 procent mniejszy od redniego. Napisa funkcje przeliczajce kad z walut na inn (po kursie kupna i po kursie sprzeday). Obliczy, ile groszy dostanie si za 1 zotwk, gdy kupi si za ni lity, za te kupi si ruble itd.

    4.11. Utwrz list liczb pierwszych mniejszych ni 1000, w zapisie ktrych nie wystpuje 0 ani 1 . 4.12. Utwrz list { {1000, 1}, {1001,2}, {1002, 3} , .... ,{2000, 1}}. Drugi element w kadej parze listy podaje, ile cyfr wystpuje w zapisie pierwszego. 4.13. Dowd Euklidesa na to, e liczb pierwszych jest nieskoczenie wiele, przebiega w skrcie jak nastpuje: zakadamy, e cig ten jest skoczony i bierzemy najwikszy dzielnik pierwszy iloczynu wszystkich liczb powikszonego o jedynk. Jest on now liczb pierwsz. Rozpatrzmy cig 2, 3, 7, 43, 139, ...., w nim kady wyraz oprcz pierwszego jest najwikszym dzielnikiem pierwszym iloczynu poprzednich liczb. Napisz procedur generujc dalsze wyrazy tego cigu. Oczywicie nie zajedziesz daleko, bo liczby bd rosy bardzo szybko. 4.14. Napisz program na sito Eratostenesa. 4.15. Stwrz list pierwszych (tj. pocztkowych) cyfr potg liczb 2n dla n = 1, ..., 10000. Zrb diagram supkowy czstoci. Wykorzystaj funkcj Histogram w pakiecie Graphics`Graphics` 4.16. Koza. U brzegu kolistego pastwiska uwizana jest koza. Jaka powinna by dugo sznurka, eby w zasigu zwierzcia bya dokadnie poowa pastwiska?

    Odcinka o szukanej dugoci nie da si skonstruowa za pomoc cyrkla i linijki i dugo ta nie wyraa si prosto przez funkcje elementarne. Pomocny bdzie wanie kalkulator. Przyjmijmy, e pastwisko jest koem o promieniu 1 o rodku w punkcie C , a palik, do ktrego uwizana jest koza, wbity jest w A. W oznaczeniach na rysunku poniej mamy:

    =+2

    9

  • Z trjkta rwnoramiennego ACD mamy 4

    sin22

    cos == x . Std:

    ==4

    sin214

    cos4

    sin42

    cos2

    sin2sin 2 Po przypomnieniu sobie, jak si oblicza pole wycinka koowego obliczamy, e pole grnego odcinka koowego S1 i pole dolnego S2 wyraaj si wzorami:

    )sin(2

    ,)sin(21 2

    21 == xSS Uwzgldniajc zalenoci =+

    2oraz

    4sin

    22cos == x obliczamy, e pole, ktre znajduje

    si w zasigu kozy jest rwne:

    S1 + S2 = ==+ )sin(2)sin(21 2

    2 xS + 21 sin (2) + 2cos2

    2 ( sin ) = =

    + cos sin , gdzie kt jest oczywicie wyraony w mierze ukowej. Pole to ma by rwne poowie pola caego koa. Mamy zatem do rozwizania rwnanie:

    sin cos 2 = 0 .

    Przyjmujc jako zerowe przyblienie rozwizania wielko 1,9 otrzymujemy (FindRoot) rozwizanie b = 1,90569575728999995867241.... Taka jest miara kta (w radianach). Wyliczamy std dugo koziego postronka:

    x = 2 cos 2 = 1,158728...

    Moemy te wykreli funkcj y = sin x x cos x 2

    10

  • Wykres funkcji y = sin x x cos x 2

    * * *

    4.17. Zrobi wykres funkcji g(x) = w zasigu kozy jest x pastwiska, gdzie 0 x 1.

    Geometria elementarna

    Rwnanie prostej przez dwa punkty p , q prosta [p_,q_] := Det [{{1,1,1}, {p[[1]], q[[1]], x}, {p[[2]], q[[2]], y}}] Rwnanie okrgu o danym rodku i promieniu: okrag [srodek_, promien_] := (x-srodek[[1]])^2+(y-srodek[[2]])^2-promien^2 Punkt wsplny dwch prostych o podanych rwnaniach: pp[l_,m_] := { Flatten [ Solve [ {l==0,m==0}, {x,y}]][[1,2]], Flatten [ Solve [ {l==0,m==0}, {x,y}]][[2,2]] } Punkty wsplne prostej i okrgu po [l_,o_] := {{ Flatten[Solve[{l==0,o==0},{x,y}]][[1,2]], Flatten[Solve[{l==0,o==0},{x,y}]][[2,2]] } , { Flatten [Solve[{l==0,o==0},{x,y}]][[3,2]], Flatten [Solve[{l==0,o==0},{x,y}]][[4,2]] } } Punkty wsplne dwch okrgw: oo [o1_,o2_] :=

    11

    {

  • 12

    { Solve [{o1==0,o2==0},{x,y}][[1,2,2]], Solve [{o1==0,o2==0},{x,y}][[1,1,2]] }, { Solve [{o1==0,o2==0},{x,y}][[2,2,2]], Solve [{o1==0,o2==0},{x,y}][[2,1,2]] } } 5.1. Napisa funkcj, ktra bada, czy dane rwnanie kwadratowe od dwch zmiennych x , y opisuje okrg i ktra znajduje promie i rodek tego okrgu. 5.2. Napisa funkcj sty (punkt, okrag) , ktra zwraca rwnania prostych stycznych do danego okrgu wyprowadzonych z danego punktu. 5.3. Napisa funkcj prostop (punkt, prosta), ktra zwraca rwnanie prostej prostopadej do danej prostej, porzechodzcej przez dany punkt. 5.4. Napisa funkcj rownol (punkt, prosta), ktra zwraca rwnanie prostej rwnolegej do danej prostej, porzechodzcej przez dany punkt. 5.5. Napisa funkcj srodk(a,b,c), ktra zwraca rwnanie rodkowej boku bc trjkta. 5.6. Napisa funkcj sym(a,b,c), ktra zwraca rwnanie symetralnej boku bc trjkta. 5.7. Napisa funkcj wys(a,b,c), ktra zwraca rwnanie wysokoci boku bc trjkta. 5.8. Napisa funkcj dwus(a,b,c), ktra zwraca rwnanie dwusiecznej boku bc trjkta.

    dwus [p_,q_,r_] := prosta[p,p+(q-p)/Sqrt[(q-p).(q-p)]+(r-p)/Sqrt[(r-p).(r-p)]]

    5.9. Napisa funkcj wspoll (p,q,r), ktra bada, czy trzy punkty le na jednej prostej. 5.10. Udowodni, e rodki bokw dowolnego czworokta tworz rwnolegobok. Wykorzysta komend srodek[p_,q_]:=(p+q)/2 . 5. 11. Udowodni, e rodkowe trjkta, symetralne, dwusieczne i wysokoci przecinaj si w jednym punkcie. 5.12. Napisa przedstawienie parametryczne prostej przechodzcej przez punkty p, q. prostapar[p_,q_):= p+t*(q-p) 5.13. Napisa trygonometryczne przedstawienie parametryczne okrgu: okragtryg [srodek_, promien_] := srodek+promien*{Cos[t], Sin[t]} 5.14. Napisa wymierne przedstawienie parametryczne okrgu: wymierne:

    okragwym [srodek_,promien_] := srodek + promien*[2*t/(1+t^2), (1-t^2)/(1+t^2)]

    5.15. Napisa komend odleglosc [punkt_, prosta_]obliczajc odlego punktu od prostej. Wykorzysta znany wzr: jeeli prosta dana jest rwnaniem ax+ by + c = 0, a punkt ma wsprzdne (x0, y0) , to 5.16. Dla podanych trzech punktw, np. A=(1,2), B=(4,5), C=(-3,-3) narysowa

    a) trjkt ABC , b) trjkt z wysokociami, c) trjkt z dwusiecznymi, d) trjkt z symetralnymi. 5.17. Dla podanych trzech punktw, np. A=(1,2), B=(4,5), C=(-3,-3) narysowa a) trjkt z okrgiem wpisanym, b) trjkt z okrgiem opisanym, c) trjkt z okrgami dopisanymi. 5.18. Wykaza, e z trzech rodkowych trjkta da si zbudowa trjkt. Wsk. Potraktowa rodkowe jako wektory. Z trzech wektorw da si zbudowa trjkt, gdy ich suma jest 0. 5.19. a) Udowodni, e w dowolnym trjkcie ABC nastpujce punkty le na jednej prostej: rodek okrgu opisanego, rodek cikoci i ortocentrum. Jest to prosta Eulera. b) Wykaza, e prosta Eulera jest rwnolega do boku AB trjkta wtedy i tylko wtedy gdy standardowych oznaczeniach wierzchokw i ktw trjkta tg tg = 3 . Wskazwka: mona zaoy (dlaczego?) , e A = (a, 0), B = (b,0), C = (1,1) . c) napisa komend euler[a_,b_,c_] wyznaczajc rwnanie prostej Eulera trjkta ABC. 5.20. Udowodni twierdzenie Pascala: w szeciokcie wpisanym w okrg punkty przecicia trzech par prostych zawierajcych przeciwlege boki le na jednej prostej. Napisa komend

  • 13

    pascal[a_,b_,c_,d_,e_,f_] wyznaczajc t prost. Wsk. Zaoy, e okrg ten jest okrgiem jednostkowym. Posuy si wymiernym przedstawieniem parametrycznym okrgu. 5.21. Napisa komend kolo[a_,b_,c_,d_] sprawdzajc, czy cztery dane punkty le na jednym okrgu. Wskazwka. Jest kilka sposobw zrealizowania tego. : a) wykorzysta twierdzenie Ptolemeusza: czworokt da si wpisa w koo wtedy i tylko wtedy, gdy suma iloczynw dugoci przeciwlegych bokw jest rwna iloczynowi dugoci przektnych;

    b) potraktowa punkty jako liczby zespolone. Mamy wtedy: a, b, c, d le na okrgu lub na prostej wtedy i tylko wtedy, gdy ich dwustosunek jest liczb rzeczywist. 5.22. Udowodni twierdzenie Simsona: Rzuty prostoktne punktu M okrgu opisanego na trjkcie ABC na jego boki lub ich przeduenia s wspliniowe. 5.23. W kadym trjkcie nastpujce dziewi punktw ley na okrgu: rodki bokw, rodki odcinkw czcych ortocentrum z wierzchokami i spodki wysokoci. rodek tego okrgu (zwanego okrgiem Feuerbacha) ley na prostej Eulera. Ten okrg jest styczny do okrgu wpisanego i do okrgw dopisanych. Udowodni te fakty i narysowa konfiguracj: trjkt, okrg wpisany, okrg Feuerbacha, trzy okrgi dopisane.

    5.24. Kady ze spodkw wysokoci trjkta rzutujemy prostopadle na przeciwlege boki lub ich przeduenia. Wykaza, e otrzymane sze punktw ley na okrgu. (jest to tzw. okrg Taylora). Znale jego rodek i promie. Napisa polecenie: taylor(a,b,c) wyznaczajc rwnanie okrgu Taylora danego trjkta ABC. 5.25. Udowodni, e proste czce punkty stycznoci okrgu wpisanego w trjkt z wierzchokami przecinaj si w jednym punkcie. Jest to tzw. punkt Gergonne'a. Napisa polecenie gergonne(a,b,c), wyznaczajce wsprzdne tego punktu dla podanego trjkta ABC.

    Ptle i iteracje Podstawowe sposoby wykonywania ptli i iteracji to: Do[tre, {licznik, start, stop, krok}] z wariantami, pozwalajcymi opuszcza krok , jeeli jest rwny 1 oraz start, te jeeli jest rwny 1. Zatem kada z nastpujcych komend spowoduje wywietlenie na ekranie kwadratw liczb nieparzystych mniejszych od 10: Do[Print[k^2], {k,1,9,2}] Do[Print[(2k+1)^2], {k,0,4}] Do[Print[(2k-1)^2], {k,5}] 6.1. Znale inne sposoby wypisania na ekranie potg kolejnych liczb naturalnych nieparzystych mniejszych od 10.

    Natomiast {n} w komendzie Do spowoduje, e ta sama tre wykona si n razy: Do[Print["To zdanie jest napisane cztery razy"], {4}] Tre wyraenia w komendzie Do moe by oczywicie dowolna. 6.2. Zrozumie, dlaczego podana komenda oblicza setn liczb Fibonacciego (gdzie cig Fibonacciego 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... numerujemy od zera): t = 1 ; Do[ t = 1/(1+ t), {k,2,100}]; Numerator[t] W nastpujcym przykadzie zamieniamy komend z wiczenia 6.2 w funkcj (=procedur). Wewntrz moduu Module definiujemy najpierw, ktre zmienne s lokalne u nas jest ni tylko t i podajemy potem tre procedury. Zgodnie z oglnymi reguami programu Mathematica tre Module bierzemy w nawiasy kwadratowe. fibo [n_]:= Module[{t}, t = 1 ; Do[ t = 1/(1+ t), {k,2,n}]; Numerator[t] ] Ten sam efekt moemy osign te przez: fibo := Function[n, Module [{t}, t = 1 ; Do[ t = 1/(1+ t), {k,2,n}]; Numerator[t]

  • ] ] albo uywajc Block zamiast Module fib := Function[ n, Block [{t}, t = 1 ; Do[ t = 1/(1+ t), {k,2,n}]; Numerator[t]]] Rnica midzy Module a Block polega na tym, e ta druga instrukcja widzi rwnie ewentualne powizania midzy zmiennymi lokalnymi, okrelonymi na zewntrz procedury. 6.3. Napisz program, ktry sprawdza, czy suma liczb Fibonacciego od pierwszej do n-tej jest rwna (n+2)-giej, zmniejszonej o 1, dla n = 1,..,100. Program ma napisa Zgadza si, gdy wszystko sprawdzi. Instrukcja While wykonuje si, dopki pewien warunek jest speniony. Skadnia: While [warunek, tre] Obliczenie i wywietlenie kwadratw kolejnych nieparzystych liczb naturalnych moemy za pomoc While osign tak: k=0; While [k
  • 15

    6.10. Za pomoc For wywietli kwadraty nieparzystych liczb naturalnych mniejszych od 10. Rozwizanie. Np. For [ k=1, k

  • 16

    6.25. Napisz procedur szukajc wszystkich czworaczych liczb pierwszych do 1000, tzn. czwrek liczb pierwszych mieszczcych si w jednej dziesitce. Dlaczego w poniszej procedurze opuszczono n+4 ? Do [If [And[PrimeQ[n], PrimeQ[n+2],PrimeQ[n+6], PrimeQ[n+8]] , Print [n, " ", n+2, " ", n+6, " ", n+8]], {n,10,1000}] 11 13 17 19 101 103 107 109 191 193 197 199 821 823 827 829 6.26. Oblicz, ile jest czworaczkw do 1000000. Najwiksza z takich czwrek to 983441, 983443, 983447, 983449. 6.27. Sprawd, e kwadrat liczby koczcej si na

    483053110592431027422387392256259918212890625 te koczy si na to samo. Stwrz algorytm i napisz program, ktry oblicza dusze kocwki o tej wasnoci. 6.28. Oto program na wyznaczanie daty Wielkanocy algorytmem Gaussa. Wykonaj ten program. Wykorzystaj to do nauczenia si funkcji Input, Quotient, Mod.. r = Input["Podaj rok:"]; a = Mod[r,19]; b = Quotient[r,100];c=Mod[r,100]; d = Quotient[b,4]; e = Mod[b,4]; f = Quotient[b+8,25]; g = Quotient[b-f+1,3]; h = Mod[19a+b-d-g+15,30]; j = Quotient[c,4]; k = Mod[c,4]; s = Mod[32+2e+2j-h-k,7]; u = Quotient[a+11h+22s,451]; x = Quotient[h+s-7u+114,31]; y = Mod[h+s-7u+114,31]; m = If[x == 3, marca, kwietnia]; Print["Niedziela Wielkanocna w roku ",r":",y+1," ",m];

    Grafika (wbudowane obiekty graficzne)

    Grafika w programie Mathematica jest bogata i opanowanie posugiwania si ni wymaga dugiego treningu.. Tu s podane najbardziej elementarne przykady. Obiekt graficzny powstaje przy pomocy Graphics[obiekt, opcje] a ogldamy go przez Show[... ]. Wbudowane obiekty graficzne to m.in. Point[{x,y}] punkt o podanych wsprzdnych. Circle[{x,y},r] - okrg o danym rodku i promieniu. Disk[{x,y},r] dysk (koo) . Line[{{x1,y1}, {x2,y2}, ..., {xn, yn}] amana o wierzchokach w danych punktach. Polygon [{x1,y1}, {x2,y2}, ..., {xn,yn}] wielokt . Rectangle[{xmin,ymin}, {xmax,ymax}] prostokt Text[tekst, {x,y}] umieszczenie tekstu w punkcie o podanych wsprzdnych. Opcje to przede wszystkim: AspectRatio stosunek dugoci obrazu do szerokoci. Defaultowe ustawienie to stosunek zotego podziau. Ustawienie AspectRatio -> Automatic da skal 1:1 na osiach.

  • Axes -> True, Axes -> False wywietla lub nie wywietla osi. AxesLabel, - oznaczenie osi, np. AxesLabel -> {x, y} , AxesOrigin, - pooenie pocztku ukadu, AxesStyle styl rysowania osi. Frame -> True, Frame -> False wywietla lub nie wywietla ramk rysunku. FrameLabel, FrameTicks GridLines, PlotLabel, PlotRegion, PlotRange, Prolog, Epilog, RotateLabel, Ticks. 7.1. Na przykadach Show[Graphics[Circle[{2,5},2]] oraz Show[Graphics[Circle[{2,5},2]], AspectRatio -> Automatic] domyl si, co robi AspectRatio. 7.2. Wykrel trjkt o wierzchokach (1,2), (2,3), (-1,5) umieszczajc go a) w ukadzie wsprzdnych, b) bez osi.

    7.3. Wykrel rysunek jak wyej. Rozwizanie. Najpierw podajemy wsprzdne punktw a, b, c, d, e, f, o , ktre musimy obliczy. Wierzchoki trjkta mona by oczywicie poda w postaci c := [Cos[Pi/2], Sin[Pi/2]], a := [Cos[Pi/2 + 2Pi/3, Sin[Pi/2+2Pi/3]], b := [Cos[Pi/2 + 4Pi/3, Sin[Pi/2+4Pi/3]]. Kaemy wyliczy rodki bokw. Nastpnie zaznaczamy grubiej wierzchoki trjkta, cieniej pozostae punkty (PointSize). Potem rysujemy rn gruboci odcinki. Wreszcie wpisujemy oznaczenia punktw, pgrub kursyw, dbajc o estetyczne pooenie tych oznacze. Powstaje obiekt graficzny trojkat, ktry moemy obejrze wywoujc go przez Show[trojkat],a lepiej przez Show[trojkat, AspectRatio -> Automatic]. Zwr uwag na nawiasy: Graphics, jako procedura wymaga nawiasw kwadratowych. Potem podajemy list polece, std duy nawias klamrowy (spjrz, gdzie jest zamknity). Kolejne opcje napisane na og w jednym wierszu, -- wymagaj te nawiasw klamrowych ,bo s listami, no a nawiasy wewntrz tych polece to ju takie, jakie s w nich wymagane. a := {-1,0}; b :={1,0}; c:= {0, Sqrt[3]}; o := {0, Sqrt[3]/3}; r := Sqrt[3]/3; d := (b+c)/2; e := (a+c)/2; f:=(a+b)/2; trojkat = Graphics [{ {PointSize[0.05], Point[a], Point[b], Point[c]}, {PointSize[0.04], Point[d], Point[e], Point[f]},

    17

    {PointSize[0.03], Point[o]},

  • {Thickness[0.007], Line [{a,b,c,a}]}, {Thickness[0.004], Circle[o,r]}, {Thickness[0.002], Line[{o,d}]}, {Thickness[0.002], Line[{o,e}]}, {Thickness[0.002], Line[{o,f}]}, {Text[FontForm ["A", {"BoldItalic",12}],a+{-0.1,-0.1}]}, {Text[FontForm ["B", {"BoldItalic", 12}],b+{0.1,-0.1}]}, {Text[FontForm ["C", {"BoldItalic", 12}],c+{0,0.15}]}, {Text[FontForm ["O", {"BoldItalic",11}],o+{-0.1,-0.1}]}, {Text[FontForm ["D", {"BoldItalic",10}],d+{0.07,0.07}]}, {Text[FontForm ["E",{"BoldItalic",10}],e+{-0.07,0.07}]}, {Text[FontForm ["F", {"BoldItalic", 10}],f+{0,-0.07}]} }] 7.4. Naladujc powyszy schemat, narysuj kwadrat z okrgiem wpisanym. Najpierw zrb rysunek bez adnych bajerw, a potem dopisuj oznaczenia, dobieraj gruboci linii itd. 7.5. Przepisz poniszy program, najpierw bez opcji z linii 4-9, potem dopisuj po jednej, wykonuj i patrz, jak zmieniaj si parametry rysunku. Show[Graphics[Line[ {{Cos[0], Sin[0]}, {Cos[2Pi/3], Sin[2Pi/3]}, {Cos[4Pi/3], Sin[4Pi/3]}, {Cos[0], Sin[0]}} ], AspectRatio -> Automatic,

    Axes -> True, AxesLabel -> {"x", "y"}, AxesStyle -> {{RGBColor[0,1,0]}, {RGBColor[0,1,0]}} , DefaultColor -> RGBColor [1,0,0], Ticks -> {{-0.5, 0.5, 1}, {-0.5, 0.5}} ]] 7.6. Wykonaj poniszy rysunek:

    7.7. Lepiej zorganizowany program na rysowanie piciokta foremnego wraz z przektnymi widzisz poniej. Przestudiuj ten program i narysuj kwadrat wraz z przektnymi. Wykrel przektne ciesz lini. Podajemy najpierw tablic bdc list wierzchokw piciokta, potem obwd i definiujemy piciokt jako obiekt graficzny, zoony z wykresw piciu odcinkw, potem okrelamy przektne. Zwr uwag na pewn niedogodno: tabel numeruje si od 1, a wierzchoki jeli chcemy mie aman zamknit, to dobrze jest posuy si funkcj Modulo.

    18wierzcholki := w :=

  • Table[{Cos [2Pi*(i-1)/5], Sin[2Pi*(i-1)/5]}, {i,0,4}] ; obwod := Table [Line[{w[[Mod[i,5]+1]], w[[Mod[i+1,5]+1]]} ], {i,0,5}] ; pieciokat := p := Graphics [obwod]; przekatne := d := Table [Line [{w[[Mod[i,5]+1]], w[[Mod[i+2,5]+1]]}], {i,0,5} ] ; gwiazdka := g := Graphics[przekatne]; Show[p,g, DefaultColor -> RGBColor[1,0,1], AspectRatio -> Automatic] 7.8. Narysuj trjkt rwnoboczny z okrgiem wpisanym i okrgiem opisanym. Show[ Graphics [ { Line [{ {1,0}, {Cos[2 Pi/3], Sin [2 Pi/3]}, {Cos [4 Pi /3], Sin [4 Pi /3] } , {1,0} }], Circle [ {0,0}, 1], Circle [{0,0}, 1/2] }, AspectRatio -> 1 ] ]

    7.9. Narysuj trapez z przektnymi, jak niej: g = Graphics [ { {Thickness[0.007],Line [ {{0,0},{2,1},{4,1}, {5,0},{0,0}}]}, {Thickness[0.005], Line [{{0,0},{4,1}}], Line [{{2,1},{5,0}}]}, {Thickness[0.005], Line [{{1.45,0.71}, {4.3,0.71}}]}, {PointSize [0.039],Point [{0,0}], Point [{2,1}], Point [{4,1}], Point[{5,0}]}, {PointSize [0.03], Point [{2.868,0.71}] }, {PointSize [0.03], Point [{1.45,0.71}],Point[{4.3,0.71}]}, {Text[ FontForm ["A",{"BoldItalic", 12}], {-0.20,0.05}]}, {Text [ FontForm ["B", {"BoldItalic",12}], {5.2,0.05}]}, {Text [FontForm ["F", {"Italic", 11}], {2.868,0.64}]}, {Text [FontForm ["C", {"BoldItalic", 12}], {4.2,1}]}, {Text [FontForm ["D", {"BoldItalic", 12}], {1.75,1}]}, {Text [FontForm ["E", {"Italic", 11}], {1.2,0.71}]}, {Text [FontForm ["G", {"Italic", 11}], {4.45,0.71}]}

    19

  • } ]

    7.10. Narysuj trjkt prostoktny (o bokach dugoci 3,4, 5) , z trzema kwadratami zbudowanymi na jego bokach. Oznacz wierzchoki trjkta przez A, B, C . Podpisz rysunek: Oto twierdzenie Pitagorasa. 7.11. Stwrz rysunek, ilustrujcy dowd twierdzenia Pitagorasa. Wskazwka: trjktem bazowym niech bdzie abc, gdzie a = {3, 0}, b = {0, 4}, c = {0, 0}. We kratkowany papier i zaznacz na nim podane niej punkty. Wykorzystaj potem funkcje Rectangle i Polygon.

    7.12. Narysuj rysunek ilustrujcy twierdzenie Feuerbacha o okrgu dziewiciu punktw: w kadym trjkcie nastpujce dziewi punktw ley na jednym okrgu: rodki bokw, spodki wysokoci i rodki odcinkw wysokoci od ortocentrum do wierzchokw. Okrg ten jest styczny do okrgu wpisanego w trjkt i do okrgw dopisanych. 7.13. Udowodnij, e kady trjkt da si podzieli na 3 deltoidy. Napisz funkcj, ktra dla podanego trjkta rysuje ten podzia (p. rysunek poniej). Wykorzystaj funkcje z rozdziau Geometria

    elementarna. 7.14. Narysuj piciokt foremny wraz z przektnymi i odpowiednim opisem. a = {Cos [17 Pi/10], Sin[17 Pi/10]}; b = {Cos [ Pi/10], Sin[Pi/10]}; d = {Cos [9 Pi/10], Sin[9 Pi/10]}; c = {Cos [Pi/2], Sin[Pi/2]}; e = {Cos [13 Pi/10], Sin[13 Pi/10]}; Show[ Graphics[ {

    {Thickness[0.004],Line[{a,b,c,d,e,a}]}, {Thickness[0.007], Line[{a,c,e,b,d,a}]}, {Text[FontForm["A",{"BoldItalic",11}], a-{-0.1,0.1}]},

    20

  • {Text[FontForm["B",{"BoldItalic",11}], b-{-0.1,0.1}]}, {Text[FontForm["C",{"BoldItalic",11}], c+{0,0.1}]}, {Text[FontForm["D",{"BoldItalic",11}], d-{0.1,0.1}]}, {Text[FontForm["E",{"BoldItalic",11}], e-{0.1,0.1}]}, {Text[FontForm["F",{"BoldItalic",11}], {0.45,-0.15}]}, {PointSize[0.04],

    Point[a],Point[b],Point[c],Point[d], Point[e]} }, AspectRatio -> Automatic ] ]

    Wykrelanie list 8.1. Jeeli podamy programowi Mathematica do wykrelenia zwyk list, np. lista = {1,4,5,7,4,0,4,5,2,7,3,4,8,8,7,6,7,5,2,3}}, to zostanie ona potraktowana jako wartoci funkcji w kolejnych punktach 1,2,3,... :

    ListPlot[lista, PlotStyle -> {PointSize[0.05]}] adniej wyglda oczywicie wykres w postaci amanej: ListPlot[lista, PlotJoined -> True,

    21Frame -> True, FrameLabel -> {"Miesiace", "Zysk w milionach"},

  • GridLines -> {{1,4,7,10,13,16,19,22}, {1,4,7,10}}, FrameTicks -> {{1,4,7,10,13,16,19,22}, {1,4,7,10}}, AspectRatio -> 1, PlotStyle -> {Thickness[0.03],RGBColor[0,0,1]}]

    8.2. Liczba semipierwsza to iloczyn dwch rnych liczb pierwszych. Wykreli wykres funkcji s(n) =

    liczba liczb semipierwszych mniejszych bd rwnych n. Stworzy najpierw list liczb semipierwszych < 10000, wykorzystujc FactorInteger.

    8.3. Firma Rysk i Zysk dziaa w Rurytanii. Inflacja w Rurytanii jest rwna p procent miesicznie, gdzie p jest rwne 0,1 w miesicach zimowych (grudzie-luty), 0,15 na wiosn, 0,05 latem i 0,02 jesieni. W styczniu 2000 roku akcje firmy Rysk i Zysk byy warte 100 rur (tamtejsza waluta) i od tej pory maj trend wzrostowy o 0,3 procenta miesicznie, plus skadnik 2 n mod 7 3 n mod 11 + n mod 4 + sin (n) , gdzie n jest numerem kolejnego miesica (nie miesica roku, tylko kolejnego). Zrobi wykres funkcji ceny akcji tej spki na tle inflacji w okresie stycze 2000 grudzie 2003. Odpowiednim podpisem (a take estetycznym wykresem) zachci do inwestowania w Rysk i Zysk.

    8.4. Zanika ju tzw. Autosystem (inna wersja: Auto-tak). Chcc otrzyma samochd, zostajemy czonkiem grupy (zwykle sto kilkadziesit osb), ktrej przydziela si samochd w drodze losowania, co miesic jednej osobie. S i inne moliwoci otrzymania samochodu, ktre na uytek tego zadania pominiemy. Ponisze dane liczbowe s prawdziwe . Przyjmijmy, e cena samochodu w dniu zawarcia umowy wynosi c = 40000 z. Opata wstpna (manipulacyjna) wynosi p = 2 % wartoci samochodu. Naleno za samochd zostaje rozoona na bardzo nisko oprocentowane raty, s = 2 % w skali rocznej. Kredyt spacamy w ratach miesicznych przez n = 60 miesicy. Do wielkoci raty doliczane jest p1 = 0,035 % wartoci samochodu tytuem ubezpieczenia kontraktu. W chwili wylosowania samochodu wnosimy dodatkow opat (akt asygnacyjny) w wysokoci rwnej p = 2% wartoci samochodu. Pozostae raty spacamy na dotychczasowych warunkach. Jest oczywiste, e jeeli mamy szczcie w losowaniu i wylosujemy samochd na samym pocztku okresu spacania, dostajemy bardzo korzystny kredyt: 2 procent rocznie. Z drugiej za strony, jeli wylosujemy samochd przy kocu okresu spacania, tracimy, bo przez kilka lat spacamy kredyt, nie majc samochodu. Moglibymy przez te lata wpaca pienidze do banku (uzyskujc odsetki, przyjmijmy stop procentow t = 12 % rocznie), a w momencie wylosowania samochodu wzi kredyt komercyjny (przyjmijmy, e oprocentowany na u = 20 % w skali rocznej) na spacanie pozostaej czci nalenoci za samochd. Operacja ta si opaca wtedy, gdy rata kredytu komercyjnego jest mniejsza od raty za samochd. Przy podanych wartociach c, p, n, s, p1, t, u wyliczy punkt rwnowagi od ktrego miesica ju tracimy na Autosystemie.

    22

  • Fraktale

    Kady wie, e linia brzegowa np. Batyku jest na mapie narysowana w pewnym

    przyblieniu: nie mona w skali 1:1000000 odda wszystkich drobnych zakrtw. To samo dotyczy jednak mapy w kadej skali. Nawet tej hipotetycznej mapy w skali 1:1. Matematycznie rzecz biorc, linia brzegowa waciwie nie istnieje: jest stale w ruchu, zaley od fal, przypyww a take od subtelnej rnicy midzy mokrym i suchym. Czy w ogle jest lini?

    Fraktale wprowadzi do matematyki w latach szedziesitych matematyk francuski (obecnie w USA) Benoit Mandelbrot, urodzony zreszt w Warszawie w roku 1924. Desenie fraktalne s dzi znanym matematycznym przedstawieniem chaosu.

    fractus = zamany (ac.)

    Narysujmy owkiem na kartce papieru zwyky trjkt rwnoboczny, podzielmy kady z jego bokw na trzy rwne czci. Teraz wytrzyjmy gumk rodkowe odcinki i zamiast nich wstamy dwa takie same, wystajce na zewntrz. Powstaa gwiazdka, zbudowana z 12 odcinkw rwnej dugoci, kady tworzy z nastpnym kt 60 lub 120 stopni . Iterujmy nasze postpowanie. To znaczy: rbmy dalej to samo. Kady z odcinkw dzielimy na trzy rwne czci, wycieramy rodkowy, a koce pozostaych czymy dwoma odcinkami tej samej dugoci, jak poprzednio, wystajcymi na zewntrz. I tak dalej, i tak dalej. Gwiazdki staj si podobne do patkw niegu. Liczba bokw ronie bardzo szybko: 48, 192, ... za kadym razem cztery razy wicej. Badajmy nasz nieynk. Czy moemy obliczy jej dugo? Przyjmijmy, e boki wyjciowego trjkta miay 1 jednostk dugoci. Za kadym razem, za kad iteracj dugo krzywej zwiksza si

    34

    = 131

    razy. Znaczy to, e caa krzywa musi mie nieskoczon dugo cho przecie mieci si na

    niewielkim rysunku. Jakie pole ogranicza? To pozostawiamy Czytelnikowi jako zadanie. Ma wyj: 58

    pola wyjciowego trjkta. Pole ograniczone przez nieynk jest sum nieskoczonego

    szeregu geometrycznego. Napisa ten szereg i obliczy jego sum.

    Figura bdca brzegiem nieynki nie ma wymiaru 1, nie ma te wymiaru 2. Jest wic czym porednim midzy krzyw i powierzchni. Przyjrzyjmy si nie caej zamknitej krzywej, ograniczajcej nieynk, a jej dowolnej czci, np. krzywej powstajcej z jednego boku trjkta przez kolejne dorysowywanie mniejszych trjkcikw. Mona j podzieli na cztery czci podobne do niej w skali 1:3.

    Jeli zdamy sobie teraz spraw z wasnoci wymiaru, opisanej w ramce poniej, to okae si, e nieynka bdzie miaa wymiar uamkowy!

    Zamy, e chcemy podzieli figur na pewn liczb czci podobnych do caej figury w skali 1:k . Odcinek moemy podzieli na k takich rwnych czci. Dwuwymiarowy kwadrat naley podzieli na k2 maych kwadracikw-oczek, eby skal podobiestwa byo 1:k, trjwymiarowy szecian na k3 , a czterowymiarow kostk, o ktrej opowiadam w jednym z nastpnych rozdziaw na k4. Moemy t wasno przyj za definicj wymiaru: Mwimy, e wymiarem figury jest n , jeeli mona j podzieli na takie kn czci, e kada z nich jest podobna do wyjciowej figury w skali 1:k.

    Dla takiej nieynki mamy bowiem k = 3 oraz kn = 4 . Skal jest 1:3, a zatem wymiarem musi by

    23

  • 3log4log=n 1,26

    Ce soir il neige. Il neige sur Liege

    Jacques Brel

    A wic to troch wicej ni krzywa, taka wier-powierzchnia, a dokadniej: po prostu f r ak t a l . Nie tylko z patriotycznych pobudek wspomnimy o jednym z pierwszych fraktali, rozpatrywanych w matematyce, zanim jeszcze pojawia si ich oglna teoria i nawet nazwa. To synny dywan Sierpiskiego. Peny kwadrat dzielimy najpierw na 9 czci, i usuwamy rodkowe oczko. Potem to samo robimy z kadym z pozostaych 8 kwadratw: dzielimy go rwno na 9 czci i wyrzucamy rodkowy kwadracik. I tak dalej, i tak dalej. Co dostajemy w granicy? Wanie dywan Sierpiskiego, zwany tak od nazwiska jednego z najsynniejszych matematykw polskich, Wacawa Sierpiskiego, profesora Uniwersytetu Warszawskiego przez 59 lat (1910 1969; swoisty rekord Guinnessa). Dywan

    Sierpiskiego ma wymiar n = 3log8log

    = 1,892789... i jeszcze nie jest powierzchni (ktra ma wymiar 2),

    ale ju mu niewiele do niej brakuje. Mona wykaza, e w dywanie Sierpiskiego s topologicznie zawarte wszystkie krzywe! Wspomnijmy tylko, e w przestrzeni trjwymiarowej mamy podobnie

    zbudowan gbk Sierpiskiego 2 o wymiarze 3log

    26log2,9656..., w czterowymiarowej o wymiarze

    3log

    80log 3.9887, a dziesiciowymiarowej

    3log59048log

    9,99998...

    A wic fraktal mona podzieli na czci o takiej wasnoci, e kada z nich stanowi pomniejszon kopi caoci. Natomiast w multifraktalach czci te nie musz by dokadnymi kopiami caoci, lecz oprcz skali mog si rni od oryginau o powinowactwo osiowe, czyli rozcignicie lub skrcenie wykresu w jednym tylko kierunku. Gdy oddajemy za ciasne buty do rozbicia, szewc wykonuje powinowactwo osiowe, wyduajc lub skracajc albo poszerzajc lub zwajc. Zobrazujemy teraz, jak powstaje fraktal nieynka. Najpierw musimy opisa wzorem procedur amania odcinka tak, by powsta z niego daszek. Jest to funkcja f, podana niej. Nastpnie tworzymy listy kolejnych wierzchokw nieynki, zaczynajc od trjkta rwnobocznego abc. W kadej iteracji jest cztery razy wicej wierzchokw ni w poprzedniej. prostop[p_,q_] := {-(p-q)[[2]],(p-q)[[1]]}; f[p_,q_] := {p, p+(q-p)/3, (p+q)/2 + Sqrt[3]/6* prostop[p,q],p+2*(q-p)/3}; a := 9*{Cos[-Pi/6], Sin[-Pi/6]}; b := 9*{Cos[Pi/2], Sin[Pi/2]}; c := 9*{Cos[7*Pi/6], Sin[7*Pi/6]}; Show[Graphics[ {Thickness[0.01],Line[{a,b,c,a}]}, AspectRatio -> Automatic]]; pierwsza = Join [f[a,b],f[b,c],f[c,a]]; AppendTo[pierwsza,a]; Show[Graphics[ {Thickness[0.009],Line[pierwsza]},AspectRatio -> Automatic]];

    24

    2 Ten obiekt geometryczny nazywany jest czciej kostk Mengera, a posiadacze kalkulatorw Texas Instruments TI80 i nowszych z pewnoci zauwayli, e jednym z pierwszych programw opisanych w instrukcji obsugi jest konstrukcja dywanu Sierpiskiego.

  • 25

    druga = {}; Do [druga = Join[druga, f[pierwsza[[i]],pierwsza[[i+1]]]],{i,1,12}]; AppendTo[druga,a]; Show[Graphics[ {Thickness[0.008],Line[druga]},AspectRatio -> Automatic]]; trzecia = {}; Do [ trzecia = Join[trzecia, f[druga[[i]],druga[[i+1]]]],{i,1,48}]; AppendTo[trzecia,a]; Show[Graphics[

    {Thickness[0.007],Line[trzecia]},AspectRatio -> Automatic]]; czwarta = {}; Do [ czwarta = Join[czwarta, f[trzecia[[i]],trzecia[[i+1]]]],{i,1,192}]; AppendTo[czwarta,a]; Show[Graphics[

    {Thickness[0.006],Line[czwarta]},AspectRatio -> Automatic]]; 9.1. Narysowa dywan Sierpiskiego.

  • 26

  • 27

  • Grafika w trzech wymiarach

    10.1. Wykrel mniej wicej taki obrazek: Plot3D[1.2*2^(-x^2-y^2)+1.5^(-(x-2)^2-(y-2)^2)+Sin[x^2-y^2/2]/10, {x,-3,4},{y,-3,4},PlotPoints -> {50,50}, Boxed -> False, Axes -> False]

    10.2. Narysuj torus ParametricPlot3D [{(4+3Cos[u])Cos[t],(4+3Cos[u])Sin[t], 3Sin[u]}, {t,0,2Pi}, {u,0,Pi}, Boxed -> False, Axes -> False] 10.3. Wykrel paraboloid jednopowokow, dwupowokow, powierzchni siodow i stoek. 10.4. Narysuj jeszcze co adnego.

    Inne moliwoci graficzne

    Jak widzielimy, Mathematica potrafi: rysowa wykresy funkcji jednej i dwch zmiennych; Plot[f[x], {x,ximn,xmax}, opcje], Plot3D[f[x,y], {x,xmin, xmax}, {y,ymin,ymax}, opcje] , rysowa wykresy list (czyli funkcji zmiennej dyskretnej): ListPlot[..., PlotStyle -> ... ] oraz ma wbudowane podstawowe obiekty graficzne (odcinek, amana, okrg). Inne moliwoci graficzne to: Rysowanie zbiorw okrelonych przez rwnanie (p. Graphics`ImplicitPlot`), Animacja Przykad. Punkt porusza si po obwodzie kwadratu, najpierw jest czarny, potem czerwony, potem zielony, potem niebieski. ShowAnimation[ Table[ Graphics[ { Line[{{-1,-1},{-1,1}, {1,1} , {1,-1}, {-1,-1} }],

    28 {

  • 29

    PointSize[0.04], RGBColor[ If[-1

  • 30

    Point[ Which [ 0

  • Prawdopodobiestwo i los 11.1. W znanej piosence biesiadnej apeluje si do uczestnikw przyjcia, by wstali i wypili (oczywicie do dna) kolejno wszyscy urodzeni w kolejnych miesicach. Pozostali uczestnicy oczywicie towarzysz w piciu. Jakie jest prawdopodobiestwo, e wszyscy napij si 12 razy? Inaczej mwic: Jakie jest prawdopodobiestwo, e wrd n osb w kadym miesicu przypadaj czyje urodziny? Zakadamy, e wszystkie miesice s jednakowo prawdopodobne jako miesice urodzin. Ze wzoru na prawdopodobiestwo sumy zdarze mamy

    p(n) = n

    i

    i ii

    =+

    121212)1(1

    12

    1

    1

    Obliczmy wartoci tej funkcji za pomoc programu Mathematica, najpierw teoretycznie, a potem sprawdmy praktycznie: teoretyczna[n_Integer] := 1-N[Sum[(-1)^(i+1)*Binomial[12,i]*((12-i)/12)^n,{i,1,11}],5] Kolejnymi wartociami dla n = 12 do 30 s 0.00005372, 0.0003492, 0.001256, 0.00331, 0.007143, 0.01339, 0.0226, 0.03518, 0.05135, 0.07115, 0.09442, 0.1209, 0.1502, 0.1819, 0.2155, 0.2504, 0.2863, 0.3227, 0.3591, 0.3953, 0.4309, 0.4656, 0.4993, 0.5318, 0.563, 0.5928, 0.6211, 0.6479, 0.6732, 0.6971, 0.7195, 0.7404, 0.7601, 0.7784, 0.7954, 0.8113, 0.826, 0.8397, 0.8523 Korzystajc z tablicy liczb losowych (wykonujc 10000 losowa), moemy napisa dla kadego n : doswiadczalna[n_Integer] := Do [ licznik =0; Do [ ciag=Table[Random[Integer,{1,12}],{n}]; j=1; While[Not[FreeQ[ciag, j]], j++]; If [j==13, licznik=licznik+1], {10000} ]; Print[N[licznik/10000]] ] Zrobi wykres teoretycznej funkcji prawdopodobiestwa i danych dowiadczalnych. 11.2. Mieszanie si gazu (tzw. gra Ehrenfestw). W pocztkowej chwili w jednej czci szczelnego naczynia znajduje si N = 1000 czsteczek gazu, w drugiej 0. Oczywicie zaczynaj si one natychmiast miesza. Wykona symulacj komputerow tego procesu.

    Czsteczki gazu numerujemy od 1 do 1000. To, gdzie jest czsteczka, bdziemy oznacza przez 0 lub 1. Na pocztku mamy zatem list {1,1,1,....1} tysic razy. Nastpnie wybieramy losowo numer czsteczki i przesuwamy j drugiej powki naczynia, zmieniajc 0 na 1 lub odwrotnie. Wyniki notujemy co 10 losowa. Jest zrozumiae, e na pocztku strumie czsteczek bdzie pyn raczej w jedn stron, potem coraz wolniej, a wreszcie ustali si rwnowaga, zakcana tylko losowymi wahniciami.

    lista =Table[1, {1000}]; dane = {}; Do[ Do[ m = Random[Integer,{1,1000}]; lista[[m]]=1-lista[[m]], {10} ]; AppendTo[dane,Apply[Plus,lista] ] , {5000} ]

    31

    ListPlot[dane, PlotStyle -> {PointSize[0.01]}]

  • W sposobie zastosowanym powyej zrobilimy wykres punktowy (ListPlot) Mathematica zaznaczya kolejne stany zawartoci czci I naczynia. Inn organizacj wydruku otrzymamy czc punkty lini. W tym celu zbieramy dane w postaci {i, wynik} i kaemy programowi poczy punkty odcinkami linii prostych. Program poniszy obrazuje dane z 5000 losowa. Na wykresie wida, e pocztkowo liczba czsteczek w jednej z czci naczynia gwatownie maleje, ale do szybko ustala si rwnowaga. lista = Table[1, {1000}]; wykres = {}; Do[ Do[ m = Random[Integer,{1,1000}]; lista[[m]]=1-lista[[m]], {10} ]; AppendTo[wykres,{i,Apply[Plus,lista]} ] , {i,1,5000} ] Show[Graphics[Line [wykres]], Axes -> True, PlotRange -> {{0,5000},{0,1000}} ]

    11.3. Rzucamy monet n razy. Zrb wykres ilustrujcy rnic midzy liczb wyrzuconych reszek a liczb wyrzuconych orw dla n = 1 , ...., 1000. Sprawdzi zgodno wynikw z teori (prawo arkusa sinusa, prawo iterowanego logarytmu, p. ksika Fellera z rachunku prawdopodobiestwa). 11.4. Gra w belk. Wyobra sobie, e siedzisz naprzeciwko ministra finansw. Przed Wami lista liczb od 1 do pewnego n. S to sumy, ktre moesz sobie wypaci. Z kadej wypaty minister zabiera dzielniki waciwe tej liczby (te, ktre s na licie). Nie moesz wzi takiej liczby, z ktrej minister nie mia by zysku. Po kadym ruchu z listy usuwa si wypacone sumy. Jeli nie mamy ju moliwoci dokonania adnej wypaty, reszt pienidzy zabiera minister. Jak gra, eby osign jak najwikszy zysk? Wybierz najpierw n = 8. Przeprowad gr wiele tysicy razy. Wycignij wnioski. Powtrz dla wikszych n. 11.5. W przeciwlegych wierzchokach kostki n-wymiarowej siedz: mucha i pajk. Pajk si nie rusza, a mucha wdruje po kostce (po krawdziach), za kadym razem wybierajc losowo wierzchoek (jeden z ssiednich), do ktrego ma si uda. Jeli trafi do wierzchoka, gdzie jest pajk, zostaje uyta do obiadu. Wyznaczy empiryczn dystrybuant zmiennej losowej mucha przeyje co najmniej n jednostek czasu. Zaprogramowa wdrwk muchy, liczy czas, powtrzy to kilkadziesit tysicy razy, zebra wyniki. Warto rozwiza najpierw zadanie dla n = 2 (bardzo atwe) i potem dla n = 3 najpierw matematycznie, potem empirycznie. Bdzie to bowiem test na poprawno metody. 32

  • 11.6. Niech f bdzie funkcj dwch zmiennych, okrelon wzorem f(x, y) = 2xy 2(x + y) + 3 .

    Niech dany bdzie cig skoczony liczb a1, a2, ..., an . Wybieramy losowo dwa wyrazy tego cigu a, b, wykrelamy je z cigu a na ich miejsce wstawiamy f(a, b). Analogiczn operacj powtarzamy dla nowego cigu. W kocu otrzymamy cig jednoelementowy (czyli pewn liczb). Wykaza eksperymentalnie, e liczba ta zaley tylko od cigu, a nie od losowych wyborw kolejnych usuwanych wyrazw. Dla ustalonego cigu przeprowadzi ten proces kilka tysicy razy, sprawdzi, e zawsze otrzymujemy t sam liczb. Powtrzy to dla kilkudziesiciu innych cigw.

    Statystyka Rozkad normalny w pakiecie Mathematica. NormalDistribution[mi, sigma] to rozkad o redniej mi, odchyleniu standardowym sigma. Uwaga: aby obliczy warto czstoci w punkcie stosujemy komend PDF. Natomiast warto ci dystrybuanty podaje PDF, jak w przykadach:

  • przedwczenie zuyte opony tak jednak, by wymienia co najwyej p = 5 procent opon. Na ile kilometrw naley da gwarancj? Napisz funkcj gwarancja[k, s, p], ktra to oblicza. 12.4. Wyznacz przedzia ufnoci dla redniej

    Najprostsze rwnanie ekologii matematycznej

    Wyobramy sobie zbiorowo np. ryb w stawie grskim, albo zajcy w duym lesie. Zakadamy, e yciu tych zwierzt nie zagraaj nienaturalne wydarzenia: ludzie nie wpuszczaj ciekw do jeziora, nie owi ryb sieci, wycieczki nie posz zajcy. Nasze ryby czy zajce rozmnaaj si zupenie swobodnie. Jednak zasoby tlenu w wodzie, czy pokarmu w lesie s oczywicie ograniczone i wobec tego rozwojem zbiorowoci rzdz dwie przeciwstawne tendencje: 1) zwierzta rozmnaaj si: im wicej osobnikw w danym roku, x, tym wicej ich w roku nastpnym, x + 1. 2) zwierzta gin z braku pokarmu: im wicej osobnikw w jednym roku, tym mniej w nastpnym. Okazuje si, e te dwie przeciwstawne tendencje do dobrze opisuje rwnanie

    xn+1 = rxn (1xn), w ktrym xn oznacza wielko populacji (ryb, zajcy), w pewnych umownych jednostkach w danym roku, xn+1 to oczywicie wielko tej populacji w nastpnym roku, za zmienna r jest wspczynnikiem zalenym od rodzaju populacji: inny dla ryb, inny dla zajcy. Moe te zalee od lokalnych warunkw. Czynnik rxn opisuje rozwj nieskrpowany brakiem przestrzeni i pokarmu, czynnik 1x gra rol hamujc i uwzgldnia realia ycie: gdy x ronie, to 1x maleje i na odwrt. Zbadajmy teraz jak przebiega kilku hipotetycznych populacji. Przyjmijmy r = 1,5 i wemy dowolny stan pocztkowy x0 , np. x0 = 1/2 . Wtedy ju po kilku nastpnych krokach ustala si stan rwnowagi 0,333333... . Gdybymy przyjli r = 2,7 , dostalibymy jako warto graniczn 0,6296296..... . To ukad stabilny: spoeczno zwierztek osiga szybko stan rwnowagi i dalej nic si nie dzieje: tyle samo si rodzi, co umiera. Mae zmiany parametru r powoduj lekkie przesunicie punktu stabilnoci. Sytuacja zaczyna si zmienia gdzie okoo r = 3. Najpierw dochodzenie do stanu rwnowagi trwa coraz duej, a wreszcie w pewnym momencie (dokadne jego uchwycenie nie jest moliwe) proces rozdwaja si. Dla r = 3,2 s ju dwa pooenia rwnowagi: 0, 5130455... i 0, 79944555... Liczba ryb (zajcy) oscyluje: w latach parzystych jest inna ni w nieparzystych. Proces znw si rozdwaja: dla r = 3,5 mamy ju cztery pooenia rwnowagi:

    0,5008842... , 0,8749973... , 0,3828197.... .... 0,8269407.... potem osiem i szesnacie. Ukad zaczyna traci stabilno, punktw rwnowagi przybywa rwnowagi, liczba zwierztek jest w kadym roku inna, a drobne zaburzenia parametru r powoduj drastyczne zmiany. Wreszcie nastpuje chaos: nic nie wiadomo, wszystko si miesza. A jednak nie jest to zupena przypadkowo: ukad opisany jest wci tym samym, bardzo porzdnym, prostym rwnaniem. Jeli si zastanowimy, to wcale nie wyda si to nam dziwne. Powtarzanie tego samego regularnego procesu moe bardzo atwo zmieni uporzdkowany, regularny ukad w chaotyczn mieszanin. Starczy wspomnie dwa przykady: tasowanie kart i zagniatanie ciasta. Oba te procesy s do monotonne, ale efektywne! Na rysunku poniej widzisz jeden stan rwnowagi.

    Napisz program do badania tego rwnania.

    34

  • Podstawowe obliczenia matematyki finansowej 15.1. Napisa funkcj wyznaczajc wewntrzn stop zwrotu inwestycji, w ktrej wkad przynosi zyski przez lata , okrelone w cigu dane. Rozwizanie. Na przykad wsz [wklad_, lata_, dane_] := N[ 100*NSolve[

    wklad == Sum [ dane[[i]]/(1+x)^i, {i,Length[dane]} ],x ] [[Length[dane],1,2]],4] 15.2. Porwna dwie metody obliczania spat w rwnej wysokoci.

    Twierdzenie. Przy poyczce K na n lat (okresw), wielko staej raty jest rwna

    1

    1

    nn

    r

    rKr . Po k latach (okresach) zostaje do spacenia

    Krk Krn 11

    n

    k

    rr .

    Dowd. Indukcja wzgldem k .

    1. Metoda dodania odsetek i rwnego podzielenia. Wtedy rata = = K (r n n + r + 1) / (2n)

    Recycling. Puszka aluminiowa way 10 gramw. W wyniku utylizacji odpadw odzyskuje si corocznie 75 procent zuytego aluminium. Ile puszek mona wyprodukowa z tony aluminium przez 10 lat? . Ile to razy wicej ni gdyby odzyskiwano poow zuytego aluminium? Ile to razy wicej ni gdyby puszki wyrzucao si bezpowrotnie?

    Pokaemy tylko wykres (rysunek u gry) Na osi x odkadamy wskaniki oszczdzania: ile procent puszek odzyskujemy, na osi y ile puszek da si wyprodukowa przy takim wskaniku.

    35

  • Planety i wielociany foremne Johannes Kepler by rzetelnym uczonym, wszyscy znamy jego prawa rzdzce ruchem planet.

    Nie patrzy tylko na gwiazdy. Poszukiwa regularnoci matematycznych wszdzie: od planet do nasion owocw. W 1615 roku napisa prac o adnie brzmicym tytule Stereometria dolorium vinariorum, co na polski tumaczy si te uroczo: Stereometria beczek do wina.

    W czasach Keplera znano tylko sze planet: Merkury, Ziemia, Mars, Jowisz i Saturn. Dlaczego planet jest akurat sze? zapyta Kepler. I jaka prawidowo rzdzi ich odlegoci od Soca? Zaoy, e wszystko si ze sob czy, e geometria i kosmogonia s cile ze sob zwizane. Z dzie staroytnych Grekw wiedzia, e jest tylko pi wielocianw foremnych. Spostrzeg, e midzy szecioma orbitami jest pi wolnych przestrzeni. Moe zatem kada z tych wolnych przestrzeni odpowiada jakiemu wielocianowi foremnemu? Po kilku latach (1596) stworzy nastpujc teori, za pomoc ktrej wyliczy do dokadnie rozmiary orbit.

    Wyobramy sobie kul, ktrej rednic jest rednica orbity Merkurego. Nastpnie, e na tej kuli jest opisany omiocian foremny, na nim kula, na niej dwudziestocian, na nim znowu kula, na niej dwunastocian, na nim kolejna kula, na niej czworocian, potem znowu kula, szecian i w kocu na tym szecianie jest opisana kula. Kepler doszed do wniosku, e rednice tych kolejnych kul s rednicami orbit kolejnych planet: Merkurego, Wenus, Ziemi, Marsa, Jowisza i Saturna.

    Wydawao si, e teoria jest bardzo trafna. Niestety, zgadzaa si bowiem z danymi eksperymentalnymi. A c moe lepiej wiadczy o susznoci teorii matematycznej ni jej zgodno z danymi eksperymentalnymi lub danymi obserwacyjnymi, szczeglnie tymi wzitymi z nieba.

    Przeledzi te rachunki za pomoc programu Mathematica. Program ma odpowiedni cigawk. Wczytujemy pakiet: Geometry`Polytope.m` i na przykad promie kuli wpisanej w szecian jednostkowy to Inscribed[Cube] a promie kuli opisanej na czworocianie to Circumscribed[Tetrahedron]

    Brya foremna Promie kuli wpisanej Promie kuli opisanej Czworocian

    Szecian

    Omiocian

    Dwunastocian

    Dwudziestocian r = +42 18 5

    12 R = +10 2 5

    4

    Co wic zrobi Kepler? Prbowa, prbowa, a wyszo, to znaczy, gdy konfiguracja

    (kolejno sfer) i wynikajce z niej obliczenia zgadzay si z danymi obserwacyjnymi.

    Stosunek Promieni orbit

    wg oblicze Keplera za pomoc wielocianw foremnych

    Prawdziwy

    Merkurego do Wenus 0,53 Wenus do Ziemi 0,72 Ziemi do Marsa 0,65 Marsa do Jowisza 0,29 Jowisza do Saturna 0,54

    Niestety caa zbieno rezultatw jest przypadkowa. A szkoda! Takie to byo adne...

    36

  • 17.2. Obliczy dugo bokw piciokta foremnego wpisanego w koo o promieniu 1. 17.3. Obliczy dugo przektnej piciokta foremnego wpisanego w koo o promieniu 1. 17.4. Obliczy wartoci funkcji trygonometrycznych ktw 18, 36, 54, 72 i 108 stopni:

    Wczyta package trigonom, Uywajc TrigReduce wyprowadzi wzory na sin (5), cos (5), Podstawi =

    5 i rozwizujc odpowiednie rwnanie obliczy wartoci funkcji

    trygonometrycznych kta 36 stopni, a potem nastpnych. Wykorzystujc moliwoci programu Mathematica, wyprowadzi pozostae wzory.

    17.5. Obliczy skal podobiestwa duego i maego piciokta na rysunku. 17.6. Zakadajc, e piciokt jest dogodnie umieszczony w ukadzie wsprzdnych, obliczy: wsprzdne wierzchokw, rwnania prostych zawierajcych boki, rwnania przektnych, wsprzdne wierzchokw maego piciokta. 17.8. Z nagromadzonych danych napisa dowd, e przektne piciokta foremnego dziel si w stosunku zotym.

    37

    Timing[N[Pi, 10000]]Demo 3. Symulacja gry w ora i reszk: 1000 rzutw; ile razyStaeRelacjePrzypisanie

    wiczenie: Zobacz rnic midzyOperatory logiczneNot[p]Implies [p,q]PodstawienieIf [warunek, pierwsze, drugie]

    Times[2,2]lub n.p.Solve [{2x+3y==4,5x+6y==7}, {x,y}]Series [Sin[x], {x,0,11}]PlotPoints -> 100, PlotRange -> {{0,2*Pi}, {-2,2}}]Show [%, AspectRatio -> 1]Plot[Release[ciag[x]], {x,0,5}]Sum [lista[[i]]*10^(Length[lista]-i),{i,1,Length[lista]}]Najprostsze rwnanie ekologii matematycznejInscribed[Cube]Circumscribed[Tetrahedron]