Dane czyli listy

Jedno z trudniejszych zagadnien to sposob przechowywania danych przez Mathematice. Mathematica pozwal na grupowanie elementow. Aby kilka elementow zgrupowac wystarczy umiescic je w nawiasach klamrowych, oddzielajac przecinkami:

{1, 2, 3}

a = {2, 3, 4}

Na takich obiektach mozna wykonywac najroznorodniejsze operacje:

x^a - 1

D[%, x]

Jezeli zechcemy "podmienic" x na jakas wartosc mozemy zapisac to tak:

% /. x -> 3

Wiekszosc operacji wykonywanych przez Mathematice jest tak skonstruowana, ze jest "listoodporna" to znaczy ich argumentem moze byc lista...

{3, 5, 1}^2 -1

{6, 7, 8} - {3.5, 12, 1.8}

Exp[ % ] // N

u = {2, 4, 3.1}

u/(u-1)

Tablice

Lista wartosci moze byc uzywana  jako tablica. Tablice mozna tez wygenerowac wyliczajac wartosc jakiegos wyrazenia dla zadanych argumentow:

Table[i^2, {i,6}]

albo

z = Table[Sin[n/5], {n,0,4}]

Aby wyliczyc wartosc powyzszego wystarczy napisac:

N[%]

Inny przyklad tablicy zbudowanej z formul:

Table[x^i - 2i, {i,5}]

Sum[x^i -2i, {i,5}]

Product[x^i -2i, {i,5}]

Polecenia Table uzywa dokladnie takiego samego sposobu zapisu jak polecenia Sum lub Product...

z

z // TableForm

Polecenie TableForm pozwala wypisać zawartość listy w postaci tablicy:

u = Table[x^i + y^j, {i,3}, {j,2}]

u // MatrixForm

RandomReal[{0,1},{4,4}]

Manipulowanie elementami listy

Part[list, i]  albo list[[i]] pozwala wyciagnac i-ty element listy

{5, 8, 6, 9}[[2]]

Ponizsze jest nieco pokrecone - ale o co chodzi? i czemu tak jest?

{5, 8, 6, 9}[[ {3, 1, 2, 3, 4} ]]

i pozwala na przeksztalcanie list wedle wlasnego wyboru

?u

u[[2]] + u[[3]] + u[[4]]

u[[3]] = 0

u

W ten sposob mozemy zmienic wartosc jednego elementu listy (uzycie notacji Part tez jest mozliwe!

Nawiasy w Mathematici

Dobry moment zeby dokonac drobnego podsumowania:

pojedyncze nawiasy kwadratowe uzywane sa do wskazania argumentow funkcji;

nawiasy klamrowe sluza do definiowania list,

podwojne nawiasy kwadratowe pozwalaja odwolac sie do elemnetu listy...

nawiasy okragle uzywane sa do grupowania fragmentow wyrazen arytmetycznych

Wektory i macierze

{a, b, c} to wektor o trzech elementach
{{a, b}, {c, d}} to tablica (({{a, b}, {c, d}}))

Clear[a,u,v,  p, q]

Tak na marginesie — polecenie Clear pozwala skasowac niepotrzebny symbol

m={{a, b}, {c, d}}

m[[1]]

Czyli m[[1]] wyciaga z listy jej pierwszy element (ktory tez jest lista).

m[[2]][[2]]

Powyzszy, nieco skomplikowany zapis, mozna zastapic prostszym:

m[[2,2]]

v = {x, y}

p v+q

v + {xp, yp} + {xpp, ypp}

Wektory dodawane sa skladowa po skladowej...

Produkt skalarny wektorow  oznaczamy za pomoca kropki (.)

{x, y} . {xp, yp}

Mozna pomnozyc macierz przez wektor

m . v

Albo macierz przez macierz

m . m

v. m

v. m . v

Ubocznym efektem uzycia list do za[isywania wektorow jest brak mozliwosci odroznienia wektora "kolumnowego" od "wierszowego" (czy to oznacza ze takie rozroznienie jest bez sensu?
Zatem ponizsze nie ma sensu:

Transpose[{a, b}]

Ale to juz ma:

Transpose[{{a, b}, {c, d}}]

Do wczytania danych z pliku zewnetrznego sluzy polecenie Import, a zapisu danych do pliku — Export. Mathematica potrafi wczytywac dane w roznorodnych postaciach (lacznie z graficznymi — to jest dobry przykład tablicy}:

SetDirectory["/home/myszka/Dokumenty/teksty/Dydaktyka/Mathematica/M/Przyklad5"];

Import["d.png"];

Show[%]

Polecenia $ImportFormats oraz $ExportFormats podaja formaty, ktorych mozna uzywac podczas importu i eksportu danych

$ImportFormats

$ExportFormats