Notice: Undefined index: mode in /home/misc/mst/public_html/common.php on line 63 Notice: Undefined index: mode in /home/misc/mst/public_html/common.php on line 65 Notice: Undefined index: mode in /home/misc/mst/public_html/common.php on line 67 Notice: Undefined index: mode in /home/misc/mst/public_html/common.php on line 69 Notice: Undefined variable: base in /home/misc/mst/public_html/lecture.php on line 36 Obliczenia naukowe – 1. Potrzeba i ból obliczeń numerycznych – MIM UW

Zagadnienia

1. Potrzeba i ból obliczeń numerycznych

Matematyka komputerowa z biegiem czasu stała się nie tylko fetyszem nowoczesności, ale także realną koniecznością — zwłaszcza w matematyce stosowanej. Osoba z nowoczesnym wykształceniem matematycznym powinna więc umieć skorzystać z pakietu komputerowego wspomagającego warsztat matematyka. Z drugiej strony, powinna także być świadoma nie tylko możliwości, ale także ograniczeń używanych narzędzi.

W niniejszym wykładzie zrobimy dość ogólny przegląd dostępnych narzędzi oraz potencjalnych problemów związanych ze stosowaniem komputerowego wspomagania podczas uprawiania matematyki.

Dlatego naszym celem podczas wykładu będzie

  • osiągnięcie sprawności w korzystaniu z systemu obliczeń naukowych i umiejętności wyszukiwania jego nowych funkcji, potrzebnych do rozwiązania nowego problemu;

  • wyrobienie w sobie głębokiego krytycyzmu odnośnie uzyskanych wyników; nawyku ich weryfikacji metodami komputerowymi i pozakomputerowymi.

W życiu codziennym tak często korzystamy z komputera, że już niemal w pełni uzależniliśmy się od tej technologii. Przecież nie wyobrażamy sobie życia bez elektronicznej obsługi w banku i sklepie, bez komputerowego wyszukiwania informacji; z trudem przychodzi nam napisać list bez pomocy edytora tekstu. Komputery od swych początków znalazły sobie także poczesne miejsce w naukach ścisłych, ale głównie jako bardzo sprawne, wielkie kalkulatory. Od lat 70. ubiegłego stulecia komputery torują sobie uparcie drogę także w stronę zastosowań w dziedzinach nauki dotychczas zastrzeżonych dla ludzi, związanych z szeroko rozumianym myśleniem. Także w matematyce.

Przyzwyczajeni do niezawodności komputerów (któż z nas po każdej płatności kartą sprawdzałby nerwowo zgodność stanu konta?) zapominamy, że — jak każdy wytwór człowieka — komputery są też niedoskonałe. Oswoiliśmy się z myślą, że albo komputer działa dobrze, albo źle, a jak już działa źle, to w efekcie zawiesza się. Tymczasem sytuacja jest o wiele bardziej skomplikowana.

Zwłaszcza w matematyce, jak w żadnej innej dziedzinie wspomaganej komputerem, możemy paść ofiarą zbytniej ufności w możliwości maszyny. Może okazać się, że wynik działania komputera będzie wyglądać sensownie, ale w istocie będzie całkowicie fałszywy — a komputer nie da nam najmniejszego znaku, że coś poszło nie tak, jak powinno. Wykorzystanie komputera w matematyce najczęściej nie zwalnia od posiadania gruntownej wiedzy matematycznej: komputer będzie jedynie przystawką do intelektu użytkownika, a specjalistyczne oprogramowanie — okazją do sprawdzenia jego kultury matematycznej i przytomności umysłu.

W takim razie, po co używać tych narzędzi, skoro nie można im bezgranicznie ufać? Odpowiedź jest taka sama, jak na pytanie, po co robić eksperymenty w naukach przyrodniczych, skoro zawsze obarczone są błędem pomiarowym: po prostu nic lepszego nie mamy i dlatego musimy na wiele sposobów zabezpieczyć się przed zafałszowaniem wyników. Zatem obliczenia naukowe są tylko jeszcze jednym (ułomnym jak wszystko, co ludzkie) sposobem eksperymentowania, a nie — źródłem prawdy absolutnej.

1.1. Przegląd metod i narzędzi

1.1.1. Rachunek symboliczny kontra obliczenia numeryczne

