Obliczenia inżynierskie i naukowe

w MATLAB-ie, Octave, C i innych pakietach

Trudno sobie wyobrazić współczesną naukę lub biznes oparty na nowoczesnych technologiach bez wspomagania obliczeniami komputerowymi. Istotna część tych rachunków to obliczenia numeryczne, czyli takie, w których działania wykonuje się na liczbach rzeczywistych (zmiennopozycyjnych). W prostych przypadkach takie obliczenia przeprowadzamy w arkuszu kalkulacyjnym, jednak gdy zadanie jest bardziej skomplikowane, musimy uciec się do użycia bardziej wyrafinowanych narzędzi.

Niniejszy serwis gromadzi różne informacje przydatne osobom stosującym metody numeryczne na co dzień. Zapraszam do współredagowania! Zestawiłem tu rozmaite materiały lub linki do innych stron. Materiały własne opracowałem przede wszystkim w ramach wykładu Obliczenia naukowe, prowadzonego przeze mnie przez wiele lat dla studentów wydziału MIM UW. Znalazły się tu także materiały uzupełniające do podręcznika z obliczeń inżynierskich i naukowych, wydanego przez PWN.

O ile inaczej nie stwierdzono, z materiałów tu zamieszczonych możesz korzystać bezpłatnie na zasadach licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska. Materiały dostępne w innych serwisach, do których podaję tu linki, mogą być objęte innymi zasadami używania lub rozpowszechniania.

Podręcznik


Zdj.: Wydawnictwo Naukowe PWN

Książka Obliczenia inżynierskie i naukowe (Wydawnictwo Naukowe PWN, 2011) jest przyjaznym Czytelnikowi przewodnikiem po podstawowych narzędziach obliczeń numerycznych. Składa się z trzech części:

Dodatki

Dema i podręczne instrukcje

Strony domowe oprogramowania numerycznego (i nie tylko)

Wybrane strony domowe oprogramowania wykorzystywanego w obliczeniach numerycznych.

Środowiska

Z wielu powodów warto polecić system operacyjny Linux jako najwygodniejszy do prowadzenia obliczeń numerycznych. Spośród wielu wygodnych w użytkowaniu dystrybucji Linuxa polecam Fedorę, Ubuntu i OpenSUSE. Pod Windows możemy też zainstalować Linuxa w maszynie wirtualnej, np. VirtualBox.

Niezależnie od systemu operacyjnego (Linux, Windows, MacOS), wymienione poniżej środowiska obliczeniowe będą nas dobrze wspomagać w pracy:

  • MATLAB. Wygodne środowisko prowadzenia obliczeń naukowych i inżynierskich.   http://www.mathworks.com/products/matlab/.
  • GNU Octave. Wygodne środowisko prowadzenia obliczeń naukowych i inżynierskich. Darmowy klon MATLABa.   http://www.gnu.org/software/octave/.
  • Octave-forge. Kolekcja rozszerzeń dla Octave.   http://octave.sourceforge.io.
  • Julia. Coraz bardziej popularne środowisko obliczeniowe, bardzo podobne do MATLAB-a, ale znacznie świeższe i skonstruowane z wykorzystaniem nowoczesnych technologii programistycznych. http://www.julialang.org
  • Scilab. Wygodne środowisko prowadzenia obliczeń naukowych i inżynierskich. Pod wieloma względami podobny do MATLABa.   http://www.scilab.org.
  • Python. Kolekcja modułów NumPy, SciPy i Numba daje dobry start do używania Pythona w zastosowaniach numerycznych. W szczególności, wizualizacja w module Matplotlib wzoruje się na MATLAB-ie/Octave. https://www.python.org/
  • SageMath. Kombajn łączący w jednym (Pythonowym) środowisku interfejsy do wielu narzędzi. Jeśli dobrze skonfigurowany, oprócz Pythona i jego modułów, wśród dostępnych pakietów będzie też Octave oraz Maxima. http://www.sagemath.org

