Zaawansowane metody numeryczne Komputerowa analiza zagadnień różniczkowych Omówienie P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2006/07
Nazwa przedmiotu Przedmiot ten występuje pod dwoma nazwami: Jeśli studiujesz fizykę, przedmiot nazywa się Zaawansowane metody numeryczne, jest obowiazkowy dla IV roku, specjalizacja Fizyka komputerowa oraz, mam nadzieję, pożyteczny dla studentów innych specjalizacji. Jeśli studiujesz informatykę, przedmiot nazywa się Komputerowa analiza zagadnień różniczkowych, jest obowiazkowy dla III roku, sekcja Modelowanie oraz, mam nadzieję, pożyteczny dla studentów innych sekcji. Jeśli uważasz tę sytuację za cokolwiek schizofreniczna, to... Omówienie 2
Zakres materiału Zasadniczym celem kursu jest przedstawienie najważniejszych metod numerycznego rozwiazywania równań różniczkowych i zagadnień pokrewnych. Niniejszy kurs nie jest kursem programowania celem nie jest umiejętość pisania programów w takim lub innym języku programowania, ale umiejętość świadomego wybrania algorytmu właściwego do danego zagadnienia. Ponieważ numeryczne rozwiazywanie równań różniczkowych często prowadzi do innych zagadnień numerycznych, na poczatku przypomnimy trochę informacji na temat tych innych zagadnień. Omówienie 3
Szczegółowy plan kursu obejmuje: 1. Rozwiazywanie układów równań liniowych (a) Wiadomości wstępne i metody dokładne (b) Singular Value Decomposition (c) Metody iteracyjne (d) Metody typu gradientów sprzężonych; prewarunkowanie 2. Elementarne metody minimalizacji funkcji wielu zmiennych (metoda najszybszego spadku, gradientów sprzężonych, zmiennej metryki, metoda Levenberga-Marquardta) 3. Rozwiazywanie układów równań algebraicznych (nieliniowych) 4. Podstawowe twierdzenia o istnieniu i jednoznacznośći rozwiazań ODE Proste przykłady analityczne, w tym równania liniowe, w tym równania o stałych współczynnikach Omówienie 4
5. Metody Eulera (jawna, niejawna, zgodność, stabilność, układy sztywne) 6. Metody punktu środkowego 7. Metody Rungego-Kutty (a) Ogólne własności (b) Przykłady (c) Wyprowadzenie wzorów (d) Stabilność metod RK; obszary stabilności (e) Szczególne postacie metod RK (f) Metoda Rosenbrocka (g) Zmiana kroku w jawnych metodach RK; metody zagnieżdżone (h) Metody Bulirscha-Stoera 8. Metody Verleta Omówienie 5
9. Liniowe metody wielokrokowe (własności równań różnicowych, metody Adamsa-Bashfortha, Adamsa-Moultona, BDF, stabilność, zmiana kroku) 10. ODE z niezmiennikami (rzutowanie, algorytmy symplektyczne, układy DAE indeks, postacie Hessenberga) 11. Stochastyczne równania różniczkowe (interpretacja szumów i rachunek Ito, silny i słaby rzad zbieżności, metoda Eulera-Maryuamy, metoda Milsteina, metoda Heuna, inne metody wyższych rzędów) 12. Dwupunktowe problemy brzegowe (istnienie rozwiazań, stabilność, metoda strzelania, relaksacja na siatce) 13. Metody różnicowe dla czastkowych równań różniczkowych Omówienie 6
Zaliczenie Zaliczenie wykładu dokonuje się na jeden z dwu sposobów: Zdanie egazminu Regularne rozwiazywanie zadań dla wszystkich, zadawanych po wykładzie. Osoby planujace zdawać egzamin także sa zachęcane do rozwiazy- wania tych zadań. Warunkiem koniecznym dopuszczenia do egzaminu jest uzyskanie zaliczenia z ćwiczeń. Zasady zaliczania ćwiczeń ustalaja prowadzacy poszczególne grupy. Omówienie 7
W grupie prowadzonej przeze mnie podstawa uzyskania zaliczenia jest rozwia- zanie zadań. Zadania wywieszane sa przeze mnie wyłacznie na mojej stronie WWW. Zadania dziela się na teoretyczne i numeryczne ; te drugie oznaczone sa litera N. Uwaga: Niektóre zadania obliczeniowe uznawane sa za teoretyczne mianowicie takie, gdy obliczeń jest stosunkowo niewiele i da się je przeprowadzić na kartce. Warunkiem koniecznym uzyskania zaliczenia jest zaliczenie wszystkich zadań numerycznych. Rozwiazania zadań numerycznych proszę dostarczać wyłacznie w formie pisemnej. Forma pisemna oznacza wydruk lub elektroniczna formę pisemna, to znaczy plik pdf lub PostScript. Niezależnie od formy, rozwiazanie powinno zawierać omówinie problemu oraz wyniki w postaci prezentacyjnej, a przynajmniej uporzadkowanej. Jeśli na przykład zadanie wymaga porównania kilku metod, wyniki powinny być przedstawione Omówienie 8
w postaci umożliwiajacej takie porównanie. Jeśli w zadaniu wymaga się wycia- gnięcia jakichś wniosków z dokonanych obliczeń, rozwiazanie powinno zawierać te wnioski jasno wyartykułowane. Nie oczekuję dostarczania mi kodu programu w każdym przypadku, ale autor rozwiazania powinien być przygotowany do przedstawienia mi kodu jeśli sobie tego zażyczę. Wolno przy tym posługiwać się legalnie dostępnymi procedurami i bibliotekami. Ciężkim przestępstwem jest przedstawienie mi kodu, którego działania się nie rozumie, oznacza to bowiem, że jest to cudzy kod. Warunkiem koniecznym zdania egzaminu jest dobre opanowanie i zrozumienie materiału. Nie wymagam pamięciowego opanowania złożonych wzorów. W czasie egzaminu można korzystać z dowolnych podręczników i własnych notatek. (Powtórka z logiki: Proszę przypomnieć sobie różnice pomiędzy warunkiem koniecznym a wystarczajacym.) Omówienie 9
Język programowania Nie ma wielkiego znaczenia. Sukces programu numerycznego o wiele silniej zależy od wyboru właściwego algorytmu niż od wyboru właściwego języka. Pamiętać jednak należy, że program realizujacy (w zasadzie) dowolny algorytm można źle napisać w dowolnym języku programowania. Omówienie 10
Zasoby sieciowe Piszac programy, można korzystać z dowolnych legalnych źródeł oprogramowania. Nie wymagam pisania programów od zera. Przyzwoity program numeryczny pisze się często kilka miesięcy. Program numeryczny nadajacy się do włacze- nia do komercyjnej biblioteki pisze się zazwyczaj ponad rok. Mnóstwo dobrych i bardzo dobrych programów można znaleźć na sieci: http://www.netlib.org Netlib to największe na sieci źródło darmowych i sprawdzonych programów z wielu dziedzin analizy numerycznej. Uwaga: większość z programów w Netlibie napisanych jest w FORTRANie (nawet nie w w Fortranie). Można je automatycznie tłumaczyć przy użyciu f2c, ale to na ogół nie jest optymalne wyjście. http://math.nist.gov/tnt/ Template Numerical Toolkit algebra liniowa w C++ Omówienie 11
http://math.nist.gov/tnt/jama_doxygen/index.html JAMA, implementacja w C++ http://www.oonumerics.org">www.oonumerics.org obiektowo o numeryce http://math.nist.gov/javanumerics/ Java Numerics http://plato.la.asu.edu/guide.html Decision Tree for Optimisation Software http://www.fftw.org The Fastest Fourier Transform in the West Omówienie 12
Dostępne na sieci FAQs http://www.mathcom.com/corpdir/techinfo.mdir/scifaq/index.html Scientific Computing FAQ http: //www-unix.mcs.anl.gov/otc/guide/faq/linear-programming-faq.html Linear Programming FAQ http://www-unix.mcs.anl.gov/otc/guide/faq/ nonlinear-programming-faq.html Nonlinear Programming FAQ http://alife.santafe.edu/alife/topics/cas/ca-faq/ca-faq.html Cellular Automata FAQ http://www.faqs.org/faqs/ai-faq/genetic/part1/preamble.html Genetic Algorithms FAQ http://www.faqs.org/faqs/sci/nonlinear-faq/ Nonlinear Sciences FAQ Omówienie 13
Literatura Podręczników numerycznego rozwiazywania rónań różniczkowych sa tysiace, niektóre z nich sa dobre. Ja nie będę powielał żadnego konkretnego podręcznika, korzystał natomiast będę z: 1. W. H. Press, B. P. Flannery, S. A. Teukolsky, W. T. Vetterling, Numerical Recipes in C/Fortran, Second Edition, wersja on-line dostępna pod http://www.nr.com tekst jest pożyteczny, ale przestrzegam przed używaniem kodu 2. G. H. Golub, C. Van Loan, Matrix Computations 3. J. C. Butcher, Numerical Methods for Ordinary Differential Equations 4. M. R. Allen III, E. L. Isaacson, Numerical Analysis for Applied Science 5. U. M. Asher, L. R. Petzold, Computer Methods for Ordinary Differential Equations and Differential-Algebraic Equations Poza pozycja pierwsza, ksiażki te sa niezbyt łatwo dostępne. Omówienie 14