1.1.1.1. Rachunek symboliczny

Umiejętność znalezienia rozwiązań abstrakcyjnego zadania matematycznego może dać nam wgląd we właściwości modelowanych zjawisk. Mało tego, wyrażając rozwiązanie w zależności od parametrów zadania, za pomocą wzoru, możemy wprost stwierdzić, jak ich zmiana wpływa na zachowanie się rozwiązania. Dlatego taką wagę przykładamy w matematyce do rachunku symbolicznego, gdzie operacje prowadzi się na abstrakcyjnych symbolach. Wydawać by się więc mogło, że komputerowe systemy obliczeń symbolicznych (Computer Algebra Systems, CAS) byłyby idealnym narzędziem w pracy matematyka stosowanego. Prowadząc rachunki symboliczne, dokonujemy matematycznych przekształceń pewnych wyrażeń zawierających abstrakcyjne symbole matematyczne. Są to więc w naturalny sposób rachunki dokładne \ldotso ile oczywiście nie pomylimy się w trakcie przekształceń! Niestety, takie pomyłki zdarzają się nie tylko ludziom, ale także najlepszym pakietom komputerowym CAS.

1.1.1.2. Obliczenia numeryczne

Z drugiej strony, czasem nie tyle chodzi nam o wzór na rozwiązanie ogólnego problemu, ale raczej o wartość liczbową konkretnego rozwiązania konkretnego problemu. Wynik numeryczny — czyli konkretna liczba w postaci dziesiętnej, z ustaloną liczbą wyznaczonych cyfr znaczących — jest wynikiem przybliżonym. Mało tego, on z natury jest wynikiem przybliżonym, bo

  • dane potrzebne do jego uzyskania (np. eksperymentalnie wyznaczana ,,stała” przyspieszenia ziemskiego g\approx 9.81) są znane jedynie w przybliżeniu

  • obliczenia wykonywane są przez jednostkę arytmetyczną procesora, która wykonuje działania matematyczne z ograniczoną precyzją (tzw. arytmetyka zmiennoprzecinkowa).

Wydaje się więc, że w porównaniu z nieskończoną dokładnością wyników rachunków symbolicznych, obliczenia numeryczne są mniej wartościowe. Jednak, co zaskakujące, tak wcale nie jest! Korzystając z obliczeń numerycznych, można odpowiedzieć na pytanie o przybliżoną wartość rozwiązania konkretnego zadania także wtedy, gdy rachunek symboliczny zawodzi2Na niektóre pytania o jakościowe cechy rozwiązań zadań matematycznych można również odpowiedzieć na gruncie czystej teorii. — na przykład, kiedy nie daje się wyznaczyć jawnego wzoru na rozwiązanie.

1.1.1.3. Porównanie

Spróbujmy podsumować podobieństwa i różnice rachunków: symbolicznego i numerycznego. Bezsprzecznie, rachunek symboliczny jest kwintesencją matematyki czystej. Przeprowadzenie go od ogólnie sformułowanego zadania z parametrami do końcowego, eleganckiego rozwiązania (na przykład: wzoru) wymaga zazwyczaj dużej wiedzy matematycznej, finezji, szczęścia. Bywają jednak zadania, w których nie jesteśmy w stanie podać precyzyjnej formuły na rozwiązanie — na przykład nie można wyznaczyć funkcji pierwotnej dla e^{{-x^{2}}} w terminach funkcji elementarnych.

O ile więc rachunek symboliczny może być (nomen omen) symbolem matematyki czystej, o tyle rachunek numeryczny jest koniem pociągowym matematyki stosowanej. Modele matematyczne i inne zadania, z jakimi spotykają się w życiu zawodowym osoby korzystające z matematyki jako narzędzia pracy (inżynierowie, analitycy bankowi, biolodzy, fizycy, ekonomiści, …) są najczęściej na tyle skomplikowane, że badanie ich metodami matematyki teoretycznej często jest niemożliwe, bardzo trudne, albo nieopłacalne. Natomiast metody numeryczne bardzo dobrze sobie radzą z takimi zadaniami.