Kompilatory i narzędzia wspomagające

Biblioteki ogólnego przeznaczenia/wielozadaniowe

Macierze, układu równań liniowych, algebra liniowa

Zestaw funkcji realizujących podstawowe zadania algebry liniowej to dziś obowiązkowy składnik numerycznych bibliotek wielozadaniowych.

Warto jednak sprawdzić, czy poszukiwana funkcjonalność nie jest czasem lepiej realizowana przez biblioteki specjalistyczne lub równoległe.

Wizualizacja

Specjalistyczne biblioteki numeryczne

Warto sprawdzić, czy poszukiwana funkcjonalność nie jest czasem realizowana przez biblioteki wielozadaniowe lub przez biblioteki algebry liniowej.

Programowanie równoległe i biblioteki wspierające komputery wielordzeniowe/wieloprocesorowe

Przykłady z życia wzięte

Obliczenia inżynierskie i naukowe to nie tylko zwykła znajomość rzemiosła: narzędzi programistycznych i sprzętu komputerowego; to także doświadczenie i pomysłowość, które możemy rozwijać tylko poprzez zetknięcie się z prawdzimymi zadaniami obliczeniowymi. Zamieszczone poniżej, szczegółowo opracowane przykłady konkretnych zadań obliczeniowych, pozwalają zapoznać się z praktyką rozwiązywania problemów z życia wziętych.

Biologia i medycyna

Receptory wzrokowe skrzypłocza

Często zadanie obliczeniowe wydaje się na tyle proste i standardowe, że możemy przeoczyć podstawowe niejasności dotyczące samego sformułowania modelu matematycznego. To może przełożyć się na niespodziewane trudności w numerycznym wyznaczeniu rozwiązań modelu. Warto o tym pamiętać zwłaszcza w naszej sytuacji, gdy coraz mocniejsze komputery zachęcają do coraz większej wiary w skuteczność brutalnej numeryki.

Słowa kluczowe: RRZ, prawidłowe zrozumienie problemu i sformułowanie go w języku matematyki, wizualizacja

» » » Czytaj dalej... » » »

Prosty model z opóźnieniem

W MATLABie i w Octave znajdują się także funkcje pozwalające wyznaczać rozwiązania mniej typowych równań różniczkowych zwyczajnych. Warto im się przyjrzeć i zwrócić uwagę na to, że wymagają one znacznie więcej przygotowań niż w przypadku standardowych RRZ.

Słowa kluczowe: RRZzO, wizualizacja

» » » Czytaj dalej... » » »

Wyznaczenie parametrów równania Michaelisa—Menten

Dopasowanie krzywej do punktów pomiarowych to chleb powszedni eksperymentatorów. Często można zrobić to na wiele sposobów. Na klasycznym przykładzie porównujemy kilka znanych metod i pokazujemy, jak możemy wykorzystać nowoczesny software, by zrobić to dobrze i sprawnie.

Słowa kluczowe: Liniowe/nieliniowe zadanie dopasowania parametrów, RRZ

» » » Czytaj dalej... » » »

Inżynieria

Komunikacja typu klient—serwer

Dopóki nasze symulacje opierają się na niewielu danych i wyznaczają niewiele wyników, wówczas, nawet jeśli wymagają bardzo wielu obliczeń pośrednich, sytuacja pozostaje pod naszą kontrolą i zazwyczaj wystarcza na MATLAB lub Octave. Gdy danych i niewiadomych jest bardzo dużo, sprawy przybierają inny obrót. W prostym koncepcyjnie modelu sieci komunikacyjnej bardzo łatwo o wykładniczy wzrost liczby nieznanych parametrów modelu. Jeśli nie chcemy (lub nie możemy) uprościć samego modelu, musimy wesprzeć się, gdzie trzeba programem w C.

Słowa kluczowe: Hybrydowe programowanie Octave i C (każde z osobna), zagadnienie własne, macierze rzadkie, operacje bitowe, odczyt pliku z parametrami zadania w Octave i w C

