r   e   k   l   a   m   a
r   e   k   l   a   m   a

Mathematica na Raspberry Pi jest za darmo. Jak wykorzystać ją w nauce matematyki?

Strona główna AktualnościOPROGRAMOWANIE

Kupując Raspberry Pi 2, dostajemy więcej nie tylko jednopłytkowy komputerek do przeróżnych zastosowań. Emulacja starszego sprzętu, odtwarzanie multimediów, sterowanie sprzętem elektronicznym – to sprawy popularne, ale na dobrą sprawę można to też zrobić na innych komputerkach tego typu. Malina oferuje jednak coś więcej. Dzięki umowie, jaką Fundacja Raspberry Pi podpisała z firmą Wolfram Research, każdy użytkownik Maliny może za darmo korzystać z programu Mathematica, który choć w dziedzinie obliczeń symbolicznych i numerycznych nie ma konkurencji, jest zarazem w wersji na pecety bardzo drogi – najtańsza wersja licencji to wydatek ponad tysiąca złotych. Oczywiście ze względu na niewielką moc obliczeniową Raspberry Pi 2 raczej nie ma co myśleć o wykorzystaniu tej darmowej Mathematiki do celów zawodowych, inżynierskich i naukowych, ale świetnie posłuży ona do celów edukacyjnych. Pomoże nauczycielom, uczniom… i samoukom – wszystkim tym, którzy chcą zajrzeć głębiej w świat matematyki i matematycznych wizualizacji.

Możliwości stworzonego przez firmę Wolfram Research programu są bardzo duże, radzi on sobie zarówno z algebrą liniową czy rachunkiem różniczkowym, jak i algebrą wyższą, logiką, teorią liczb, teorią grafów, topologią algebraiczną, geometrią, probabilistyką, kombinatoryką, optymalizacją, znajduje też zastosowanie w innych dziedzinach okołomatematycznych, pozwalając na analizę giełdową i finansową, przetwarzanie sygnałów czy wykorzystanie technik maszynowego uczenia się. Dodatkowo zawiera potężny wysokopoziomowy język programowania Wolfram Language, cały zestaw narzędzi do wizualizacji grafiki 2D i 3D i bibliotekę filtrów importu i eksportu dla wszelkiego rodzaju formatów danych oraz interfejsy łączące z silnikami obliczeniowymi w chmurze. Łatwo wśród tych wszystkich możliwości zaginąć – ale zaczynając od podstaw, poradzimy sobie zarówno z interfejsem, jak i z najważniejszymi funkcjami matematycznymi, szczególnie tymi, które mają zastosowanie na poziomie szkoły średniej czy studiów.

Instalacja na Raspberry Pi 2

Najprościej skorzystać z tego programu instalując na karcie pamięci Maliny jego domyślny system Raspbian. Znalazł się on zarówno na oficjalnym obrazie systemowym, jak i w repozytoriach systemu. Instalacja Raspbiana na karcie pamięci została opisana w pierwszej części naszego przewodnika po Raspberry Pi. Jeśli macie już działającego Raspbiana, ale z jakiegoś powodu nie ma na nim Mathematiki, zainstalować ją można poleceniem sudo apt-get update && sudo apt-get install wolfram-engine. Polecamy też od razu podkręcić nasz komputerek, tu każdy dodatkowy megaherc zegara się przyda. Jak to zrobić, opisane zostało w drugiej części cyklu. Na potrzeby matematycznego programu warto też zarezerwować 256 MB RAM na pamięć wideo, dopisując w pliku /boot/config.txt wiersz gpu_mem=256.

r   e   k   l   a   m   a

Uruchomienie Mathematiki jest proste. Interfejs graficzny, tzw. Notatnik (Notepad), przywołać można klikając charakterystyczną ikonę programu (hiperboliczny dwunastościan foremny) umieszczoną na pasku zadań. Przez chwilę mignie nam przed oczami ekran powitalny, a potem zobaczymy dwa okna. Pierwsze z nich to okno ze skrótami do dokumentacji i forum społeczności, drugie zaś jest notatnikiem, w którym spędzimy większość czasu z programem. Warto tu podkreślić, że to pełna wersja Mathematiki, której w porównaniu do komercyjnej brakuje jedynie dokumentacji – tę jednak znajdziemy online.

Mathematikę możemy uruchomić też w terminalu tekstowym, wydając polecenie wolfram. Dostaniemy w ten sposób jedynie tekstowe środowisko programistyczne, z uproszczonym interfejsem, bez interaktywnych możliwości Notatnika. Może to mieć sens dla bardziej zaawansowanych użytkowników – choć korzystanie jest trudniejsze, brakuje symboli matematycznych, greckich liter i grafiki, to interfejs tekstowy działa odczuwalnie szybciej na urządzeniu o tak przecież skromnej mocy obliczeniowej.