Tak więc, dwa rachunki — symboliczny i numeryczny — uzupełniają się.

  • W idealnym przypadku na wszystkie pytania dotyczące zadanego modelu matematycznego powinniśmy udzielić wyczerpujących odpowiedzi, opierając się wyłącznie na gruncie teorii. Jednak w wielu praktycznych zadaniach jest to bardzo trudne, gdyż może być zbyt czasochłonne lub najzwyczajniej wykraczać poza nasze możliwości. Tam, gdzie finezja matematyka–teoretyka nie jest w stanie sobie poradzić z zadaniem, znakomitym ratunkiem jest wykorzystanie rachunku numerycznego. Najczęściej tak jest, gdy problem ma bardzo wiele parametrów, które nie mają sztywno ustalonych wartości, albo gdy po prostu nie sposób go rozwiązać podając wzór na rozwiązanie, albo gdy akurat nie mamy pod ręką dostatecznie sprawnego matematyka, który w dodatku ma czas na poświęcenie sie naszemu problemowi. Matematykę obliczeniową bezsprzecznie najlepiej uprawia się z pomocą szybkiego komputera i często brutalna siła tysięcy (milionów?) obliczeń — wykonywanych przez nieraz całkiem wyrafinowane algorytmy — prowadzi do oczekiwanego przez nas rezultatu. Musimy jednak pamiętać, że nawet w wyjątkowo trudnych przypadkach może być wciąż dodatkowo potrzebna ludzka wiedza matematyczna, zręczność programistyczna i pomysłowość.

  • Tam, gdzie rachunki numeryczne zawodzą (na przykład, gdy mamy do czynienia z szeroko pojętymi nieskończnościami, albo gdy zadanie jest zbyt abstrakcyjne, albo gdy dostępna precyzja obliczeń jest zbyt mała do prawidłowego przeprowadzenia symulacji) — tam trzeba wrócić na trudną drogę i korzystać z metod matematyki czystej, ,,teoretycznej”. Czasem może wspomóc ją oprogramowanie potrafiące przeprowadzić żmudne (te nudne!) rachunki symboliczne, jednak i te wyliczenia powinien sprawdzić człowiek: systemy CAS są wciąż mocno niedoskonałe.

Komputerowy rachunek numeryczny ma znacznie dłuższą historię, przez co wydaje się znacznie dojrzalszy od komputerowych narzędzi do obliczeń symbolicznych. Z drugiej jednak strony, spektrum zadań, które mogą być stawiane przed systemami algebry komputerowej jest znacznie szersze od klas zadań ulegających metodom numerycznym. Jasne jest, że ideałem byłby system hybrydowy, wybierający — w zależności od konkretnego zadania — albo rachunek symboliczny, albo numeryczny, albo jakąś ich miksturę, w zależności od tego, co najlepiej zadziała w danej sytuacji. Niestety, żaden istniejący system nie posiadł w pożądanym stopniu tej cechy. Co więcej, nawet potencjalnie najdoskonalszy ,,system” — człowiek — również często może mieć z tym kłopoty…

Podsumujmy:

Metoda rachunku numeryczny symboliczny
Możliwość rozwiązywania trudnych zadań praktycznych zazwyczaj tak zazwyczaj nie
Wielość metod o różnej skuteczności tak tak
Wymaga wiedzy wykraczającej poza rozwiązywane zadanie najczęściej tak najczęściej nie
Wynik skończony zestaw liczb lub rysunek wzór lub informacja o charakterze rozwiązania
Potrafi działać na abstrakcyjnych obiektach nie tak
Dobrze radzi sobie z nieskończonościami zazwyczaj nie zazwyczaj tak
Dobrze radzi sobie z mnogością parametrów tak nie
Precyzja wyniku ograniczona teoretycznie nieskończona
Ostateczna jakość wyniku niepewna niepewna

Ostatni wiersz tabeli może być szokujący.

Jak to?! Prowadząc rachunek symboliczny można nie być pewnym ostatecznego wyniku?!!

Tak właśnie jest, niezależnie od tego, czy rachunek prowadzi maszyna, czy człowiek.

Z kolei rachunek numeryczny ze swej natury jest obarczony niepewnością dlatego, że wszystkie wykonywane obliczenia mają ograniczoną (choć całkiem dużą) dokładność. Co gorsza, okazuje się, że nawet proste obliczenia numeryczne mogą prowadzić do wielce niedokładnych wyników… Na szczęście ten fakt jest powszechnie znany i praktycznie każdy podręcznik metod numerycznych zawiera informacje na ten temat, zob. np. serwis http://wazniak.mimuw.edu.pl i literaturę tam cytowaną.

