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;
>
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.:
- wykorzystanie wbudowanych funkcji,
- operacje na stałych,
- definiowanie własnych funkcji,
- definiowanie zmiennych,
- operacje symboliczne.
Zapraszam!
Część 2.: Stałe i zmienne. Funkcje. Obliczenia symboliczne. »
Leave a Reply