Równanie z dreszczykiem
Jakiś czas temu Marek Bodnar z sąsiedniego Zakładu Biomatematyki pokazał mi niepozornie wyglądające równanie różniczkowe, które pojawiło się w pewnym modelu przebiegu choroby zakaźnej...
Oto ono
(1) |
Liczby są stałymi, dodatnimi parametrami modelu (zob. ). Niewiadomą jest funkcja odpowiadająca liczbie chorych przypadających na jednostkę powierzchni. Zmienna niezależna to czas. Odpowiednio skalując zmienne występujące w równaniu, możemy sprowadzić je do prostszej, równoważnej postaci
(2) |
przy czym zależą od parametrów oryginalnego zadania. Dodatkowo na rozwiązanie nakładamy warunek gdzie jest kolejnym parametrem zadania.
Jest to równanie różniczkowe Bernoulliego drugiego stopnia. Czytelnikom nie w pełni zaznajomionym z teorią równań różniczkowych wyjaśnijmy, że wykres poszukiwanej przez nas funkcji spełniającej równanie różniczkowe zapisane w ogólnej postaci
(3) |
ma taką własność, że jest on styczny w każdym swoim punkcie do wektora o kierunku zob. przykład na rysunku 1 dla W przypadku równania (2), oczywiście, jest inne, równe
Równanie różniczkowe? Ależ to proste!
W dzisiejszych czasach zdawać by się mogło, że nie musimy rozumieć, czym jest równanie różniczkowe - wystarczy tylko wiedzieć, z jakiej biblioteki numerycznej skorzystać na swoim laptopie… Rzeczywiście: jedna z najlepszych (LSODE) jest wbudowana w darmowy pakiet obliczeń komputerowych GNU Octave; inne, równie znakomite, są używane przez MATLAB-a, Scipy, Mathematicę, itd. Dlatego codziennie naukowcy i inżynierowie z całego świata wykorzystują je do rutynowego numerycznego rozwiązywania równań różniczkowych na komputerze, ufając ich technicznej doskonałości i wbudowanej wiedzy, obejmującej kilkanaście (lub więcej) lat użytkowania w najróżniejszych warunkach.
Jak działa taka biblioteka? Najprostszą strategią numerycznej aproksymacji rozwiązania równania (3) jest przyjęcie, że na krótkich odcinkach czasu długości funkcja jest stała (innymi słowy, że rozwiązanie jest funkcją liniową), co prowadzi do tzw. metody Eulera:
gdzie oraz (można udowodnić, że) (zob. rys. 2). Nietrudno zgadnąć, że oprócz tej prościutkiej metody są też bardziej zaawansowane, np. schematy wielokrokowe lub metody Rungego-Kutty - również w wersjach, które dodatkowo automatycznie dopasowują długość do rzeczywistego przebiegu rozwiązania tak, by zagwarantować spełnienie określonych przez użytkownika kryteriów tolerancji. Wspomniany powyżej LSODE używa właśnie schematów wielokrokowych z adaptacją długości kroku.
Febra wykresu: rozpoznanie, diagnoza i kuracja
Używając wbudowanej w pakiet Octave biblioteki LSODE do rozwiązania (2) dla parametrów i kilku wybranych wartości odpowiednich dla modelowanego zjawiska, dostaniemy ładne wykresy, takie jak na rysunku 3 na górze.
Jak zauważył Marek Bodnar (i dlatego pokazał mi to równanie, bo wie, że lubię takie smaczki), gdy ustalimy zestaw parametrów zadania, ale za to będziemy bawić się tolerancjami pracy LSODE, otrzymamy podobne, lecz jednak zdecydowanie różne rozwiązania (rys. 3 na dole). (Zobacz też uwagi J. Banasiaka w [2, str. 36]. Analogiczne zjawisko pojawi się także w MATLAB-ie i in.)
Jak to rozsądzić? Kto przeszedł kurs Równań różniczkowych zwyczajnych, ten zauważy, że (2) tylko troszkę różni się od klasycznego równania logistycznego
dla którego znamy jawny wzór na rozwiązanie:
Gdyby więc - podobnie jak w metodzie Eulera - przyjąć chwilowo, że człon jest stałą wynoszącą, powiedzmy, to wtedy (2) zamienia się w równanie logistyczne z
Ta wiedza pozwoli nam rozstrzygnąć, które z uzyskanych przez nas rozwiązań jest akceptowalne. Wykorzystamy następujące twierdzenie porównawcze:
Twierdzenie (Peano). Jeśli funkcje są różniczkowalne i spełniają dla warunki:
to dla
Z tego, co powiedzieliśmy wcześniej, wynika, że jako wystarczy wziąć rozwiązanie równania logistycznego z ciut mniejszym niż gdyż w naszym zadaniu jest zawsze dodatnie. Łatwo też uzupełnić treść powyższego twierdzenia tak, aby otrzymać analogiczne dolne oszacowanie Ponadto nic nie stoi na przeszkodzie, byśmy zastosowali je - podobnie jak w metodzie Eulera - nie od razu dla wszystkich ale wielokrotnie na krótkich odcinkach długości, powiedzmy, W ten sposób dostajemy dwie - jak się okazuje, całkiem bliskie - krzywe, będące ścisłymi oszacowaniami z góry i z dołu dla prawdziwego (wciąż nieznanego!) rozwiązania (2): obie zostały naszkicowane na rysunku 4.
Mt 20,16 Niestety, na rysunku 4 widzimy także, iż żaden wcześniej otrzymany wykres LSODE nie mieści się w wyznaczonym przez nas korytarzu, w którym musi przebiegać rozwiązanie. I, niczym w biblijnej przypowieści, prymitywna metoda Eulera ostatecznie wygrywa z wyrafinowanym LSODE: rozwiązania wyznaczone przez jedną z najlepszych numerycznych bibliotek okazują się bowiem dramatycznie kiepskie tam, gdzie wartości są bardzo małe: wykres trzęsie się jak w febrze, choć z teorii wiadomo, że powinien być gładki.
Patrząc na rysunek 4, zaczynamy rozumieć, o co chodzi. Schemat taki, jak LSODE ma wbudowany mechanizm sterowania długością kroku (w zamyśle służący polepszeniu jakości rozwiązania!), który jednak najwyraźniej gubi się, gdy rozwiązanie staje się w specyficzny sposób czułe na niewielkie odchylenia od dokładnej wartości, a tak dzieje się, gdy rozwiązanie przybliża się do zera.
LSODE (w końcu) też daje radę! W takiej sytuacji - gdy zadanie staje się zbyt trudne dla używanej metody - numeryk często proponuje: Może więc zmieńmy… zadanie?! Faktycznie, wprowadzając w (2) nową niewiadomą dostaniemy kolejne równoważne równanie:
(4) |
gdzie parametry zależą od i Rozwiązania tego równania mają znacznie spokojniejszy przebieg niż (2). LSODE rozwiązuje je bez trudu, więc kładąc następnie wyznaczamy znakomity wykres, nareszcie idealnie wpasowujący się pomiędzy górne i dolne ograniczenie. Nie pokazujemy tego wykresu, bo i tak w używanej przez nas skali będzie nieodróżnialny od krzywych ograniczających z rysunku 4.
Walka nie jest jeszcze wygrana
Ale w życiu takie rzeczy nie zdarzają się, prawda? - chciałoby się zapytać, mając w pamięci, że cała technologiczna nowoczesność wokół nas była zapewne wcześniej testowana w modelach komputerowych, które - jak przekonuje nas codzienne doświadczenie - najwyraźniej musiały dać się numerycznie rozwiązać w wystarczająco dokładny sposób. Generalnie, metody numeryczne rzeczywiście działają zdumiewająco dobrze; jednak trafiają się spektakularne niepowodzenia - takie, jak zatonięcie 26 lat temu pływającej platformy wiertniczej Sleipner (zakończone wstrząsem tektonicznym o mocy 3 stopni w skali Richtera i stratą rzędu 700 mln dolarów) - spowodowane tylko jednym czynnikiem: zlekceważeniem naturalnych ograniczeń standardowych pakietów obliczeniowych.
Warto o tym pamiętać, naciskając klawisz Enter... i nie tylko.