Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Python w obliczeniach naukowych i inżynierskich

Powszechnie uważa się, że język programowania Python i wydajność to dwa pojęcia, które się wzajemnie wykluczają. Co zatem sprawia, że Python stanowi podstawę kilku programów do obliczeń naukowych i inżynierskich? Python jest językiem interpretowanym, stosującym dynamiczne typowanie (podobnie jak Matlab). Posiada prostą i czytelną składnię oraz dużą liczbę bibliotek/modułów. Wiele środowisk programistycznych (np. Eclipse+Pydev) i notatników (np. SciTe) wspiera Pythona. Całość uzupełnia Sphinx - prosty i elastyczny generator dokumentacji.

Do programów (a właściwie dystrybucji) przeznaczonych do obliczeń naukowych i inżynierskich zaliczamy:

- SageMath
- Python(x,y)
- Enthought Python Distribution

r   e   k   l   a   m   a

Stanowią one zbiór bibliotek, modułów i aplikacji. Cześć z nich została w całości lub zdecydowanej większości napisana w C, np. NumPy - podstawa każdej z tych dystrybucji.

Najbardziej znany jest Sage. Do jego promocji przyczynia się aktywny udział w serwisach społecznościowych. SageMath znajdziemy m.in. na facebooku, twitterze, friendfind, LinkedIn. Informacje na temat rozwoju możemy uzyskać na blogach, a pomoc na kanale IRC lub grupach dyskusyjnych. Sage stara się być przede wszystkim wolną alternatywą dla komerycjnych pakietów matematycznych jak Magma, Maple, Mathematica i Matlab. Cechą, która wyróżnia Sage jest przede wszystkim interfejs. Poza wierszem poleceń mamy dostępny interfejs w postaci strony www uruchamianej w przeglądarce, tzw. Sage Notebook, który można przetestować również online na stronie projektu. Po zalogowaniu na stronie możemy wykonywać obliczenia "w chmurze", a wyniki publikować w sieci (Przykłady). Proste obliczenia możemy wykonać w WolframAlpha, niestety nie ma tam możliwości pisania skryptów co daje Sage przewagę. Sage zbudowany jest z blisko 100 komponentów o ujednoliconym interfejsie. Jak wypada Sage na tle komercyjnej konkurencji możemy prześledzić w wynikach benchmarków. Na dzień dzisiejszy Sage skierowany jest głównie dla użytkowników Linuksa, dla których zostały przygotowane paczki do niemal wszystkich popularnych dystrybucji, oraz użytkowników MacOS X. Użytkownicy Windowsa mogą skorzystać z wersji przygotowanej pod VirtualBox. Korzystanie z wirtualnej maszyny nie jest jednak najwygodniejszym i najbardziej efektywnym rozwiązaniem. Dlatego użytkownicy Windowsa powinni raczej sięgnąć po drugą pozycję z listy, czyli Python(x,y).

Python(x,y) to zestaw bardzo starannie dobranych bibliotek i narzędzi. Na stronie projektu w dziale standard plugins możemy prześledzić główne komponenty tej dystrybucji wraz z krótkim opisem. Cechą wyróżniającą Python(x,y) jest świetne IDE MATLAB-like - Spyder.

Listę zamyka komercyjna dystrybucja Enthought Python Distribution. EPD został wzbogacony o Intel MKL. Biblioteka ta zapewnia duży wzrost wydajności obliczeń z zakresu algebry liniowej, szczególnie na procesorach Intel. Jak duże są różnice w wydajności możemy przeczytać na blogu. Na blogu tym znajdziemy również ciekawe porównanie NumPy/MKL vs Matlab. Na stronie EPD udostępniono 32-bitową wersję, z której można korzystać przez 30-dni (ograniczenie to nie dotyczy studentów).

Do wizualizacji wyników zarówno w Python(x,y) jak i w EPD poza najpopularniejszą biblioteką matplotlib możemy posłużyć się także Chaco, który umożliwia wykonywanie wykresów 2D oraz Mayavi do zaawansowanych wizualizacji i wykresów 3D.

Każda z tych dystrybucji to przynajmniej kilkaset MB bibliotek i narzędzi. Nie każdy potrzebuje wszystkie te funkcje. Warto zapoznać się z nimi, przetestować i wybrać to co może okazać się przydatne. Podstawę stanowi zwykle oprócz Pythona:

- NumPy - przeznaczone do obliczeń numerycznych
- SciPy - rozszerzające możliwości NumPy o całkowanie numeryczne, optymalizację itd
- SymPy - służące do obliczeń symbolicznych
- matplotlib - wykresy 2D i 3D
- IPython + PyReadline - interaktywna powłoka Pythona

W krótkim wpisie nie da się opisać nawet niewielkiej części możliwości jakie oferują te pakiety, ale informacje tu zawarte mogą być punktem wyjścia do dalszych poszukiwań. 

Komentarze