Co więc wybrać? Jakie podejście? Niestety, nie ma prostej odpowiedzi. Decyzja wymaga zazwyczaj pewnej wiedzy, doświadczenia, intuicji. A te cechy można rozwinąć tylko przez samodzielną pracę.

1.1.2. Środowiska komputerowe wspomagające pracę matematyczną

W świetle tego, co dotychczas zostało powiedziane, wydawać by się mogło, że matematyczne pakiety komputerowe będą dzielić się na pakiety numeryczne i pakiety symboliczne — i popularnie rzeczywiście takie rozróżnienie się przyjmuje. W rzeczywistości jednak, oprogramowanie matematyczne dzieli się na następujące dwie grupy:

Pakiety numeryczne

Są wyspecjalizowane w prowadzeniu szybkich obliczeń numerycznych w dużej skali i mają także bogate możliwości graficznej wizualizacji wyników. Zwykle polecenia dostępne w pakietach numerycznych przewyższają pod względem skuteczności obliczeń ich analogony z pakietów wielozadaniowych.

Pakiety wielozadaniowe

Przede wszystkim koncentrują się na obliczeniach symbolicznych, ale również udostępniają funkcje numeryczne i wizualizacyjne, a nawet dają możliwości składu tekstów matematycznych. Z biegiem lat, liczba i jakość funkcji obliczeń numerycznych w tych pakietach zwiększa się, bo — jak już stwierdziliśmy w rozdziale 1.1.1 — te dwie formy prowadzenia rachunków matematycznych uzupełniają się. Ze względu na nacisk na obliczenia symboliczne, czasem w skrócie, dla odróżnienia od pakietów czysto numerycznych, pakiety wielozadaniowe nazywane są pakietami obliczeń symbolicznych, bądź systemami algebry komputerowej (CAS), czy też wręcz po prostu pakietami matematyki komputerowej..

Najprawdopodobniej przyszłość należy do zintegrowanych środowisk wielozadaniowych. Jednak bieżąca praktyka wciąż uczy, że na razie lepiej korzystać z kilku wyspecjalizowanych pakietów, niż z jednego wielozadaniowego. Wciąż podstawowym narzędziem komputerowym matematyki stosowanej są (czasem bardzo złożone) obliczenia numeryczne.

Wszystkie popularne pakiety matematyczne (numeryczne i symboliczne) są konstruowane w sposób niezależny od platformy sprzętowej i dlatego dostępne dla wszystkich popularnych systemów operacyjnych komputerów osobistych, takich jak: Windows, Linux, czy MacOS, a także dla superkomputerów.

Poniżej przedstawiamy przegląd wybranych programów komputerowych przydatnych w szeroko rozumianych obliczeniach naukowych.

1.1.2.1. Pakiety numeryczne

MATLAB

W końcu lat siedemdziesiątych ubiegłego wieku, Cleve Moler wpadł na pomysł stworzenia prostego interfejsu do ówcześnie istniejących bibliotek numerycznych algebry liniowej. Stworzone przez niego: język skryptów i łatwe w użyciu narzędzia manipulacji macierzami, zdobyły wielką popularność w środowisku naukowym. W 1984 roku Moler skomercjalizował swe dzieło pod nazwą MATLAB (od: ,,Matrix Laboratory”).

Rys. 1.1. Typowa sesja MATLABa. Zwróć uwagę na edytor kodu źródłowego na bieżąco interpretujący go i wychwytujący potencjalne błędy.

MATLAB wkrótce rozrósł się potężnie, implementując (lub wykorzystując) wiele najlepszych z istniejących algorytmów (lub gotowych bibliotek) numerycznych, a także oferując przebogate możliwości wizualizacji wyników. Dzięki swemu interfejsowi, składającemu się z prostych, niemal intuicyjnych funkcji, oraz ogromnym możliwościom jest jednym z powszechniej używanych pakietów do prowadzenia symulacji komputerowych w naukach przyrodniczych i technicznych.

Octave

