Laboratorium z Równań Różniczkowych zwyczajnych  labem - do wykładu prof. Maksymiliana Dryji semestr letni 2005/06



wiosna 2006, czwartki godz. 16:15  (co drugi tydzień, pierwsze zajęcia:  - termin mogą się zmienić w trakcie semestru np z powodu świąt itp).

Będziemy posługiwali się przede wszystkim
octave'm , maplem (niestety starą wersją) i  maximą. Maxima to darmowy klon (przynajmniej do użytku edukacyjnego) maple'a czyli pakiet obliczeń symbolicznych, octave to darmowy klon matlaba - pakietu do obliczeń numerycznych.


Wstępny plan labu (może się zmienić i to znacząco)
Projekt zaliczeniowy  - termin ostani lab później obniżona ilośc punktów  (2 propozycje do wyboru - moze będzie więcej) - istnieje możliwość zaliczenia innego projektu - możecie Pańśtwo przestawić propozycje do mojej ewent. akceptacji.

Projekt 1  Metoda strzałów. Mamy równanie y'=f(x,y) y(t0)=g(s)  - znaleźć s i w szczeg. y(t,s) dla t w [t0,T] takie aby y -rozwiązanie spełniało G(y(T,s))=0 np y(T,s)=0. Rozwiązać numerycznie dla
  1. Zadanie liniowe 2-go rzędu y''=4y+f(x), y(0)=0, y'(0)=s, z warunkiem y(1)=0 dla różnych f=0, 1+x*x, exp(3x), x/(1+x*x). Jako wynik podać s, błąd  |y(1,s)|   i narysować wykres y(t,s). (f. plot w octave'ie czy gnuplotem - albo jeszcze inaczej). Sprawdzić w maple'u czy maxima'ie (czy dfieldzie lub octavie'ie o ile rozwiązanie nie jest wyrażone  przez funkcje elementarne) że rozwiązanie z tymi warunkami początkowymi rzeczywiście spełnia y(1,s)=0 (no y(1,s) bliskie 0).
  2. Zadanie nieliniowe skalarne  y'=(1-y*y)sin(y*y+x), y(0,s)=s z warunkiem y(1,s)=0. Jako wynik podać s, błąd  |y(1,s)|, max i inf (dyskretne dla tn=h*n w [0,1]) rozwiązania y(t,s)   i narysować wykres y(t,s).
Jako solver mozna zastosować samodzielnie  zaimplementowany schemat rzędu co najmniej 4 (np Rungego) albo funkcję lsode z Octave'a (będzie na 5 labie - polecam) czy jakąś biblioteke np cvode.
W (1) mamy zadanie liniowe  tzn y(1,s) jest funkcją liniową tzn y(1,s)=a+bs - wystarczy wyznaczyć a i b (dla 2 różnych s1 i s2 znaleźć y(1,s1)=a+bs1 i y(1,s2)=a+bs2 i rozwiązać układ  równań liniowych) i potem  wyliczyć s. W (2) funkcja y(1,s) jest nieliniowa - i trzeba albo zastosować jakąs metodę rozwiązywania r. nieliniowych (ale skalarnych) np bisekcji (tu warunki met. bisekcji są spełnione bo y(1,-1)=-1 i y(1,1)=1.... albo co oszczędzi sporo pracy funkcję octave'a  fsolve rozwiązywania równań nieliniowych (ale trzeba ją poznać -> Lab 5 - o ile starczy czasu) czy znów jakąś bibliotekę (kinsol, minpack etc - ale to dla osób wprawnych). 

Należałoby też uzasadnić teoretycznei dlaczego powyższe problemy mają rozwiązanie i  czy ono jest wyznaczone jednoznacznie (w przypadku (2) już Państwo są w stanie to zrobić a w (1) po teorii r. liniowych.

Wykresy albo funkcja plot w octavie'ie albo przy użyciu gnuplota (polecam) albo samodzielnie (odradzam).

Można  zauważyć że z wykorzystaniem octave'a ten projekt nie wymaga wielkiego wysiłku.

Projekt 2 Zaprogramować (C, C++, Pascal) schemat o zmiennym kroku całkowania (bazujący na schemacie Rungego rzędu 4) opisany w ksiażce  A. Palczewskiego Równania Różniczkowe zwyczajne, WNT ,Warszawa 1999 rozdział 5.2, str. 151-155. W bibliotece jest też skrypt na którym oparta jest książka. Testować dla różnych równań porównując wyniki ze schematem Rungego 4  i z lsode (z Octave'a)  tzn. podać o ile wyniki się różnią w końcach przedziału całkowania  (biorąc dla poziomu dokłądności E - h=(E)^{1/3} w sch. Rungego)  i podać ilość obliczeń pola wektorowego-prawej strony równania - dla obu schematów.
Przetestować   schemat (dla różnych E - poziomów dokładności np 1e-3, 1e-4 itd ) na:
 I. Rówaniu liniowym  y''=-y  z y(0)=0, y'(0)= -1 na odcinku [0,10]  (to tak czy w ogóle działa)
 II Równaniu van der Pola :
y''-a*(1-y*y)*y'+y=0       0<a - parametr.

Sprawdzić przypadki (dla różnych E)
  1.  a=1,   y(0)=2, y'(0)=0 na odcinku [0,20]
  2.  a=1000,    y(0)=2, y'(0)=0 na odcinku [0,3000]
Porównać ze schematem Rungego rzędu 4 i  lsode z octave tzn porównać wyniki w końcach odcinków czyli w (I) dla t=10, (II.1)  t=20 a w (II.2) t=3000 oraz ilość wywołań pola wektorowego (dla obu schematów - choć jak ktoś potrafi to można i dla lsode).





Narzędzia podstawowe

maxima - pakiet obliczeń symbolicznych dostępny za darmo dla wszytkich, manual  maximy  -- wersja on-line;  również  jako plik  pdf

maple - pakiet do obliczeń symbolicznych (komercyjny mamy starą wersj e na wydziale zainstalowana na komputerze tomoko)

octave  - pakiet obliczeń numerycznych (klon matlaba pakiety najczęściej używanego w praktycznych obliczeniach)

dokumentacja w htmlu

DFIELD  - narzędzie w javie umożliwijące rysowanie pól wektorowych skalarnuch (nieautonomicznych) w przeglądarce
PPLANE- narzędzie w javie umożliwijące rysowanie pól wektorowych 2-wymiarowych  autonomicznych w przeglądarce

Narzędzia dodatkowe

gnuplot - narzędzie Unixa pozwalające na wykonywanie prostych rysunków np wykresów funkcji

matlab - pakiet do obliczeń numerycznych

mupad - pakiet obliczeń symbolicznych; dostępny niegdyś  w starszej wersji za darmo dla wszytkich, a do celów edukacyjnych bez ograniczenia pamięci  - zainstalowany w labie (opcja dla chętnych - można porównać z maximą!!!)
dokumentacja (w j. angielskim)


Zaliczenie labu  - projekt sprawdzający czy Państwo jesteście w stanie przy pomocy Maximy czy Octava znaleźć rozwiązanie prostego zagadnienia początkowego czy brzegowego szczegóły za jakiś czas - max. 30% punktów z ćwiczeń. REszta punktów za kolokwium (pełniące rółnież rolę egzaminu połówkowego) - 40% i  zadania domowe - 30% - zaliczenie od ok 50%.