Wydziaª Matematyki, Fizyki i Informatyki 10 marca 2008
Spis tre±ci Listy 1 Listy 2 3
Co to jest lista? Listy List w Mathematice jest wyra»enie oddzielone przecinkami i zamkni te w { klamrach }. Elementy listy mog by dowolnego typu, i nie wszystkie musz by tego samego typu. Przykªady {2, 3, 7, 10, -3, 25} (Ka»dy element jest liczb ) {"dobrze", "¹le", "brzydko"} (Ka»dy element jest ci giem znaków) {{1,3}, {2,1}, {23,89}} (Elementami sa pary liczb) {"dobrze", 17, {23,89}} (Elementy s ró»nego rodzaju) Listy s wa»nymi strukturami w Mathematice. Wiele spo±ród danych wej±ciowych i wyj±ciowych Mathematiki jest wyra»onych za pomoc list. Na przykªad zarówno skªadnia wej±cia, jak i wyj±cia u»yta w rozwi zaniu ukªadu równa«wymusza u»ycie list: Solve[{x+y==2,x^2+y==2},{x,y}] {{y 1, x 1}, {y 2, x 0}}
Praca z elementami listy Mathematica pozwala na bezpo±rednie operowanie elementami listy. Mo»na to zrobi u»ywaj c zarówno polecenia Part, jak i - w skrócie - za pomoc [[ podwójnych nawiasów kwadratowych ]]. Na przykªad, maj c tako» zdeniowan list : mylist={"dobrze",17,{23,89}} Poni»sza tabela zawiera przykªady praktycznego u»ycia tej»e listy:
Praca z elementami listy Polecenie Mathematiki Wyja±nienie Part[mylist,2] Polecenie Part zwróci drugi element listy. 17 mylist[[2]] Jest to po prostu skrótowy zapis 17 Part[mylist,2]. Part[mylist,3] Trzeci element mylist sam w sobie jest list - {23,89} nie ma w tym nic zªego! Part[mylist,3,2] Part mo»e przyjmowa dodatkowe argumenty. 89 W tym przypadku, jako»e Part[mylist,3] jest list dwuelementow, Part[mylist,3,2] wskazuje na drugi element listy Part[mylist,3]. mylist[[3,2]] Skrótowy zapis Part[mylist,3,2]. 89 Part[mylist,1]=±am" Za pomoc tej»e skªadni mo»na mylist{sam, 17, {23, 89} } zmieni pierwszy element mylist. mylist[[1]]="mike" Skrótowy zapis zamiany pierwszego elementu mylist{mike, 17, {23,89} } mylist.
Praca z listami jako jednostkami kompletnymi Jedn z przyjemnych rzeczy w Mathematice jest to,»e zazwyczaj pozwala ona nam na operacje na ka»dym elemencie listy poprzez naturalna skªadni, zwªaszcza gdy elementami listy s liczby. (Wi cej informacji na ten temat napisano w rozdziale 22-gim) Przykªad Czasami jest sens dodawa, mno»y lub pot gowa ka»dy element z listy. Mo»na tak»e dodawa lub mno»y elementy dwóch list wzajemnie. Poni»sza tabela podaje kilka przykªadów takich operacji, które mo»na wykona :
Praca z listami jako jednostkami kompletnymi Polecenie Mathematiki Wyja±nienie {1, 3, 5, 7, 22} + 6 Dodaje 6 do ka»dego elementu listy. {7, 9, 11, 13, 28} {2, 5, 1, 2, 1, -2} * 3 Mno»y ka»dy element listy razy 3. {6, 15, 3, 6, 3, -6} {1, 2, 4, -2, 6}^3 Podnosi wszystkie elementy listy do pot gi 3. {1, 8, 64, -8, 216} {1, 2, 3} + {-3, 0, 5} Je±li dwie listy maj tyle samo elementów, {-2, 2, 8} mo»emy doda je element po elemencie. {1, 3, 5} * {2, -5, 2} Je±li dwie listy maj tyle samo elementów, {2, -15, 10} mo»emy przemno»y je element po elemencie.
Praca z listami jako jednostkami kompletnymi Przykªad W tym przykªadzie zobaczymy, jakie to proste jest u»ywa jednocze±nie funkcji i list. W istocie, rozwa»my funkcj f (x) = x 2 5x + 1. f[x_] := x^2-5x +1 Przypu± my,»e chcemy znale¹ warto±ci f w x = 1,0; 1,5; 3,25; 5,1 i 6,5. Mo»emy zrobi to bardzo szybko za pomoca listy: list1 = {1.0, 1.5, 3.25, 5.1, 6.5} {1., 1.5, 3.25, 5.1, 6.5} Mo»emy u»y podstawienie, f[x] /. x->list1 (Podstaw x=1,0; 1,5 itd. do f[x].) {-3., -4.25, -4.6875, 1.51, 10.75} lub mo»emy wyprowadzi funkcj bezpo±rednio z f[list1] (f[x] jest wyprowadzony przy x = 1,0; 1,5 itd.) {-3., -4.25, -4.6875, 1.51, 10.75} Wi cej polece«i technik pracy z listami znajduje sie w rozdziale 22-gim.
Polecenie Table Listy Je±li elementy listy mo»na zdeniowa wzorem matematycznym, mo»na szybko utworzy tak list przy pomocy polecenia Table, bez potrzeby r cznego wklepywania poszczególnych elementów listy. Przykªad Aby utworzy list, której ka»dy element jest postaci n 2, dla ka»dej liczby caªkowitej 1 n 20, nale»y wpisa : Table[n^2, {n,1,20}] {1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400} Ogólnie rzecz bior c, polecenie Table uzywane jest w postaci: Table[wyra»enie, {n, n 0, n 1 }] lub, je±li chcemy ustalic zakres n od n 0 do n 1 co m kroków, u»ywamy Table[wyra»enie, {n, n 0, n 1, m}] Oto kilka przykªadów:
Polecenie Table Listy Polecenie Mathematiki Uwaga Table[n^2,{n,3,10}] Lista kwadratów n 2, dla 3 n 10. {9, 16, 25, 36, 49, 64, 81, 100} Table[n^2,{n,3,10,2}] Lista nieparzystych kwadratów n 2, dla 3 n 10. {9, 25, 49, 81} Table[n^2,{n,-5,5,2.5}] Zmienna n przyjmuje waro±ci od -5 do 5, {25, 6.25, 0, 6.25, 25} z przeskokiem równym 2,5. Table[{Cos[n],n/(n+1)},{n,1,5}] Wyra»eniem w poleceniu Table mo»e by lista. {{Cos[1], 1 2 }}, W tym przypadku tworzymy tabel par {Cos[2], 2 3 }, {Cos[3], 3 4 }, wspóªrz dnych. {Cos[4], 4 5 }, {Cos[5], 5 6 }, Table[x^n,{n,0,7}] Ka»dy element mo»e by wyra»eniem {1, x, x 2, x 3, x 4, x 5, x 6, x 7 } symbolicznym. Table[Cos[n]/m,{m,2,3},{n,7,9}] Wyra»enie w poleceniu Table {{ Cos[7], Cos[8], Cos[9] }, 2 2 2 mo»e zawiera wi cej ni» jedn zmienn. { Cos[7], Cos[8], Cos[9] }} 3 3 3
Eksperyment z faktoryzacj Przykªad Przyjrzyjmy si rozkªadowi wyra»enia x n + 1. Z pomoca polecenia Table, otrzymujemy faktoryzacj dla kilku warto±ci n nadzwyczaj szybko - powiedzmy dla n = 2, 3,..., 10. Table[Factor[x^n+1],{n,2,10}] {1 + x 2, (1 + x)(1 x + x 2 ), 1 + x 4, (1 + x)(1 x + x 2 x 3 + x 4 ), (1 + x)(1 x + x 2 x 3 + x 4 x 5 + x 6 ), 1 + x 8, (1 + x)(1 x + x 2 )(1 x 3 + x 6 ), (1 + x 2 )(1 x 2 + x 4 x 6 + x 8 )} Czy zauwa»yli±cie,»e wszystkie wspóªczynniki w powy»szych czynnikach wynosz albo 1, albo -1? Spróbujcie powtórzy czynno± z {n,2,100} w poleceniu. Efekt b dzie taki sam! Mo»na wi c wysun wniosek,»e wszystkie wspóªczynniki w ka»dym czynniku x n + 1 bed równe ±1 bez wzgl du na n. Czy aby na pewno? Spróbujcie przefaktoryzowa x 105 + 1 - wynik Was zaskoczy!
Wielok ty foremne Listy Przykªad Wielok t foremny to taki, w którym wszystkie boki s równej dªugo±ci i wszystkie k ty wewn trzne s takie same. Wielok t foremny o n bokach mo»na otrzyma poprzez zª czenie punktów (wierzchoªków) o wspóªrz dnych (cos(2πk/n), sin(2πk/n)), gdzie k = 0, 1, 2,..., n. Utworzymy liste tych punktów poprzez zdeniowanie funkcji npolygon przy u»yciu polecenia Table npolygon[n_]:=table[{cos[2*pi*k/n],sin[2*pi*k/n]}, {k, 0, n}] Gdyby±my chcieli zobaczy wspóªrz dne pi ciu wierzchoªków pentagonu (pi ciok ta foremnego), wpiszemy: npolygon[5] 1 {{1,0}, { 1 4 ( 1 + 5), 1 2 2 (5 + 5)}, { 1 4 (1 + 5), 1 2 { 1 4 ( 1 + 5), 1 1 2 2 (5 5)}, { 1 4 ( 1 + 5), 1 2 1 2 (5 5)}, 1 2 (5 + 5)}, {1,0}} Aby narysowa wielok t - na przykªad dodekagon (dwunastok t) - u»ywa si polecenia ListPlot: ListPlot[npolygon[12],PlotJoined->True,AspectRatio->Automatic]
Pytanie & Odpowied¹ PYTANIE Kiedy u»ywam polecenia Table, Mathematica wydaje mi na wyj±ciu {}. Co to znaczy? ODPOWIED To znaczy,»e lista, której za» daªe±, jest pusta, poniewa» wyspecykowany zakres indeksów nie ma sensu. Upewnij si,»e w poleceniu jest n 0 n 1. Table[wyra»enie, {n, n 0, n 1 }]
Dzi kuj za uwag.