Polecenia potwierdzamy klawiszem Enter; Mathematica sama rozpozna, czy wyrażenie zostało ukończone – jeśli nie, możemy przejść do następnej linii, aż do momentu, gdy wszystkie nawiasy zostaną domknięte. Wyjście z wyrażenia odbywa się za pomocą kombinacji klawiszy Ctrl-G, po historii wpisanych wyrażeń przechodzimy za pomocą strzałek kursorów, możemy wówczas ponownie je edytować. Z interfejsu tekstowego wychodzimy kombinacją klawiszy Ctrl-D.


Możemy też bezpośrednio uruchamiać tak programy napisane w języku Wolfram Language – pliki tekstowe z rozszerzeniem .wl, wykorzystując w tym celu przełącznik -script. Polecenie wygląda wówczas następująco: wolfram -script program.wl.

Wolfram Language

By pracować z Mathematiką, należy poznać podstawy składni języka Wolfram Language. Nie są one skomplikowane, przypominają nieco język Lisp. Zacznijmy od tego, od czego zawsze się zaczyna. W Notatniku wpiszmy polecenie Print["Witaj świecie"]. Kombinacją klawiszy Shift-Enter uruchamiamy polecenie, w rezultacie którego pod poleceniem wyświetlony zostanie wynik: ciąg Witaj świecie. W każdej chwili możemy wrócić do polecenia za pomocą klawiszy kursora czy kliknięcia myszą, przeedytować je i wykonać ponownie. Możemy też zapisać aktualny stan Notatnika, komendą z menu File > Save As.

Na tym etapie możemy już śmiało korzystać z programu jako z podręcznego kalkulatora. 1+1, potwierdzone przez Shift-Enter zwróci nam 2. Spróbujmy coś nieco trudniejszego, np. całkę nieoznaczoną Integrate[1/x^2+1),x]. Taką całkę powinniśmy jednak znać na pamięć, więc spróbujmy coś trudniejszego – np. Integrate[1/x^3+1),x], edytując poprzedni wpis (oznaczony w Notatniku jako In[2]). Jak widać, wynik tej skomplikowanej całki zostanie przedstawiony w standardowej typografii matematycznej.

Równie prosto jest przygotowywać w tym trybie grafikę, np. wykresy funkcji.

