Metody numeryczne

JeremiaszP/ Wrzesień 13, 2017/ Książki/ 0 comments

Okładka książki

Metody numeryczne Zenona Fortuny, Bohdana Macukowa i Janusza Wąsowskiego to klasyczny podręcznik wprowadzający w metodykę algorytmów i ogólnie „w jaki sposób” zmusić komputer, aby chciał współpracować przy obliczeniach. W niniejszej recenzji biorę na warsztat wydanie VII.  Metody numeryczne zostały wydane nakładem wydawnictwa WNT (grupa wydawnictwa Naukowego PWN).

Całkowanie metodą Newtona- Cotesa

Metody numeryczne to książka, która nie tylko wprowadza czytelnika w zagadnienia rozwiązywania numerycznie zagadnień, ale i ukazuje algorytmy, metody, w jaki sposób optymalizować obliczenia itd. Warto zaznaczyć tutaj, iż komputery nie potrafią „myśleć” abstrakcyjnie – rozwiązywanie zaawansowanych zagadnień takich jak całkowanie i szacowanie odbywa się na zasadzie procedur numerycznych. Przykładem mogą być symulacje przepływu powietrza, których nie sposób obliczyć w sposób analityczny, mimo iż dysponujemy odpowiednimi równaniami. Problem jednak tkwi w szczególe: komputery nie są w stanie w rozsądnym czasie wyliczyć odpowiednich wartości. Taka sama sytuacja jest w chemii kwantowej, fizyce cząstek.

 

Metoda rozwiązywania równań różniczkowych Rungego- Kutty

Metody numeryczne na szczęście (nie tylko jako książka, ale jako dziedzina matematyki stosowanej) dostarczają nam narzędzi, dzięki którym możemy obliczyć dane zagadnienie z dowolną dokładnością (jednakże nie w sposób idealny), pozwalającą na bardzo dobre przybliżenia. Aktualnie metody numeryczne są tak dokładne, że różnica pomiędzy wartością uzyskaną np. w wyniku eksperymentu a przewidywaniem numerycznym, jest zaniedbywalnie mała (aczkolwiek… jest).

Książka Metody numeryczne wymaga od czytelnika przynajmniej podstawowej wiedzy z takich dziedzin jak: równania różniczkowe, metody rozwiązywania równań różniczkowych, całkowanie przybliżone i ogólna teoria aproksymacji (równania liniowe i macierze). W moim przekonaniu książka nie skupia się na „łopatologicznym” wyjaśnianiu poszczególnych zagadnień i dawaniu przepisów krok po kroku. Metody numeryczne pod tym względem skupiają się raczej na pewnym savoir-vivre informatyczno-matematycznym: w jaki sposób do danego problemu podchodzić i na co należy zwracać uwagę. Ogólnie książka skupia się w moim odczuciu bardziej na optymalizacji danych zagadnień i sposobu ich wykorzystywania w obliczeniach – formalnie moglibyśmy całkować wszystko, np. stosując Metodę Monte-Carlo, jednak traci się przez złe zastosowanie danej metody nie tylko czas, ale i … pieniądze.

Optymalizacja to nie jedyny temat książki Metody numeryczne. Podejmowane zagadnienia dotyczą także przejrzystości kodu oraz pewnego rodzaju „kooperacji” matematyka-informatyka. Książka, jeżeli o strukturę chodzi, omawia następujące zagadnienia: interpolację, aproksymację, przybliżone metody rozwiązywania równań nieliniowych, całkowanie numeryczne, równania algebraiczne, wartości własne i wektory własne, równania różniczkowe zwyczajne, równania różniczkowe cząstkowe.

Dla czytelnika, który przeprowadzał obliczenia w pakietach takich jak: Matlab, Mathcad, Sage, Octave, PyLab, R, dużym szokiem (i ja osobiście traktuję to w pewien sposób jako wadę książki) może być kod i listingi, które sugerują autorzy książki Metody numeryczne – są bowiem napisane w językach Turbo Pascal i Fortran. Zdaję sobie sprawę z faktu, że są to pionierskie języki i jeszcze wykorzystywane. Jednak osobiście zdziwiłem się, że w książce nie zmieniono języka np. na aktualnie popularniejszy C++, C, lub wspomniany Python. Dlaczego to jest wada? Osoba, która sięgnie po książkę, może czuć się zagubiona, nawet jeżeli liznęła podstawy programowania. Z drugiej strony muszę zwrócić honor: jeżeli ktoś potrafi programować np. w C++ to listingi z języka Pascal powinien z łatwością przełożyć na C++. A warto, ponieważ Metody numeryczne pokazują tutaj od kuchni proces opracowywania odpowiedniej strategii dotyczącej rozwiązywania danego zagadnienia: korzystając z gotowych programów CAS takich jak Mathematica nie zawsze mamy tę możliwość (nie mówiąc już o niemożności ingerowania w kod i ulepszania go).

Pascal- podejrzewam, że większość czytelników zapomniała albo w ogóle nie kojarzy tego środowiska

Metody numeryczne są bardzo dobrą książką, z którą powinni się zapoznać wszyscy, którzy we własnym zakresie np. w ramach pracy naukowej, muszą opracować wydajną metodę rozwiązywania danego problemu a niekoniecznie stać ich na programy za kilkanaście tysięcy złotych. Metody numeryczne dodatkowo wprowadzają pewne dobre zwyczaje zarówno programistyczne, jak i matematyczne – nie sztuką napisać tak naprawdę program. Sztuką jest go napisać tak, aby był wydajny, w miarę szybki, nie obciążający komputera (lub klastra).

Książka Metody numeryczne jest pozycją godną polecenia – w szczególności dla przyszłych informatyków, dla osób, które zajmują się data science i symulacjami zjawisk.