W tym i kilku następnych rozdziałach zajmiemy się schematami rozwiązywania równań różniczkowych zwyczajnych. Ten rozdział jest poświęcony wprowadzeniu najprostszych metod (schematów) rozwiązywania równań różniczkowych zwyczajnych.
Załóżmy, że rozpatrujemy zagadnienie początkowe pierwszego rzędu (zagadnienie Cauchy'ego) :
(3.1) |
gdzie , jest funkcją ciągłą, a jest ustalone.
Z ogólnej teorii równań różniczkowych, por. [23] wiadomo, że
Jeśli jest funkcją ciągłą na otoczeniu , to istnieje rozwiązanie (3.1) określone na pewnym otoczeniu .
Jeśli dodatkowo założymy, że jest funkcją lipschitzowska na otoczeniu względem zmiennej , to możemy pokazać jednoznaczności rozwiązania, tzn. zachodzi twierdzenie:
Jeśli jest funkcją ciągłą na otoczeniu oraz jest funkcją lipschizowską względem w pewnej kuli , tzn.
to istnieje i takie, że jest jednoznacznym rozwiązaniem (3.1).
Od tej pory będziemy przyjmować, że funkcja , zwana też polem wektorowym, spełnia założenia twierdzenia Picarda-Lindelöfa, tzn. Twierdzenia 3.2, czyli że istnieje jednoznaczne rozwiązanie zadania Cauchy'ego na odcinku .
Zauważmy, że każde rozwiązanie jest krzywą styczną do pola wektorowego.
W tym podrozdziale krótko przypomnimy teorie dla ważnej klasy równań różniczkowych zwyczajnych, tzn. jednorodnych równań liniowych ze stałymi współczynnikami, czyli równań postaci:
gdzie - to stała macierz , dla których znamy rozwiązania zadania Cauchy'ego:
(3.2) |
Znamy wzór na rozwiązanie tego zadania:
gdzie eksponent od macierzy zdefiniowany jest wzorem
Skorzystamy ze znajomości postaci rozwiązania tej klasy równań w rozdziale 6.
W zależności od postaci Jordana macierzy można wypisać postać , w szczególności jeśli macierz jest diagonalizowalna, tzn. istnieje baza wektorów własnych, które zapisane jako kolumny macierzy dają:
gdzie - to macierz diagonalna z wartościami własnymi macierzy na diagonali:
Wtedy wiadomo, że
W szczególności jeśli dla wszystkich to każde rozwiązanie spełnia
a z kolei jeśli istnieje takie, że , to istnieje rozwiązanie zagadnienia Cauchy'go z niezerowym warunkiem brzegowym, dla którego
Załóżmy, że rozpatrujemy zadanie skalarne tzn. . Chcemy w jakiś sposób przybliżyć rozwiązanie równania (3.1). Przybliżamy pochodną poprzez iloraz różnicowy dla pewnego parametru :
i otrzymujemy otwarty schemat Eulera:
czy inaczej:
znając rozwiązanie w punkcie możemy wyznaczyć przybliżone rozwiązanie w kolejnych punktach z powyższego wzoru. Ale można też przybliżyć pochodną biorąc parametr w tył:
i wtedy zastępując pochodną przez taki iloraz otrzymujemy zamknięty schemat Eulera:
czy inaczej:
Proszę zauważyć, że jeśli znamy rozwiązanie w punkcie , tzn. , to aby wyznaczyć kolejne przybliżenia rozwiązania w punktach należy rozwiązać równania postaci:
(3.3) |
względem , co sprawia, że zamknięty schemat Eulera może wydać się mało praktyczny w porównaniu z otwartym schematem Eulera. Dla niektórych równań jest to pozorne. Zauważmy tylko, że im mniejsze, tym potencjalnie równanie (3.3) jest łatwiejsze do rozwiązania (dlaczego?). Przyjrzymy się temu problemowi dokładniej w kolejnych rozdziałach.
W dalszej części wykładu założymy, że chcemy przybliżyć rozwiązanie na odcinku , na którym , w dyskretnych punktach czasu:
Często będziemy opuszczali indeks , o ile to nie będzie powodowało niejasności. Wartość rozwiązania w punkcie , czyli będzie przybliżana przez , spełniające odpowiedni schemat. Wygodnie jest też oznaczać . Górny indeks będziemy często opuszczali, jeśli będzie ustalone.
Tak więc otwarty schemat Eulera możemy zapisać jako:
(3.4) |
a zamknięty schemat Eulera możemy zapisać jako:
(3.5) |
Kolejnym wyprowadzeniem otwartego schematu Eulera (3.4) jest obcięcie rozwinięcia szeregu Taylora rozwiązania:
(3.6) |
Zostawiamy tylko pierwsze dwa człony i otrzymujemy
czyli wstawiając za przybliżenie , a za przybliżenie otrzymujemy znów otwarty schemat Eulera (3.4). Analogicznie możemy wyprowadzić zamknięty schemat Eulera (3.5) rozwijając rozwiązanie w dla .
Jeszcze innym intuicyjnym wyprowadzeniem schematu otwartego Eulera jest podążanie za polem wektorowym. Jak wiemy, wykresem rozwiązania równania różniczkowego jest krzywa styczna do zadanego pola wektorowego spełniająca odpowiedni warunek początkowy. Zatem znając rozwiązanie przybliżone dla tzn. mając , możemy wyznaczyć , przybliżenie rozwiązania , biorąc poprawkę w kierunku pola wektorowego tzn.:
Czyli znów otrzymujemy otwarty schemat Eulera.
Zadajmy pytanie, czy takie schematy są wystarczająco dokładne. Czy one działają stabilnie na dłuższych odcinkach czasu, na których istnieje rozwiązanie?
Sprawdźmy, co się dzieje dla modelowego zadania:
którego rozwiązaniem jest .
Otwarty schemat Eulera daje nam ciąg:
Ustalmy , czyli . Wtedy
Dla zamkniętego schematu Eulera otrzymujemy analogicznie:
czyli
Popatrzmy jak te dwa schematy działają (w praktyce) na wykresach dla i , por. rysunki 3.1 - 3.4 dla otwartego schematu Eulera i rysunki 3.5 - 3.8 dla zamkniętego schematu Eulera.
Zauważmy, że wykres rozwiązania ze schematu Eulera otwartego jest poniżej wykresu dokładnego rozwiązania, a dla schematu zamkniętego - powyżej, co widać lepiej na rysunku 3.9.
Popatrzmy na przypadek dwuwymiarowy. Weźmy modelowe zadanie wahadła. Dla małych prędkości możemy przyjąć, że , stąd otrzymujemy równanie liniowe ze stałymi współczynnikami (zlinearyzowane równanie wahadła):
gdzie to prędkość kątowa, a dla wartości przyspieszenia ziemskiego i l długości wahadła.
Zapisując to równanie jako układ dwóch równań pierwszego rzędu otrzymujemy:
Przyjmijmy, że .
Znamy rozwiązania:
czyli trajektorie rozwiązania zawarte są w okręgach.
A teraz zastosujmy otwarty schemat Eulera do tego równania z warunkiem początkowym , którego rozwiązaniem jest z :
dla ustalonego i .
Zatem: , a z i
Dla zamkniętego schematu Eulera jest analogicznie:
czy równoważnie
czyli w każdym kroku dla ustalonego musimy rozwiązać układ dwóch równań liniowych.
Widać, że mimo małego kroku rzędu () wyniki są wyraźnie gorsze niż w przypadku skalarnym, mimo że wyjściowe równanie różniczkowe jest liniowe.
Rozważmy wyjściowe równanie wahadła, por. Przykład 2.5. Znów przyjmijmy, że i warunek początkowy i . Wtedy schematy Eulera przybierają odpowiednio formę:
schemat otwarty Eulera:
z i . Znając otrzymujemy natychmiast wzór na .
W przypadku schematu zamkniętego Eulera:
z i , musimy w każdym kroku rozwiązać układ równań nieliniowych:
Im jest bliższe zera, tym układ jest łatwiejszy do rozwiązania.
Można pokazać, że rozwiązanie wyjściowego równania ma trajektorie okresowe, co potwierdza wykres na rysunku 3.15 (tu wyliczony przy pomocy dużo dokładniejszego schematu niż schematy Eulera). W kolejnych rysunkach 3.10- 3.13 - prezentujemy przybliżone rozwiązania dla nieliniowego równania wahadła, otrzymane przy pomocy obu schematów Eulera.
Rozpatrzmy ponownie modelowe zadanie skalarne, ale na długich odcinkach czasu:
Rozwiązaniem jest i wtedy . Im większe, tym rozwiązanie szybciej zbiega do zera.
Rozpatrzmy teraz zastosowanie otwartego i zamkniętego schematu Eulera do rozwiązania tego zagadnienia. Dla otwartego schematu Eulera wiemy już, że:
Zauważmy, że przy ustalonym ciąg przybliżeń jest dodatni i zbiega do zera dla o ile zachodzi warunek:
W przypadku gdy parametr jest ujemny i o dużym module, warunek ten wymusza to, że musimy wziąć bardzo małe , aby otrzymać schematem otwartym Eulera rozwiązanie przybliżone, które jest dodatnie i malejące do zera, czyli zachowujące się jak rozwiązanie zagadnienia początkowego: .
Natomiast dla zamkniętego schematu Eulera widzimy, że:
Otrzymujemy wtedy, że dla dowolnego zachodzi i dla , czyli nie otrzymujemy żadnego ograniczenia na krok , co jest istotne, jeśli chcemy rozwiązywać równanie na długim odcinku czasu.
Schemat zamknięty Eulera można uznać za lepszy od schematu otwartego dla tego zagadnienia dla ujemnego o bardzo dużym module, szczególnie na długim odcinku czasu, ponieważ nie wymusza żadnych ograniczeń na krok . Wrócimy do tego problemu w następnych rozdziałach.
Czy rozwiązanie zagadnienia początkowego:
jest wyznaczone jednoznacznie? Znajdź wszystkie rozwiązania tego zagadnienia początkowego.
Jest to równanie o zmiennych rozdzielonych (autonomiczne) z warunkiem początkowym , więc w postaci uwikłanej rozwiązanie ma postać .
Zaimplementuj w octavie otwarty schemat Eulera i zastosuj go do równania:
na różnych odcinkach czasu np. lub i różnych wartości np. . Zmniejszając sprawdź, czy ten schemat znajdzie rozwiązanie różne od zera. Następnie weź przybliżenie startowe na poziomie błędu zaokrągleń np. i sprawdź, jakie schemat znajduje rozwiązania; w szczególności, czy są one różne od zera.
Rozpatrzmy równanie różniczkowe zwyczajne liniowe jednorodne rzędu o stałych współczynnikach:
Poprzez podstawienie sprowadź to równanie do równania liniowego jednorodnego ze stałą macierzą:
Znajdź wielomian charakterystyczny oraz dla postać Jordana tej macierzy w zależności od tego, jakie wartości własne ma ,
Przy założeniu, że ma jednokrotnych wartości własnych rzeczywistych, znajdź i dla znajdź rozwiązanie zadania początkowego dla tego równania z warunkami początkowymi:
Dla i macierzy kolejno , , dla rożnych wartości parametrów , np. , naszkicuj na kartce portrety fazowe (wykresy trajektorii) równania jednorodnego:
w otoczeniu zera. Naszkicuj pole wektorowe na ekranie korzystając z funkcji octave'a
quiver()
i portrety fazowe z pomocą funkcji lsode()
.
Zaimplementuj w octavie otwarty schemat Eulera i zastosuj go do równania z dla różnych wartości parametru np. . Narysuj na monitorze wykresy przybliżonych rozwiązań razem z wykresem rozwiązania dokładnego .
Rozpatrzmy równanie . Policz wartości własne macierzy i porównaj z wynikiem obliczonym w octavie z użyciem odpowiedniej funkcji np. eig()
. Znajdź rozwiązanie ogólne tego równania.
Przy pomocy otwartego schematu Eulera i funkcji octave'a lsode()
rozwiąż to równanie z na odcinku z . Porównaj wyniki rysując wykresy na ekranie obu rozwiązań i rozwiązania dokładnego, które należy też wyznaczyć.
Rozwiązanie ogólne - to , gdzie wektor stałych a funkcja
expm()
octave'a pozwala obliczyć eksponent macierzy.
Udowodnij, że przybliżenia rozwiązania układu równań z ,
otrzymane za pomocą otwartego (lub zamkniętego) schematu Eulera, mają normę
drugą
zbieżną do jeden, tzn. zbiegają do jeden, dla ustalonego czasu z dążącym do zera. Zaimplementuj oba schematy Eulera dla tego równania w octave (w przypadku zamkniętego schematu Eulera
użyj operatora backslash: \
w każdym kroku czasowym do rozwiązania odpowiedniego układu dwóch równań liniowych).
Naszkicuj na ekranie monitora portret fazowy przy pomocy plot()
, lsode()
i obu schematów dla różnych wartości . Policz wartości normy drugiej rozwiązań otrzymanych przy pomocy tych schematów i lsode()
dla ustalonego czasu np. czy i różnych wartości .
Naszkicuj na ekranie monitora portrety fazowe równań liniowych dla macierzy o różnych postaciach Jordana przy pomocy plot()
, lsode()
.
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
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.