Jak widać w In[8], polecenie zakończyliśmy średnikiem. Wynik zakończonego tak wyrażenia nie będzie wyprowadzany na ekran, zostaje ono tutaj przekazane jako argument funkcji Export, służącej do zapisania wyniku do pliku. Z kolei w In[10] polecenie Run posłużyło do uruchomienia zewnętrznego programu (w tym wypadku wyświetlarki obrazków gpicview, która pokaże zapisany tak wykres funkcji.

Oczywiście możemy też skorzystać w interaktywnym trybie z rysowania wykresów bezpośrednio w Notatniku. Mathematica oferuje dziesiątki funkcji pozwalających kontrolować format wykresu. Stworzona w ten sposób grafika może być obracana, skalowana i modyfikowana na wiele sposobów.

Podstawy składni języka

Wszystkie wyniki obliczeń można przechowywać w zmiennych. Przykładowo:

bok=5;
pole=bok^2;
Print[pole]

zwróci nam 25.

Mathematica radzi sobie z wieloma wartościami symbolicznymi, takimi jak e czy π. Możemy się o tym przekonać, każąc wyliczyć wartość wzoru Eulera. Ich wpisanie z klawiatury wymaga znajomości specjalnych skrótów, wpisywanych po naciśnięciu klawisza Esc, formuły i wyjścia z niej ponownym naciśnięciem Esc. Na przykład podstawę logarytmu naturalnego e uzyskamy za pomocą klawiszy Esc ee Esc, zaś liczbę π klawiszami Esc pi Esc.

Nie musimy jednak pamiętać tych wszystkich symboli – dla leniwych Mathematica oferuje wygodnego asystenta, którego wywołamy z menu Palettes>Basic Math Assistant. Pozwala on na wybranie symboli i funkcji matematycznych z palety, pomoże też przy wpisywaniu wartości w indeksach czy macierzy.

Symbole matematyczne możemy traktować oczywiście tak samo jak wcześniej zdefiniowane zmienne. Założmy, że chcemy wyliczyć 1000 kolejnych cyfr rozwinięcia liczby π. Wykorzystamy do tego funkcję N (zwracającą numeryczną wartość wyrażenia z określoną dokładnością). N[π, 1000] – i Mathematica zwróci nam wynik.

W analogiczny sposób możemy przechowywać kolekcje danych, jako listy, np. redakcja={"Ania", "Adam", "Maciej", "Łukasz"} czy liczbypierwsze = {1, 2, 3, 5, 7, 11}.

Listy takie można wygenerować proceduralnie – służą do tego funkcje Range i Table. Np. ciąg liczb od 1 do 10 wygenerujemy poleceniem Range[10], a ciąg liczb od 3 do 11 poleceniem Range [3, 11]. By zaś wyliczyć kolejne sześciany liczb od 1 do 10, wykorzystamy funkcję Table[i^3, {i,10}].

Funkcje matematyczne mogą działać oczywiście jednocześnie na wszystkich elementach listy. Np. p=liczbypierwsze^2 wygeneruje listę kwadratów kolejnych liczb pierwszych. Możemy też zdefiniować własne funkcje o takich możliwościach:

f[x_]:=x^3;
liczbypierwsze={1,2,3,5,7,11};
wynik=liczbypierwsze //f;
Print[wynik]

podkreślnik przy x oznacza argument funkcji, a podwójny ukośnik to wywołanie wcześniej zdefiniowanej funkcji.

Bardzo przydatna jest też pętla Do, która wykonana będzie albo określoną liczbę razy, albo po wszystkich elementach listy. Przykładowo, by wydrukować kolejne sześciany liczb 1-10, posłużymy się wyrażeniem Do[Print[i^3], {i, 10}].

Nieoceniona będzie też funkcja Solve, za pomocą której szybko znajdziemy rozwiązania równań. Przykładowo pierwiastki równania kwadratowego x^2+5x-3=0 wyliczymy poleceniem Solve[x^2+5x-3==0,x].

Dokumentacja

Mnogość funkcji Wolfram Language nie powinna odstraszać. Jeśli nasza Malina jest podpięta do Sieci, dla każdej z nich uzyskamy (po angielsku) dokładną dokumentację, poprzedzając jej nazwę znakiem zapytania, np. ?Integrate. Możemy też wyszukiwać funkcje po nazwie, wpisując * jako wieloznacznik, co powoduje zwrócenie wszystkich funkcji, które zawierają dany ciąg.

Kompletna dokumentacja języka znajduje się na stronach Wolfram Research. Dobrym wprowadzeniem dla zainteresowanych programowaniem jest dostępna online książka An elementary introduction to the Wolfram Language, która omawia nie tylko struktury danych i przedstawia popularne algorytmy, ale też pokazuje, jak wykorzystać Mathematikę w połączeniu z ogromnymi zbiorami danych przetworzonymi przez maszynę obliczeniową dla wiedzy Wolfram Alpha, łączyć to wiedzą zawartą w Wikipedii, czy nawet samemu tworzyć interaktywne aplikacje webowe.

Szczególnie przydatne dla początkujących będą części poświęcone ogólnemu ujęciu języka i jego składni, oraz przewodnik krok po kroku po Wolfram Language. Wiele przydatnych porad związanych z Mathematiką na Raspberry Pi znajdziemy zaś na forum społeczności.


Wydajność

Wiele osób może mieć wątpliwości co do sensu uruchamiania tak wymagającego oprogramowania jak Mathematica na Raspberry Pi. I o ile faktycznie w wypadku pierwszej generacji Malin te wątpliwości były uzasadnione, używanie programu graniczyło z niemożliwością (szczególnie przy interaktywnych operacjach na grafice), to w wypadku Raspberry Pi 2 jest już znacznie lepiej. To wciąż nie jest poziom komputera osobistego, nawet starszej daty, ale pamiętajmy, że gdy program firmy Wolfram Research zadebiutował 28 lat temu na rynku, najmocniejsze pecety wykorzystywały procesory Intel 80386.

Przedstawione przez producenta oprogramowania wyniki benchmarków pokazują, że nie jest źle: Mathematica na podkręconym Raspberry Pi 2 jest średnio pięciokrotnie szybsza niż na bazowym Raspberry Pi model B – i tylko sześciokrotnie wolniejsza niż na laptopie z procesorem Core 2 Duo. Użyteczność podkręcania pokazują też testy przeprowadzone przez społeczność serwisu stackexchange, gdzie efekt dodatkowych megaherców widać szczególnie w szybkości obliczania funkcji elementarnych.

Niestety najgorzej ta darmowa malinowa Mathematica będzie sprawdzać się przy operacjach na macierzach. Z przeprowadzonych przez nas testów na PC i Raspberry Pi widać, że różnice mogą sięgać nawet trzech rzędów wielkości. To efekt wykorzystania w programie bibliotek matematycznych wysoce zoptymalizowanych pod kątem procesorów Intela. W zastosowaniach szkolnych, edukacyjnych, gdzie raczej nie będziemy rozwiązywać realnych problemów wiązań molekularnych czy optyki geometrycznej, da się to znieść. Warto za to podkreślić, że w porównaniu do interpretera języka Python na Raspberry Pi, jest w numerycznych obliczeniach Mathematica wyraźnie szybsza.

Czas na naukę

Po oswojeniu się z podstawowymi możliwościami Mathematiki warto zastosować ją do rozwiązywania typowych zadań, jakie możemy napotkać w szkole czy na studiach. W kolejnej części naszego „malinowego” cyklu pokażemy, w jaki sposób to zrobić.

Zapewne wielu z Was zainteresowanych jest rozwiązaniami typu krok po kroku – tu niestety mamy złą wiadomość. Sposoby, w jakie Mathematica rozwiązuje dziś swoje problemy, niewiele mają wspólnego z tym, co znajdziecie w normalnych podręcznikach matematyki. Stare wersje programu dysponowały funkcjami WalkD i RunD, pozwalającymi zobaczyć operacje różniczkowania i całkowania krok po kroku, ale dziś już ich nie ma. Pokażemy za to, jak wykorzystać do podobnych celów Wolframa Alpha z poziomu Mathematiki.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.