Laboratorium z Równań Różniczkowych zwyczajnych

wiosna 2000, czwartki godz. 8:30, Lab 4 (co drugi tydzień, pierwsze zajęcia: 24/02/2000).

Za pokazanie projektów w terminie 10pktów, później 5pktów. Oddanie projektów nie jest obowiązkowe choć oczywiście nieoddanie zmniejszy ilość pktów z ćwiczeń potrzebnych do zaliczenia.
 

Projekt zaliczeniowy 1  (10 pkt)

Zaprogramować schematy Eulera otwarty, midpoint i Rungego otwarty rzędu 4 dla równania skalarnego. Nie ma znaczenia w jakim języku czy programie projekt jest napisany np. C, Pascal lub  Maple. Umożliwić wyświetlanie obliczonych rozwiązań i rozwiązań dokładnych (jesli są znane). Testować na przykładach z ćwiczeń.
Można zbadać rząd schematu np. na równaniu y'=-y z rozw. y(x)=exp(-x) stosując połowiony krok h.
Termin: Temin minął. Teraz można uzyskać maksymalnie 5pkt.
 

Projekt zaliczeniowy 2  (10 pkt)

Są dwie możliwości do wyboru:
  1. Zaprogramować schemat o zmiennym kroku całkowania opisany w ksiazce A. Palczewskiego Równania Różniczkowe zwyczajne, WNT ,Warszawa 1999 rozdzial 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 rzędu (tzn. przy takiej samej dokładności badać ilość obliczeń pola wektorowego-prawej strony równania).
  2. Zaprogramować metodę strzałów korzystająca z metody Rungego z poprzedniego projektu, dla zagadnienia brzegowego: -y''=f, y(a)=c i y(b)=d, gdzie f dowolna ciągła funkcja, a<b. Testować dla różnych funkcji f i a,b,c,d.
Termin: Temin minął. Teraz można uzyskać maksymalnie 5pkt!



Opis prostej metody strzalów
Metoda strzalów polega na znalezieniu takiego parametru s aby równanie  -y''+g(x)y=f, z warunkami początkowymi y(a)=c i y'(a)=s było rozwiązaniem wyjściowego zagadnienia brzegowego
-y''+g(x)y=f,
y(a)=c i y(b)=d  dla  g(x)>=0.

Ponieważ równanie jest bardzo proste więc i metoda też. Wiemy, że rozwiązanie ogólne równania  ma postać
y(x)= ys (x) +c*y1(x)+s*y2(x)
gdzie
 ys(x) jest rozwiązaniem szczególnym równania, a
 y1 (x) jest rozwiązaniem równania jednorodnego tj. - y1''+g(x)y=0
z warunkami początkowymi :
y1(a)=1 i y1'(a)=0
z
kolei
y2(x) jest rozwiązaniem równania jednorodnego  z warunkami początkowymi:
y2(a)=0 i y2'(a)=1.

Stąd jeśli  znajdziemy dwa rozwiązania y(b,s1) i  y(b,s 2) to możemy wyliczyć
y2(b) = y(b,s1 ) -y(b,s2) /(s 1 - s2 )
i

ys(b) +c*y1 (b)=y(b,s1)-s1*y 2(b)

a stąd i
s= (d - ys(b) - c*y1(b) )/y2(b)

dla którego rozwiązanie problemu z warunkami początkowymi y(a)=c, y'(a)=s spełnia y(1)=d.
Oczywiście my znajdziemy te rozwiązania w sposób przybliżony.
 (Zauważmy, że np dla g(x)=0 mamy yi(x) =(x-a) i-1 , i=1,2 !)
Analogicznie można zastosować tę metode dla dowolnego liniowego równania drugiego stopnia postaci  y''+p(x)*y'+q(x)*y=f, y(a)=c i y(b)=d z warunkami brzegowymi y(a)=c i y(b)=d. gdzie p,q,f dowolne funkcje ciagle a a<b i c,d dowolne liczby, (dla chętnych, jakkolwiek niczego to specjalnie nie utrudni w implementacji metody, z pktu widzenia teorii nalezałoby uzasadnić jeszcze, że y2(b) (dla dowolnych funkcji p,q) różne od zera, tak jednak nie musi być w ogólności, i  zagadnienie brzegowe może nie mieć rozwiązania. Np. dla y''+y=0  mamy dwa rozwiązania niezależne lin. y1 (x)=cos(x) i y2(x)=sin(x) i stąd np. zagadnienie brzegowe y''+y=0,y(0)=0, y(2*Pi)=1 nie ma rozwiązania!)

Proszę zauważć, że cały projekt w istocie  sprowadza się do zaimplementowania schematu otwartego Rungego rzędu 4 dla ukladu dwóch równań (x1'=x2, x2'=-f z war. pocz. x 1 (a)=c i x2(a)=s) i  później  powyższych wzorów.

Zalecałbym przemyślenie metody i sprawdzenia wzorów, przed zaimplementowaniem!