Wprowadzenie do systemu MAXIMA

Wiesław Kubiś

Wstęp

Maxima jest systemem służącym do obliczeń matematycznych, zarówno na liczbach jak i na symbolach. O historii tego systemu można przeczytać pod adresem ???.

Ważną zaletą Maximy jest jej dostępność: program ten jest darmowy (dostępny na licencji GPL Open Source) i możliwy do zainstalowania praktycznie na każdym popularnym systemie operacyjnym (Windows, Linux, Mac OS). Warto dodać, że pełna wersja Maximy 5.14.0 zajmuje poniżej 100 Mb, czyli bardzo niewiele, jak na dzisiejsze możliwości sprzętowe.

Instalacja

Program pobieramy ze strony http://maxima.sourceforge.net

Zainstalowanie nie powinno sprawiać problemów. W przypadku niektórych programów antywirusowych lub zapór (firewalls) należy zwrócić uwagę na to, aby zezwolić Maximie działać jako serwer.

W dalszym ciągu będziemy używać interfejsu graficznego wxMaxima. Jest to nakładka, ułatwiająca wpisywanie poleceń i pozwalająca oglądać wyniki w trybie graficznym, w przeciwieństwie do oryginalnej Maximy, która działała wyłącznie w trybie tekstowym.

Przegląd możliwości Maximy

Otwieramy program wxMaxima. Po krótkiej chwili powinno pojawić się coś w rodzaju:

wxMaxima - START

Będziemy używać MAximy w trybie interaktywnym, tzn. my wpisujemy polecenie, a system nam odpowiada. Później nauczymy się też pisać programy, zapisywać je w pliku, odtwarzać, itd.

Działania na liczbach

Maxima działa jak zwykły kalkulator, przy czym działa na całkiem dużych liczbach:

(%i1) 31*45 - (217+134)^8;
(%o1) -230386449425341931406
(%i2) 67!;
(%o2) 364711109181886852882498590966054644271676353140495245937016285002679624\
36943872000000000000000
(%i3) (3-1/4)/(5+3/2);
                                      11
(%o3)                                 --
                                      26

W ostatnim przypadku Maxima odpowiedziała nam podając zwykły ułamek. Chcąc zobaczyć przybliżenie dziesiętne tego wyniku, piszemy

float(%)

lub

float(%o3)

W obu przypadkach otrzymamy

(%o4) 0.42307692307692

Łatwo się domyślić, że % odwołuje się do poprzedniego wyniku, zaś %o3 jest odwołaniem do wyrażenia o etykiecie %o3.

Inna opcja:

(%i1) (3-1/4)/(5+3/2), float;
(%o1) 0.42307692307692

Listy

Jednym z ważnych typów danych w Maximie jest lista, czyli matematycznie skończony ciąg jakichś elementów. Listę przedstawia się za pomocą nawiasów kwadratowych. Formalnie, lista to obiekt postaci:

[a1, a2, ... , an]

gdzie a1, ..., an są dowolnymi wyrażeniami.

Oto przykłady:

(%i1) A : [1,2,3,4,5];
(%o1) [1,2,3,4,5]
(%i2) B : [y^2 + f, x=y, "qwerty"];
(%o2) [y^2+f,x=y,qwerty]
(%i3) C : [];
(%o3) []
(%i4) D : [C, [A,A]];
(%o4) [[],[[1,2,3,4,5],[1,2,3,4,5]]]

W powyższym przykładzie C jest pustą listą (tzn. listą bez elementów, albo ciągiem długości zero). Zauważmy też, że elementem listy może być inna lista, tak jak w przykładzie listy D.

Listy można do siebie dodawać. Służy do tego funkcja append. Formalnie, parametrami tej funkcji są dwie listy, zaś wartością jest lista będąca ich sumą. Przykłady:

(%i1) A : [1,2,3,4,5];
(%o1) [1,2,3,4,5]
(%i2) B : [y^2 + f, x=y, "qwerty"];
(%o2) [y^2+f,x=y,qwerty]
(%i3) S : append(A,B);
(%o3) [1,2,3,4,5,y^2+f,x=y,qwerty]
(%i4) T : append(B,A);
(%o4) [y^2+f,x=y,qwerty,1,2,3,4,5]

Elementy listy są numerowane liczbami 1,2,3,.... Odwołujemy się do nich pisząc

lista[miejsce]

gdzie lista to nazwa listy, zaś miejsce to pozycja elementu w liście. Długość listy oblicza się funkcją

length(lista)

Przykłady:

(%i1) A : [x,y,[x+y]];
(%o1) [x,y,[y+x]]
(%i2) length(A);
(%o2) 3
(%i3) A[3];
(%o3) [y+x]
(%i4) A[3][1];
(%o4) y+x

Zauważmy tu, jak odwołujemy się do pierwszego (w tym przypadku, jedynego) elementu listy A[3].

Zbiory

Zbiory można zdefiniować wypisując ich elementy w nawiasach wąsatych, czyli {...}. Przykład:

(%i1) A : {1,2,1,4};
(%o1) {1,2,4}
(%i2) B: {};
(%o2) {}

W tym przykładzie już widać że elementy powtarzające się są ignorowane. Łatwo się domyślić, że B jest zbiorem pustym.