Kierując się podobnymi przesłankami co Moler, oraz bazując na wielkim sukcesie MATLABa, John W. Eaton z Wydziału Inżynierii Chemicznej Uniwersytetu Wisconsin w USA, zaczął w 1994 roku opracowywać darmowe (udostępniane na tzw. licencji GPL) oprogramowanie o funkcjonalności maksymalnie zbliżonej do MATLABa: Octave. Wersja 1.0 pakietu Octave ukazała się w 1996 roku i jest intensywnie rozwijana do dziś. Octave czasem nazywany jest darmowym klonem MATLABa, ze względu na bardzo wysoki stopień zgodności poleceń Octave'a i MATLABa. W naszym kursie skoncentrujemy się właśnie na pakiecie Octave.

Rys. 1.2. Sesja Octave. W terminalu otwarta sesja w ascetycznym trybie tekstowym, grafika wyświetlana z wykorzystaniem Gnuplota.
Scilab

Drugim udanym klonem MATLABa jest francuski Scilab, opracowany w laboratoriach INRIA i wciąż doskonalony. Na plus tego pakietu należy zaliczyć m.in. znacznie bardziej rozbudowany niż w Octave zestaw funkcji podstawowych, na minus — przede wszystkim znacznie mniejszy stopień zgodności z MATLABem, a poza tym niewygodny system pomocy oraz ,,toporną” (choć o dużym potencjale) grafikę.

Rys. 1.3. Sesja Scilaba..

1.1.2.2. Pakiety wielozadaniowe

Maxima

Jest to chyba najbardziej dojrzałe darmowe środowisko obliczeń symbolicznych, dlatego poświęcimy mu nieco więcej miejsca niż pozostałym. Maxima powstała w wyniku ewolucji systemu Macsyma4Nazwa pochodzi od angielskiego Project MAC's Symbolic Manipulator., opracowanego na początku lat siedemdziesiątych ubiegłego stulecia w Massachussets Institute of Technology (MIT) w USA. System zaprogramowano w języku Lisp i implementowano na kilku dostępnych w tamtym czasie komputerach typu mainframe. Był to pierwszy poważny system obliczeń symbolicznych i jego koncepcja wpłynęła w wielkim stopniu na późniejsze systemy, takie jak Mathematica, czy Maple (ich składnia jest w dużym stopniu wzorowana na Macsymie). Lata 80. to etap burzliwy w dziejach Macsymy: z jednej strony, pojawiają się pierwsze implementacje na maszynach Unix'owych, z drugiej strony, jest podejmowanych kilka nieudanych prób komercjalizacji tego systemu, co w efekcie doprowadziło do stagnacji rozwoju i pełnej utraty rynku5M.in. zupełnie zaniedbano błyskawicznie rozwijający się segment komputerów osobistych.. W tym czasie pojawiło się wiele gałęzi rodowych tego systemu o podobnie brzmiących nazwach; jedną z nich była tzw. DOE Macysma, rozwijana przez prof. Williama Scheltera od 1982 roku. W 1998 roku otrzymał on zezwolenie na pełne upublicznienie tej wersji kodu i od tamtej pory DOE Macsyma trafiła do puli wolnego oprogramowania (na tzw. licencji GPL), pod obecną nazwą Maxima. W. Schelter zmarł nagle w 2001 roku, lecz dzięki temu, że projekt zadomowił się wcześniej w społeczności twórców wolnego oprogramowania — software przetrwał i rozwija się aż po dzień dzisiejszy.

Maxima jest systemem starym, z jednej strony z tradycjami, ale z drugiej strony wyraźnie niedoinwestowanym w ostatnich latach; jak trafnie punktuje konkurencja, m.in. brak w niej wszystkich usprawnień wprowadzanych do komercyjnych wersji Macsymy przez całe lata 80. Brak także szybkich procedur numerycznych (które miała wersja komercyjna, korzystająca z profesjonalnej biblioteki numerycznej IMSL, a potem także z LAPACKa). Jej komercyjni rywale odnieśli druzgocące zwycięstwo na rynku, pozostawiając open-source'owej Maximie niszę w postaci zastosowań w tych obszarach, gdzie zakup (skądinąd niebywale drogich) licencji na wiodące oprogramowanie komercyjne jest niemożliwy lub ekonomicznie nieuzasadniony. Jest ona także bardzo wdzięcznym polem do popisu dla osób pragnących wspomóc swoim intelektem i pracą społeczność twórców i użytkowników wolnego oprogramowania, a w ten sposób — zdobyć bardzo cenne doświadczenie.