» » » Czytaj dalej... » » »

Dopasowanie linii i okręgów

Geometryczne zadanie poprowadzenia prostej lub elipsy, czy też dopasowania prostokąta tak, by "najlepiej pasował" do zadanych na płaszczyźnie punktów wydaje się bardzo prostym zadaniem, ale w rzeczywistości, gdy chcemy zrobić to dobrze, musimy chwilę się zastanowić. Na szczęście, w samych obliczeniach możemy potem skutecznie skorzystać z MATLABa lub Octave.

Słowa kluczowe: Nieliniowe zadanie optymalizacji, SVD, wybór i uproszczenia modelu

» » » Czytaj dalej... » » »

Transformator

O tym, że można coś policzyć dokładnie, a mimo to zupełnie źle zinterpretować wyniki, traktuje przykład z dziedziny elektrotechniki. Badając rozwiązania równania różniczkowego opisującego charakterystykę transformatora możemy łatwo dać się zwieść elegancji pierwszego uzyskanego wyniku. Co ciekawe, choć same liczby są poprawne, to jednak wykres rozwiązania - już nie... Pokazujemy, jak można próbować to wychwycić.

Słowa kluczowe: RRZ II rzędu, wizualizacja, aliasing, weryfikacja rozwiązań

» » » Czytaj dalej... » » »

Rolnictwo

Badanie cech hodowlanych zwierząt

Pokazujemy tu, jak ważne w obliczeniach naukowych jest nie tylko sprawne opanowanie narzędzia obliczeniowego, ale także wiedza o metodach numerycznych. Okazuje się, że najważniejsze jest jednak zrozumienie problemu i dogłębna o nim wiedza: dobry kontakt z Zamawiającym Obliczenia jest bezcenny!

Słowa kluczowe: Zadanie najmniejszych kwadratów, dopasowanie sformułowania modelu do narzędzi numerycznych, metoda iteracyjna

» » » Czytaj dalej... » » »

Problemy w badaniach podstawowych (i nie tylko)

Dyfuzja

Bardzo wiele zjawisk jest modelowanych równaniem dyfuzji: wystarczy wspomnieć wyznaczanie rozkładu temperatury w podgrzewanym obiekcie, rozprzestrzeniania się zapachu perfum w powietrzu, czy przenoszenie chorób. Rozważamy dwa podstawowe równania, w których dyfuzja odgrywa kluczową rolę:

Pokazujemy, jak numerycznie rozwiązywać równanie dyfuzji w przypadku jedno-, dwu- i trójwymiarowym. Choć używamy najprostszych metod (czytaj: najmniej wyrafinowanych i w trudniejszych przypadkach mało skutecznych), i tak zetkniemy się z dość skompilkowanymi zadaniami obliczeniowymi, stanowiącymi duże wyzwanie dla używanych przez nas narzędzi.

» » » Czytaj dalej... » » » o stacjonarnym równaniu dyfuzji

Słowa kluczowe: RRCz eliptyczne liniowe, ze współczynnikiem, w 1D,2D,3D, macierze rzadkie, FFT, metody iteracyjne, ściskanie macierzy, dyskretyzacja

» » » Czytaj dalej... » » ». o ewolucyjnym równaniu dyfuzji

Słowa kluczowe: RRCz paraboliczne nieliniowe, RRZ, instalacja i użytkowanie biblioteki CVODE, wizualizacja w OpenDX i w ParaView, duży program w C, Makefile

Funkcja odwrotna

Wielokrotnie w badaniach naukowych musimy rozwiązać małe, niewinnie wyglądające zadanko. Na przykładzie obliczania funkcji odwrotnej zobaczymy, że i w takich przypadkach możemy natknąć się na smakowite problemy obliczeniowe.

Słowa kluczowe: Skalarne równanie nieliniowe, transformacja zadania do wygodniejszego numerycznie, funkcje anonimowe

» » » Czytaj dalej... » » »

© Piotr Krzyżanowski, 2009-2011.