Maxima – rozwiązywanie problemów matematycznych

Wstęp.

Maxima jest programem do obliczeń symbolicznych napisanym w Lispie. Z początku może się on wydawać bardzo skomplikowany, ale z czasem możemy zauważyć, że jest on bardzo przyjemny i łatwy. W tym wpisie chciałbym przedstawić najczęściej wykonywane operacje, w których maxima może nam bardzo pomóc.

Spis rzeczy:

Instalacja.

Instalacja Maximy nie należy do trudnych. W tym celu wchodzimy na stronę pobierań projektu Maxima. Następnie odnajdujemy interesujacą nas gałąź, która jest w postaci: x.y.z.-typ. W momencie pisania x.y.z to 5.12.0, a typ wybieramy spośród Windows, Linux, bądź source. Typ instalacji wybieramy oczywiscie w zależności od tego czy posiadamy Windowsa, Linuksa lub chcemy sobie go sami zbudować ze źródeł.

Po odnalezieniu interesującej nas wersji pora pobrać pliki instalacyjne. W wersji dla Windows jest to plik maxima-x.y.z.exe. Gdy już go ściągniemy, instalujemy go jak każdy inny program.

Instalacja Maximy na Linuksie przebiega trochę inaczej. Najłatwiej sprawdzić czy programu nie ma w repozytoriach naszej dystrybucji, dla Gentoo będzie to: emerge maxima, zaś dla Debiana (i pochodnych): apt-get install maxima. Jeżeli posiadasz dystrybucję o innym mechaniźmie repozytoriów, zrób to tak jak zwykle instalujesz programy, bądź ściągnij dwa wymagane pliki rpm: (1) maxima-x.y.z-n.i386.rpm, który zawiera skrypty i dokumentację oraz (2) maxima-exec-<lisp version>-x.y.z-n.i386.rpm, który zawiera wykonywalny obraz Lispa. Dodatkowo można ściągnąć też (3) maxima-xmaxima-x.y.z-n.i386.rpm, by mieć graficzną nakładkę. Po ściągnięciu interesujących paczek zainstaluj je w następujący sposób:

rpm -ivh maxima-x.y.z-n.i386.rpm
rpm -ivh maxima-exec-<lisp version>-x.y.z-n.i386.rpm

Istnieje również możliwość samodzielnej kompilacji ze źródeł (przydatne szczególnie, gdy nasza platforma jest inna niż Windows, bądź Linux). W tym celu pobieramy paczkę ze źródłami. Interesujący nas plik to maxima-x.y.z.tar.gz. Jeżeli decydujesz się na ten sposób, chyba wiesz co robić dalej.

Dla zainteresowanych istnieje również możliwość pobrania najnowszej wersji rozwojowej z CVS Maximy na Sourceforge.

Informacje dodatkowe.

Maxima jest programem konsolowym, jednakże istnieją również nakładki graficzne, takie jak własna nakładka XMaxima oraz niezależna wxMaxima. Maxima jest dostępna na systemy POSIX-owe, Windowsy oraz Mac OS X. Program ten uruchamiamy poleceniem: maxima lub xmaxima w zależności czy chcemy uruchomić wersję konsolową czy też wersję z nakładką graficzną.

Po uruchomieniu, Maxima powita nas znakiem zachęty w postaci (%i1). Dla wyjaśnienia powiem, że „i” oznacza tutaj nic innego jak „input” (czyli wejście), a liczba jest kolejnym numerkiem operacji. Wyprzedzę tutaj fakty, ale zapis (%o1) („o” oznacza „output”) będzie oznaczał wyjście, czyli to co program nam wykona (lub też nie jak się okaże później). Komendy kończymy znakiem średnika. Z programu wychodzimy wpisując quit();

Proste operacje arytmetyczne.

Spróbujmy zatem wykonać pierwsze operacje arytmetyczne. Najpierw dodawanie:

(%i1) 2 + 2;
(%o1) 4

Jak widzimy, program zwrócił nam wynik naszego działania. Spróbujmy mnożenia i dzielenia:

(%i2) 2 * (-5);
(%o2) -10
(%i3) 99 / 3;
(%o3) 33

W tym miejscu można by zadać pytanie: „Czy można odwołać się w jakiś sposób do poprzedniego rozwiązania?” Odpowiedź jest twierdząca — do poprzedniego wyniku odwołujemy się znakiem % (procent), np:

(%i4) % - 20;
(%o4) 13;

Co więcej, można się odwołać do dowolnego poprzedniego wyniku, który otrzymaliśmy w danej sesji programu. W tym celu posługujemy się wyrażeniem %o lub %i. Sprawdźmy zatem jak to działa w praktyce:

(%i5) %o2 * 3;
(%o5) -30
(%i6) %o3 - %o4;
(%o6) 20

Od teraz ze względów praktycznych nie będę używał %i oraz %o. Zamiast tego będę stosował znaki < i > (odpowiednio dla wejścia i wyjścia). Zwróćmy również uwagę, że działania na liczbach całkowitych zwracają wyniki również całkowite, np:

< 3 / 4;
> \frac{3}{4}

Jeżeli zależy nam na „normalnym” wyniku, musimy użyć w tym celu liczb rzeczywistych (lub skorzystać z wbudowanej funkcji float):

< 3.0 / 4.0;
> 0.75
< float(3 / 4);
> 0.75

Na koniec pierwszej części wspomnę jeszcze, że maxima radzi sobie świetnie z dużymi liczbami:

< 2 ^ 128;
> 340282366920938463463374607431768211456
< 2.0 ^ 128;
> 3.4028236692093846E+38
< 30!;
> 265252859812191058636308480000000

Zapowiedź drugiej części.

Już niedługo kolejna część kursu obsługi Maximy, a w niej m.in.:

Zapraszam!

Część 2.: Stałe i zmienne. Funkcje. Obliczenia symboliczne. »

Leave a Reply