Rys. 1.4. Sesja Maximy.

System Maxima jest przede wszystkim zorientowany na rachunki symboliczne, choć możliwe są w nim także obliczenia numeryczne (i to w dowolnej precyzji, przez co wykonują się bardzo wolno). Interfejs użytkownika jest bardzo przyjemny, w mojej ocenie nawet lepszy od systemów komercyjnych. Wybrane procedury mają także swoje numeryczne odpowiedniki6Niestety, część z nich nie może korzystać z możliwości zwiększenia precyzji obliczeń. — lecz zwykle o innej nazwie, co jest mniej eleganckie w porównaniu np. z konsekwentnym rozwiązaniem zastosowanym w Mathematice. Maxima ma kilka znanych słabości (m.in. rozwiązanie bardzo ważnego w praktyce zagadnienia upraszczania wyników pozostawia bardzo wiele do życzenia; także numeryka poważnie kuleje), jednak wciąż jest to system zupełnie dobry dla okazjonalnych użytkowników.

Maple

Środowisko obliczeń symbolicznych stworzone7Był to odruch desperacji wobec faktu, że w owym czasie system Macsyma wymagał bardzo drogiego sprzętu komputerowego — w rzeczywistości firma posiadająca prawa dystrybucji Macsymy uważała ją za jeden ze sposobów zwiększenia sprzedaży własnych (dużych) komputerów. w roku 1981 przez Symbolic Computation Group na Uniwersytecie Waterloo (Kanada), a następnie w roku 1988 skomercjalizowane. Obecnie jest to bardzo zaawansowane środowisko obliczeń symbolicznych. Ma także bogate możliwości wizualizacyjne oraz coraz lepsze funkcje numeryczne (w części numerycznej opiera się na bardzo dobrych bibliotekach NAG). Okazjonalnemu użytkownikowi zapewne spodoba się rozbudowany system pomocy, z licznymi przykładami zastosowania każdej funkcji systemu.

Mathematica

Zaawansowane, a przy tym niesłychanie popularne środowisko — głównie obliczeń symbolicznych. Ma także bogate możliwości numeryczne i graficzne. Jego niewątpliwą zaletą jest bardzo spójny, konsekwentny sposób wydawania poleceń (choć z początku trzeba się z nim chwilę oswoić). Mathematica została stworzona w roku 1988 przez Stephena Wolframa i jego współpracowników, od początku z myślą o użytkownikach komputerów osobistych — najpierw Macintosh, lecz szybko doczekała się implementacji na wszystkie wówczas popularne systemy komputerów osobistych i stacji roboczych (MS Windows, SunOS, NeXT). Bardzo popularna na uniwersytetach, także za sprawą znakomitych podręczników oraz elegancji składni, preferującej styl programowania funkcyjnego.

Axiom

Bardzo powikłane są losy ciekawego skądinąd systemu Axiom. Jego prekursorem był Scratchpad firmy IBM, rozwijany od początku lat 70. ubiegłego stulecia. Po zmianie strategii IBM na początku lat 90. został on zakupiony przez potentata oprogramowania dla obliczeń numerycznych, NAG Ltd, i wówczas zmienił nazwę na obecną. Niestety, system nie odniósł komercyjnego sukcesu i z tego powodu NAG zdecydowała się w 2001 roku udostępnić program i jego kody źródłowe (niestety z pewnymi wyjątkami, dotyczącymi Aldora, kompilatora bibliotek Axioma) jako wolne oprogramowanie. W ten sposób Axiom tylko częściowo trafił do społeczności wolnego oprogramowania i m.in. dlatego wciąż nie zyskał sobie popularności. Jednak wszystko wskazuje na to, że już wkrótce całość Axiom/Aldor będzie udostępniona jako open source.

1.1.2.3. Pakiety uzupełniające

Nie należy zapominać o pakietach, które także oferują możliwości prowadzenia wielu obliczeń matematycznych, zarówno na poziomie codziennej użyteczności metod matematycznych, jak i na poziomie wyrafinowanych zastosowań profesjonalnych. Poniżej wymieniamy kilka najpopularniejszych i ich cechy charakterystyczne.

Excel

Znakomity arkusz kalkulacyjny (składnik pakietu biurowego Microsoft Office), dający narzędzia prowadzenia, na danych liczbowych, prostych obliczeń matematycznych (także statystycznych) oraz ich wizualizacji niezbędnych w życiu codziennym. Należy wszak pamiętać, że arkusze kalkulacyjne (Excel i OpenOffice Calc) starają się ukryć przed użytkownikiem to, że precyzja ich obliczeń jest ograniczona, przez co tym groźniejsze mogą być czynione przez nie błędy zaokrągleń!8Spróbuj np. w komórce A1 arkusza wpisać liczbę 1,1, i do komórki obok wpisać formułę =10*(A1-1)+0,1. Następnie przeciągnij za uchwyt wypełniania i skopiuj tę formułę do kolejnych dwudziestu komórek na prawo tak, że np. w komórce L1 będzie formuła =10*(K1-1)+0,1. Gdyby obliczenia wykonywały się w nieskończonej precyzji, w każdej z komórek dostałbyś ten sam wynik 1.1. I faktycznie, arkusz przekonuje Cię, że w pierwszych paru komórkach tak jest faktycznie (jeśli chcesz, to sprawdź, że =B1-A1 daje jakoby dokładnie zero (nie zapomnij nadać wynikowi ,,formatu naukowego” — Excel domyślnie wyświetla wyniki z dokładnością do dwóch cyfr po przecinku). Jednak, jak możesz przekonać się na własne oczy, wcale tak nie jest! (Przykład zaczerpnięty z wykładu C. Wolframa)

Rys. 1.5. Excel/Calc nie prowadzi dokładnych rachunków na ułamkach dziesiętnych, chociaż czasem udaje, że tak. (Na obrazku: OpenOffice Calc).

Niektórzy są do tego stopnia zachwyceni możliwościami obliczeniowymi arkusza kalkulacyjnego, że propagują nawet wykonywanie w nim zaawansowanych obliczeń naukowych [8]. My jednak stoimy na stanowisku, że do konkretnych zadań należy dobierać właściwe narzędzia i z tej pozycji odradzamy stosowanie w obliczeniach naukowych Excela i mu podobnych: z pewnością można skuteczniej je prowadzić w środowiskach takich jak Octave.

OpenOffice Calc

Darmowy odpowiednik Excela o równie potężnych możliwościach. Składnik pakietu biurowego OpenOffice.org, gruntownie omawiany w ramach kursu Przysposobienia informatycznego.

S i S-plus

www.insightful.com Komercyjny.

Wielce popularny i bardzo mocny program do prowadzenia profesjonalnych analiz statystycznych.

R

Darmowy i znakomity odpowiednik S. De facto standard analizy statystycznej. O stopniu jego dojrzałości niechaj świadczy perfekcyjna dokumentacja oraz znaczna liczba publikacji naukowych wykorzystujących ten pakiet do analizy danych.

Rys. 1.6. Pakiet R w akcji.
SAS

http://www.sas.com Komercyjny.

Bardzo zaawansowane narzędzie analizy (głównie statystycznej) wielkich zbiorów danych, używane m.in. w bankowości.

AVS

http://www.avs.com Komercyjny.

Narzędzie profesjonalnej wizualizacji danych naukowych.

OpenDX

Darmowy, lecz wysokiej jakości odpowiednik AVS, bezpośredni spadkobierca komercyjnego Data Explorera, którego całość kodu źródłowego producent, IBM, upublicznił i dalej wspiera jego rozwój na zasadach wolnego oprogramowania.

System może być używany zarówno jako niezależne środowisko do wizualizacji danych wczytywanych w odpowiednim formacie z pliku, a także jako biblioteka wywoływana z poziomu innego programu. Typowy przebieg pracy z OpenDX, podobnie jak z każdym innym systemem wizualizacji danych, ma cztery etapy:

  1. wybór danych do wizualizacji, przygotowanie ich w formacie strawnym dla OpenDX;

  2. wczytanie danych do OpenDX;

  3. wstępna obróbka, np. wybór skali kolorów, rodzaju wizualizacji, itp.

  4. obrazowanie i interpretacja danych oraz dalsza manipulacja obrazem (wydobywanie ukrytych informacji) — a więc w rzeczywistości ,,goto 1.1.2.3”.

Pierwszy etap pracy przebiega na zewnątrz OpenDX — jest zadaniem aplikacji generującej dane podlegające późniejszej wizualizacji. To aplikacja prowadząca symulację numeryczną musi zapisać wyniki w jednym z formatów strawnych dla OpenDX. Drugi etap, czyli wczytanie danych do OpenDX, w przypadku standardowych danych jest całkiem prosty, gdyż OpenDX dysponuje narzędziem wspomagającym import danych, tzw. Data Prompterem.

Kluczem do dobrej wizualizacji jest krok trzeci, czyli wstępna obróbka danych przy użyciu narzędzi udostępnianych przez OpenDX. Obróbka odbywa się w sposób dosyć spektakularny, mianowicie poprzez łączenie ze sobą podstawowych modułów takich jak: nadawanie koloru, definiowanie przekrojów, wyznaczanie gradientów, itp. Takie połączone ze sobą moduły tworzą wspólnie sieć wizualizacyjną. Praca z OpenDX polega głównie na utworzeniu i kolejnych modyfikacjach sieci wizualizacyjnej.

Krok czwarty to wykorzystanie możliwości interakcyjnych OpenDX oraz dalsza modyfikacja sieci wizualizacyjnej dla osiągnięcia zamierzonego efektu.

ParaView

Jednym z alternatywnych dla OpenDX narzędzi wizualizacji dużych zbiorów danych naukowych jest ParaView [22] — wspólny projekt Kitware oraz amerykańskich rządowych laboratoriów Sandia i Livermore. System ten jest oparty na uznanej i wciąż rozwijanej bibliotece procedur wizualizacyjnych VTK (Visualization ToolKit) [31] — i na swój sposób stanowi wygodny, okienkowy interfejs do tej biblioteki. Podobnie jak OpenDX, ParaView daje możliwość wczytywania danych w rozmaitych zewnętrznych formatach, ale głównie wspiera formaty opracowane dla biblioteki VTK. Zasadniczym mankamentem ParaView jest to, że jego dokumentacja [23], w przeciwieństwie do samego programu, nie jest darmowa.

Screenshot okna ParaView
Rys. 1.7. Wizualizacja trójwymiarowego pola skalarnego w ParaView.

1.1.2.4. Podstawowe zasady bezpieczeństwa i higieny pracy z pakietami matematycznymi

  • Nigdy nie wierz na ślepo wynikom, ani tym bardziej ich wizualizacji. Użycie komputera nie zwalnia od myślenia.

  • Gdy tylko to możliwe, korzystaj z opcji uzyskania informacji9Z reguły, łatwiej takie informacje otrzymać w pakietach numerycznych; pakiety symboliczne najczęściej starają się działać na zasadzie ,,czarnej skrzynki”. o zastosowanej metodzie, o szacowanym błędzie wyniku, o przyczynach nie rozwiązania zadania.

  • Pakiety mogą dawać błędną odpowiedź nawet wtedy, gdy wykonywane są jedynie rachunki symboliczne.

  • Dokładny wzór na rozwiązanie nie zawsze jest najlepszym rozwiązaniem zadania.

  • Niewielkie zaburzenie parametrów zadania może spowodować kolosalne zmiany rozwiązania.

  • Szybciej nie zawsze znaczy: lepiej.

  • Ludzka ingerencja w rachunki symboliczne prowadzone na bieżąco na komputerze, zazwyczaj prowadzi do znacznego zwiększenia elegancji końcowych wyników.

  • Nie warto uruchamiać programów obliczeniowych metodą prób i błędów, ,,aż się skompiluje”: to dobra metoda na wprowadzenie do kodu subtelnych i bardzo trudnych do wykrycia pomyłek.

  • Większość zadań dotyczących teoretycznych właściwości modelu nie daje się rozwiązać za pomocą symbolicznych rachunków na komputerze. Jednak są duże szanse, że Tobie uda się je zbadać bez pomocy komputera, dzięki doświadczeniu i specjalistycznej wiedzy.

  • Ładny rysunek nie musi być wykresem prawdziwego rozwiązania.

Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.

Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.