Metody numeryczne fizyki/Sposoby rozwiązywania układów równań różniczkowych zwyczajnych z pewnymi warunkami początkowymi
Szablon:SkomplikowanaStronaStart
Będziemy się zajmować układem m równań różniczkowych, których rozwiązaniem są funkcje ySzablon:Sub=ySzablon:Sub(x) dla i=1,...,m z warunkiem początkowym ySzablon:Sub(xSzablon:Sub)=ySzablon:Sub, przedstawionych jako: Szablon:CentrujWzór Jeśli będziemy dodatkowo przyjmować jeszcze oznaczenia, co do wektora Szablon:Strong, Szablon:Strong i Szablon:Strong, których schemat jest: Szablon:ElastycznyWiersz Przy oznaczeniach Szablon:LinkWzór, Szablon:LinkWzór i Szablon:LinkWzór układ równań różniczkowych Szablon:LinkWzór zapisujemy w postaci jednego równania różniczkowego: Szablon:CentrujWzór Równanie Szablon:LinkWzór dla m=1 przechodzi w równanie skalarne. Przyjmijmy, że funkcja Szablon:Strong(x,Szablon:Strong) jest ciągła w zbiorze Szablon:Strong={(x,Szablon:Strong):Szablon:StrongSzablon:Sub≤x≤b,Szablon:Strong∈Szablon:StrongSzablon:Sup}. Zakładamy, że funkcja Szablon:Strong(x,Szablon:Strong) wcześniej podanym zbiorze spełnia warunek Lipschitza względem zmiennej wektorowej Szablon:Strong, których dla dowolnych , jeśli istnieje takie L dla x∈<xSzablon:Sub,b>, że jest spełniony warunek: Szablon:CentrujWzór Można udowodnić, że przy powyższych założeniach istnieje przynajmniej jedno rozwiązanie zagadnienia Szablon:LinkWzór. Rozwiązanie Szablon:StrongSzablon:Sub będziemy wyznaczać, jeśli będziemy znali rozwiązania Szablon:StrongSzablon:Sub.,Szablon:StrongSzablon:Sub,...,Szablon:StrongSzablon:Sub dla k≥0 przy zdefiniowanych punktach iteracji xSzablon:Sub=xSzablon:Sub+ih, w których będziemy wyznaczać funkcję Szablon:Strong(x,Szablon:Strong). Fakt takiego wyznaczania wyznaczania naszej funkcji wektorowej piszemy: Szablon:CentrujWzór Ponieważ rozwiązania Szablon:StrongSzablon:Sub wyznaczaliśmy z pewnym błędem, bo krok h jest skończony, a nie nieskończenie mały, to z prawej stronie w Szablon:LinkWzór powinna być pewna liczba ogólnie niezerowa przy zastąpieniu ySzablon:Sub przez ciąg wartości dokładnych YSzablon:Sub(x). Nazwijmy ten wektor jako Szablon:StrongSzablon:Sub, wtedy tą wielkość możemy przepisać do postaci liczby, która jest błędem wyznaczania wspomnianej wcześniej wielkości: Szablon:CentrujWzór We wzorze Szablon:LinkWzór wielkość γSzablon:Sub jest wielkością stałą niezerową, a liczba "p" jest liczbą zwana rzędem dokładności lub też zwana też jest rzędem metody przybliżonej.
Rozwiązywanie układu równań różniczkowych metodą Eulera
Najbardziej prostą i łatwą metodą jest metoda Eulera, która jest rozwiązaniem równania różniczkowego wektorowego Szablon:LinkWzór, a jego przedstawienie jest: Szablon:CentrujWzór Będziemy się zajmować tutaj tą metoda tylko dla przypadku m=1. Weźmy sobie rozwiązanie dokładne rozwiązania Szablon:LinkWzór, który wraz z błędem TSzablon:Sub przedstawiamy w formie: Szablon:CentrujWzór Przyjmując oszacowanie błędu εSzablon:Sub=YSzablon:Sub-ySzablon:Sub, wtedy odejmując równanie Szablon:LinkWzór od Szablon:LinkWzór otrzymujemy równanie, do którego wykorzystamy warunek Lipschitza, w postaci: Szablon:CentrujWzór Rozwińmy rekurencję Szablon:LinkWzór aż do samego parametru εSzablon:Sub, który jest błędem wyznaczania wartości ySzablon:Sub, w rezultacie otrzymujemy błąd bezwzględny wartości elementu ySzablon:Sub: Szablon:CentrujWzór Ponieważ zachodzi 1+u<eSzablon:Sup dla u>0, to równość Szablon:LinkWzór możemy napisać: Szablon:CentrujWzór Przyjmijmy oszacowanie εSzablon:Sub=0 i wzór na T Szablon:LinkWzór, wtedy wzór na błąd rozwiązania przybliżonego pisujemy w zależności od wskaźnika "n" i wartości początkowej xSzablon:Sub: Szablon:CentrujWzór Jeśli z oszacowania mamy h→0, to dla ustalonego punktu x (x-xSzablon:Sub=nh, n→∞, h→0) wartość ySzablon:Sub dąży do wartości dokładnej Y(x), a szybkość jego zbieżności do wartości dokładnej jest O(h).
Wprowadzenie do metod różnicowych
Niech "h" będzie krokiem całkowania, a aSzablon:Sub, bSzablon:Sub będą liczbami rzeczywistymi, wtedy możemy zbudować metodę różnicową, w którym za pomocą pewnych poprzednich wartości funkcji ySzablon:Sub i argumentów xSzablon:Sub możemy napisać następną wartość funkcji, przy pomocy równania: Szablon:CentrujWzór Dla k≥1 metodę Szablon:LinkWzór możemy tą metodę zastosować do rozwiązywania wartości równania różniczkowego Szablon:LinkWzór. Powyższą metodę stosujemy, gdy mamy elementy xSzablon:Sub,..,xSzablon:Sub, ale warunek początkowy gwarantuje nam tylko wartość funkcji w punkcie xSzablon:Sub, zatem aby wyznaczyć te nasze brakujące punkty należy posłużyć się innymi metodami. Gdy bSzablon:Sub=0, to powyższą metodę nazywamy wzorek ekstrapolacyjnym jawnym. Natomiast jeśli bSzablon:Sub≠0, to powyższy wzór przy pomocy wzoru Szablon:LinkWzór dla dokładnych obliczeń możemy przepisać w formie: Szablon:CentrujWzór Wyrazy YSzablon:Sub możemy rozłożyć w szereg Tayllora w otoczeniu punktu xSzablon:Sub, wtedy współczynniki ASzablon:Sub przy tych wyrazach przepisujemy w postaci: Szablon:CentrujWzór Szablon:CentrujWzór Jeśli ASzablon:Sub=0 i=0,1,...p, ale ASzablon:Sub≠0, to metoda Szablon:LinkWzór przy współczynnikach Szablon:LinkWzór i Szablon:LinkWzór nazywamy metodą różnicową rzędu p, ponadto błąd metody różnicowej wyznaczamy przy pomocy formuły: Szablon:CentrujWzór Metodę różnicową nazywamy zbieżną, gdy dla nh=x-xSzablon:Sub mamy spełniony warunek: Szablon:CentrujWzór Szablon:Twierdzenie
Analiza błędów
Błąd rozwiązania przybliżonego Szablon:Formuła względem rozwiązania dokładnego YSzablon:Sub określamy: Szablon:CentrujWzór Równanie iteracyjne określająca wartość dokładną iteracyjną przy błędzie iteracji TSzablon:Sub, określamy na całym przedziale, w której chcemy wyznaczyć rozwiązanie równania Szablon:LinkWzór, jest napisana: Szablon:CentrujWzór Równanie iteracyjne na ciąg Szablon:Formuła z błędem powstałym w wyniku przybliżeń na maszynie cyfrowej określamy: Szablon:CentrujWzór Wzory Szablon:LinkWzór i Szablon:LinkWzór odejmujemy je od siebie i wykorzystujemy wzór Szablon:LinkWzór i zakładając, że BSzablon:Sub=TSzablon:Sub+δSzablon:Sub, a także przyjmując oznaczenie Szablon:Formuła, w ten sposób otrzymujemy tożsamość: Szablon:CentrujWzór Będziemy wykorzystywać twierdzenie o wartości średniej, w ten sposób zmienną ηSzablon:Sub możemy przepisać w postaci: Szablon:CentrujWzór Biorąc pod uwagę obliczenia Szablon:LinkWzór, a także biorąc pod uwagę obliczenia Szablon:LinkWzór i przenosząc wyraz o wskaźniku i=0 w pierwszej sumie po prawej jego stronie na jej lewą stronę, w ten sposób otrzymujemy schemat dla n≥k-1: Szablon:CentrujWzór Weźmy sobie, że pochodna funkcji fSzablon:Sub względem zmiennej y jest równa parametrowi Λ i jest równa pewnej stałej, tzn. Szablon:Strong=fSzablon:Sub=const, która jest macierzą o stopniu m na m, bo mamy m równań Szablon:LinkWzór i m wartości xSzablon:Sub, dla i=1,..,m, co to można podstawić tak wytłumaczony wzór do Szablon:LinkWzór i otrzymać bardziej prostą do wyglądu równanie w porównaniu do poprzedniego dla n≥k-1: Szablon:CentrujWzór Będziemy zakładać, że Szablon:Formuła, to rozwiązaniem równania Szablon:LinkWzór przy założeniu, że ASzablon:Sub Szablon:LinkWzór jest równe zero, aby ciąg wartości Szablon:LinkWzór dążył do zera, przy n nieskończonym i malejącej różnicy h pomiędzy punktami xSzablon:Sub, czyli był zbieżny, co stąd wynika, że równanie Szablon:LinkWzór generuje ciąg εSzablon:Sub: Szablon:CentrujWzór Przyjmijmy natomiast λ=Λ, wtedy na podstawie tego równość Szablon:LinkWzór dla przypadku m=1 przyjmuje kształt: Szablon:CentrujWzór Rozwiązaniem równania Szablon:LinkWzór jest rozwiązaniem zależne od stałej μ i parametru n, i go przedstawiamy w formie: Szablon:CentrujWzór Rozwiązanie Szablon:LinkWzór podstawiamy do równania Szablon:LinkWzór i go obustronnie dzielimy przez μSzablon:Sup i mnożymy przez μSzablon:Sup, w ten sposób otrzymujemy ostatecznie równanie: Szablon:CentrujWzór Równanie charakterystyczne Szablon:LinkWzór może mieć k różnych pierwiastków Szablon:Formuła, wtedy rozwiązaniem równania Szablon:LinkWzór, czyli εSzablon:Sub jest rozwiązaniem w postaci: Szablon:CentrujWzór a jeśli równanie Szablon:LinkWzór ma pierwiastki jednokrotne, a także różniące się od siebie, to rozwiązanie εSzablon:Sub równania Szablon:LinkWzór możemy napisać: Szablon:CentrujWzór Natomiast, jeśli Szablon:LinkWzór zawiera pierwiastki zespolone, to taki pierwiastek tego równania zapiszemy w postaci cosinusów i sinusów jako: Szablon:CentrujWzór to rozwiązaniem równania Szablon:LinkWzór, gdy jego pierwiastki mogą być niektóre zespolone, piszemy przy pomocy obliczeń Szablon:LinkWzór: Szablon:CentrujWzór Zajmijmy się teraz rozwiązaniem równania Szablon:LinkWzór, gdy m≠1, wtedy wzór na εSzablon:Sub jest: Szablon:CentrujWzór wtedy wzór Szablon:LinkWzór możemy podstawić do ostatnio wspomnianego równania, wtedy przy oznaczeniu: Szablon:CentrujWzór wtedy przy powyższym oznaczeniu możemy powiedzieć: Szablon:CentrujWzór Aby rozwiązanie Szablon:LinkWzór miało niezerowe rozwiązania Szablon:Strong, to musi zachodzi z wiadomości z algebry: Szablon:CentrujWzór Wzór Szablon:LinkWzór jest rozwiązaniem równania jednorodnego Szablon:LinkWzór, przy definicji macierzy Szablon:Strong(μ) Szablon:LinkWzór, której wyznacznik się zeruje i on ma się w postaci funkcji zależnej od "km" i od μSzablon:Sub, a także zależy od otrzymanej bazy wektorów naszego rozważanego równania jednorodnego, całkowite rozwiązanie jest jego kombinacją liniową: Szablon:CentrujWzór Dokonajmy przekształcenia macierzy Szablon:LinkWzór, w taki sposób by do niego otrzymać macierz podobną, która jest macierzą trójkątną górną, w której na diagonali występują wartości własne, według Szablon:Formuła: Szablon:CentrujWzór Rozwiązaniem równania własnego Szablon:LinkWzór przy macierzy Szablon:LinkWzór, gdy wyznacznik z macierzy Szablon:LinkWzór jest równy zero, wtedy równanie, z którego będziemy wyznaczać Szablon:Formuła, ma kształt dla j=1,...,m: Szablon:CentrujWzór Widzimy, że równanie Szablon:LinkWzór jest bardzo podobne do Szablon:LinkWzór, dlatego go będziemy podobnie rozwiązywać.
Stabilność metody różnicowej i jej zbieżność do granicy
Zbadajmy rozwiązanie dla m=1, i napiszmy pochodną funkcji "y" względem wartości "y", którego to równanie przedstawimy wychodząc od Szablon:LinkWzór przy założeniu, że funkcja "f" jest wprost proporcjonalna do wartości funkcji "y": Szablon:CentrujWzór wtedy równość Szablon:LinkWzór możemy podstawić do równania różnicowego Szablon:LinkWzór, co w końcu do niego podstawimy ySzablon:Sub=μSzablon:Sup otrzymując z niego wynikające równanie charakterystyczne w drugiej równości: Szablon:CentrujWzór Równanie Szablon:LinkWzór jest bardzo podobne do równania Szablon:LinkWzór, a więc tak samo będziemy rozwiązywać. Jego rozwiązanie jest: Szablon:CentrujWzór Jeśli metoda różnicowa jest rzędu p, to pierwiastek charakterystyczny, który wynika z równania charakterystycznego wychodzącego od Szablon:LinkWzór, możemy przedstawić w formie: Szablon:CentrujWzór Współczynniki dSzablon:Sub w Szablon:LinkWzór wynikają z "k" warunków początkowych. Wartość ySzablon:Sub dąży do ySzablon:Sub przy h dążącym do zera dla i=1,...,k-1. Aby wyznaczyć współczynnik dSzablon:Sub(h) należy je obliczyć według: Szablon:CentrujWzór Gdy h→0, to współczynnik dSzablon:Sub powinien dąży do ySzablon:Sub, a pozostałe współczynnik przy tym samym h powinny dążyć do zera, co te dwa warunki możemy przepisać: Szablon:ElastycznyWiersz Zauważmy, że w rozwiązaniu Szablon:LinkWzór pierwszy wyraz dąży do rozwiązania dokładnego, patrząc na rozwiązanie Szablon:LinkWzór, przedstawionych według Y(x)=ySzablon:SubeSzablon:Sup z warunkiem początkowym y(xSzablon:Sub)=ySzablon:Sub. Współczynniki μSzablon:Sub,...,μSzablon:Sub nazywamy pierwiastkami pasożytniczymi, a wyrazy w Szablon:LinkWzór oprócz pierwszego składnika nazywamy częścią pasożytniczą. Dla λ>0 i h w miarę małych możemy napisać μSzablon:Sub=μSzablon:Sub(h)>0, to wtedy błąd εSzablon:Sub patrząc na Szablon:LinkWzór i na Szablon:LinkWzór przepisujemy w formie: Szablon:CentrujWzór Wielkość ma ściśle ustaloną i określoną wartość h>0, jeśli na pierwiastki równania charakterystycznego Szablon:LinkWzór nałożymy warunek |μSzablon:Sub|≤1, to żaden że współczynników cSzablon:SubμSzablon:Sub nie będzie rósł, gdy "n" będzie dążyło do nieskończoności, a jeśli rozwiązanie dokładne będzie wzrastało, to nie należy oczekiwać |μSzablon:Sub|≤1., wtedy Szablon:Formuła będzie wzrastało nieograniczenie. Jeśli położymy warunek |μSzablon:Sub|≤|μSzablon:Sub| gwarantuje by część pasożytnicza w Szablon:LinkWzór nie rosła szybciej niż pierwszy jego wyraz. Metodę różnicową nazywamy stabilną, gdy wartość bezwzględna każdego współczynnika μSzablon:Sub w Szablon:LinkWzór była mniejsza lub równa jedynce, a gdy wartość bezwzględna μSzablon:Sub jest mniejsza lub równa wartości bezwzględej μSzablon:Sub, to tą metodę nazywamy względnie stabilną. Powyższą metodę nazywamy absolutnie stabilną na przedziale (λβ), gdy spełniony jest warunek hλ∈(αβ). Metodę względnie stabilną na przedziale podobnie definiujemy. Przyjdźmy teraz dla przypadku m>1 i napiszmy równanie wynikającego z Szablon:LinkWzór, które to przedstawimy w zależności od macierzy Szablon:Strong wychodząc od równania Szablon:LinkWzór: Szablon:CentrujWzór Rozwiązaniem dokładnym równania Szablon:LinkWzór nazywamy wzór zależny od "h", który to przepiszemy w formie: Szablon:CentrujWzór Rozwiązaniem napisane dla poszczególnych punktów odległych od siebie o krok h przedstawiamy w zależności od współczynników μSzablon:Sub, która jest rozwiązaniem równania charakterystycznego wynikłego z Szablon:LinkWzór: Szablon:CentrujWzór Błąd metody różnicowej Szablon:LinkWzór określamy na podstawie wzoru Szablon:LinkWzór przy wykorzystaniu Szablon:LinkWzór wzór na wyznaczanie dokładnego rozwiązania: Szablon:CentrujWzór Metodę absolutnie stabilną i względnie stabilną określonych Szablon:Strong na współczynniki błędu określamy podobnie jak dla wyznaczania wartości Szablon:StrongSzablon:Sub. Szablon:Twierdzenie Wyznaczmy teraz błąd rozwiązania dokładnego, która w przedziale <xSzablon:Sub,b> ma ciągłe pochodne, która jest rzędu p i rozwiązanie różnicowe jest zbieżne do rozwiązania dokładnego, wtedy jest prawdziwe oszacowanie: Szablon:CentrujWzór gdzie:
Wzory różnicowe Rungego-Kutta
Określmy metodę typu Rungego-Kutta, który jest pewnym wzorem analogicznym do wzoru różnicowego, określany jako: Szablon:CentrujWzór a wzory na Szablon:StrongSzablon:Sub określamy według dwóch wzorów: Szablon:ElastycznyWiersz
- gdzie stałymi w w metodzie Szablon:LinkWzór i we wzorach Szablon:LinkWzór i Szablon:LinkWzór są wSzablon:Sub, aSzablon:Sub, bSzablon:Sub.
W przeciwieństwie do metody różnicowej w metodzie Rungego-Kutta wystarczy tylko warunek początkowy brzegowy. W prawej stronie metody Szablon:LinkWzór należy wykonywać liczenie funkcji Szablon:Strong(x,Szablon:Strong) s razy. Ale wykazano, że dla rzędu metody p=2,3,4 najmniejsza ich liczba obliczeń jest s=p, a dla p>4 ich liczba jest s>p. Rząd metody Szablon:LinkWzór wyznaczamy podobnie jak rząd metody różnicowej Szablon:LinkWzór. Najbardziej praktyczne znaczenie ma metoda rzędu s=4, ale do wymaga wyczerpujących obliczeń. Bowiem nie wystarcza już porównanie współczynników przy "h", które te współczynniki zależą od fSzablon:Sub(x,y) i od ich pochodnych cząstkowych.
Metoda Ruungego-Kutta dla s=1 i wSzablon:Sub=1 jest metodą różnicową Eulera Szablon:LinkWzór. Omówmy teraz bardzo prosty przypadek jak tylko możliwe, tzn. dla m=1 i s=2 Stosując twierdzenie Tayllora i rozkładając prawą i lewą stronę równania w naszej metodzie, otrzymujemy: Szablon:CentrujWzór gdzie:
W powyższych obliczeniach korzystano ze wzoru Szablon:LinkWzór. We wzorze możemy porównań współczynniki stojące przy hSzablon:Sup otrzymujemy stąd dwa wzory: Szablon:ElastycznyWiersz Chcemy by wzory w Szablon:LinkWzór niezależały od funkcji f(x,y), to należy przyjąć trzy bardzo ważne wzory: Szablon:ElastycznyWiersz Jeśli będziemy przyjmować Szablon:Formuła, Szablon:Formuła, i będziemy przyjmować oszacowanie |f|≤M i Szablon:Formuła dla i+j≤2, to błąd metody Rundego-Kutty liczymy ze wzoru Szablon:LinkWzór, a więc parametr tam występujący γSzablon:Sub przepisujemy w formie: Szablon:CentrujWzór Przy wyżej poczynionych uwagach metodę Rundego-Kutty przy poczynionych uwagach KSzablon:Sub=hf(xSzablon:Sub, ySzablon:Sub) i KSzablon:Sub=hf(xSzablon:Sub+aSzablon:Subh,ySzablon:Sub+aSzablon:SubKSzablon:Sub) przyjmujemy w postaci: Szablon:CentrujWzór Dla przypadku m>1 metoda Rundego-Kutty prowadzi do: Szablon:CentrujWzór
Rozważania na temat stabilności metod Rungego-Kutty i jego rozwiązania
Weźmy sobie równanie Szablon:LinkWzór, które tutaj przedstawimy w postaci y'=λy, zatem rozwiązanie równania Szablon:LinkWzór dla przypadku m=1 przedstawiamy: Szablon:CentrujWzór wtedy rozwiązaniem w metodzie Rundego-Kutty przedstawiamy w zależności od ySzablon:Sub, wychodząc od rozwiązania równania charakterystycznego, sposobem: Szablon:CentrujWzór Powyższe równanie dla h→0 dąży do równania dokładnego Y(x)=ySzablon:SubeSzablon:Sup. Już dla przypadku s=2, gdy rzędem metody jest p=s=2, to rozwiązaniem równania charakterystycznego nazywamy wzór poniżej, z którego możemy wyznaczyć ten sam wzór na rozwiązanie dokładne Y(x) jak uzyskano w postaci wynikania z punktu Szablon:LinkWzór: Szablon:CentrujWzór Dla równania czwartego rzędu Rundego-Kutty układ jest określony przy pomocy parametrów wSzablon:Sub, aSzablon:Sub, bSzablon:Sub, który w sumie zawiera w sumie 13 niewiadomych i 11 równań, czyli nie są one jednoznacznie określone. W tabelce poniżej podano wzory dla metody czwartego rzędu. Przy metodzie Gilla obliczenia mają największą dokładność obliczeń. Wzór Ralstona daje największe osiągalne oszacowanie błędu γSzablon:Sub. Rozwiązanie równania charakterystycznego dla metody Rundego-Kutty dla metody czwartego rzędu piszemy: Szablon:CentrujWzór
Niektóre wzory różnicowe
Przedstawimy tutaj dziesięć wzorów różnicowych, w których wzory od 1-5 są wzorami jawnymi, a wzory 6-10 wzorami uwikłanymi, a oto te wzory: Szablon:Tabelka
Wzory 1-4 mają typ Adamsa-Bashfortha, a wzór 5 posiada typ Milne'a, a wzór 6-9 mają typ Adamsa-Moultona, a formuła 10 posiada typ Hamminga. Określmy teraz rząd metody zbieżnej, która wynosi k+2 dla k parzystego i dla k nieparzystego rząd jej wynosi k+1. Rozpatrujmy za Hammingiem wzór różnicowy, który przepisujemy do postaci: Szablon:CentrujWzór Jeśli zechcemy rozpatrzyć metodę czwartego rzędu równania różnicowego Szablon:LinkWzór, co stąd otrzymamy sześć wzorów na współczynniki aSzablon:Sub, aSzablon:Sub, aSzablon:Sub, bSzablon:Sub, bSzablon:Sub, które zapiszemy od współczynnika aSzablon:Sub: Szablon:ElastycznyWiersz
Błąd wyznaczania w metodzie różnicowej rozwiązania przybliżonego ySzablon:Sub względem rozwiązania dokładnego YSzablon:Sub określamy metodą w zależności od aSzablon:Sub, wtedy: Szablon:CentrujWzór Wykorzystujemy podstawienie ySzablon:Sub=μSzablon:Sup, to wzór różnicowy Szablon:LinkWzór po wykorzystaniu tego ostatniego i wzory na pochodną y'Szablon:Sub=λ ySzablon:Sub, dochodzimy do wniosku że równanie charakterystyczne, które możemy przepisać w zależności od aSzablon:Sub: Szablon:CentrujWzór Dla warunek stabilności jest spełniony przy h=0, ale już w przeciwnym przypadku musimy wybrać takie aSzablon:Sub umieszczona w pobliżu środka przedziału, co wtedy wzór będzie stabilny dla tego przypadku, ale Hamming wziął przypadek aSzablon:Sub=0, wtedy wykorzystując równanie różnicowe Szablon:LinkWzór i wzory Szablon:LinkWzór, Szablon:LinkWzór, Szablon:LinkWzór i Szablon:LinkWzór, to w takim przypadku równanie charakterystyczne Szablon:LinkWzór, w którym przedziałem stabilności przy hλ piszemy (-2,6,0), rysujemy do postaci: Szablon:CentrujWzór Weźmy sobie równanie różnicowe Newtona-Cotesa rozwiązujemy równanie róznicowe y'=f(x,y) przedziale zmienności <xSzablon:Sub,xSzablon:Sub>, wtedy rozważane równanie różnicowe przepisujemy do jego właściwej formy: Szablon:CentrujWzór Funkcja podcałkowa występująca w drugim składniku w równaniu różnicowym Szablon:LinkWzór, w której występuje y(x), jest nie znana, więc zbudujmy odpowiedni wielomian L(x), który jest równoważny wielomianowi f(x,y(x)), który piszmy według wyglądu , wtedy równość Szablon:LinkWzór przepisujemy w formie: Szablon:CentrujWzór Powyższy wzór nazywamy wzorem jawnym, ale już dla j=0 ten wzór przechodzi w wzór Adamsa-Bashfortha.
Zmienny etap całkowania
Zwykle dokonujemy całkowania przy stałym kroku całkowania, ale na maszynach cyfrowych stosuje zmienny krok całkowania. Na samym początku ustalamy taki krok całkowania, by wielkość błędu była mniejsza niż wielkość ε, to rozwiązanie równania całkowania powinno być żądaną dokładność w ściśle ustalonym przedziale całkowania, a jeśli błąd metody różnicowej jest większy od ustalonej wielkości, to ustalamy mniejszy krok całkowania. W metodzie różnicowej Rungego-Kutty stosuje tzw. zasadę Rungego, i ustalmy początkowo ySzablon:Sub=Y(xSzablon:Sub). Weźmy teraz przybliżone rozwiązanie metody różnicowej Szablon:Formuła, które stosujemy w punkcie xSzablon:Sub=xSzablon:Sub+h, dla obliczeń wykonanych dwukrotnie z krokiem h/2. Dla tego podwójnego kroku błąd metody różnicowej wykorzystując wzór Szablon:LinkWzór przepisujemy, gdzie p jest rzędem metody różnicowej, w formie: Szablon:CentrujWzór A jeśli wykorzystamy krok całkowania h i będziemy obliczali wartość przybliżoną metody różnicowej ustalaną w punkcie xSzablon:Sub, wtedy błąd tejże metody jest napisany wzorem: Szablon:CentrujWzór Jeśli będziemy odejmować wzory Szablon:LinkWzór i Szablon:LinkWzór od siebie, dalej i będziemy przyjmować fakt , wtedy na podstawie tego powiemy przy założeniu : Szablon:CentrujWzór
Połączenie wzorów interpolacyjnych i ekstrapolacyjnych w metodach różnicowych
Weźmy sobie metodę różnicową Szablon:LinkWzór. Jeśli w tej metodzie będziemy liczyli współczynniki ASzablon:Sub, to widzimy, że one dla bSzablon:Sub≠0 dla wzorów ektrapolacyjnych są większe niż dla wzorów interpolacyjnych. Dla tych formuł w metodzie ekstrapolacyjnych musimy na każdym etapie całkowania stosować wzory liniowe ze względu na y, podczas gdy we wzorach ekstrapolacji stosowane jest podstawienie do wzorów. Metodę iteracji prostej piszemy w zależności od ωSzablon:Sub w sposób: Szablon:CentrujWzór a w metodzie Newtona rysujemy: Szablon:CentrujWzór Wzory na współczynniki ωSzablon:Sub w Szablon:LinkWzór i Szablon:LinkWzór piszemy według schematu: Szablon:CentrujWzór Przy wykorzystaniu wzoru Szablon:LinkWzór wartość należy dobrać w taki sposób by była ona bliska wartości , by można było wykonać najmniejszą liczbę iteracji, jak się okazuje, że najlepiej wartość dobrać ze wzoru ekstrapolacyjnego, który nazwiemy wzorem wstępnym, a wzór iterpolacyjny, którego poprawiamy rozwiązanie nazywamy wzorem korygującym. Jeśli połączymy wzory ekstrapolacyjne i interpolacyjne nazywamy metodą ekstrapolacyjno-interpolacyjną. Przy liczeniu kolejnych iteracji ySzablon:Sub stosuje się wzór wstępny i korygujący, a oto rozważmy przykład: Szablon:ElastycznyWiersz Z których wzór Szablon:LinkWzór nazywamy wzorem wstępnym, a drugi wzór Szablon:LinkWzór nazywamy wzorem korygującym, co w tych wzorach przedziały stabilności są (-2,0) i (-∞,0). Jeśli wykorzystamy wzór Szablon:LinkWzór i Szablon:LinkWzór, w której to metodzie mamy jedną iterację prostą i korygującą, to zapisać będziemy mogli: Szablon:ElastycznyWiersz Metoda powyższa określona wzorami Szablon:LinkWzór i Szablon:LinkWzór jest metodą Rungego-Kutty drugiego rzędu, przedział stabilności tej metody jest (-2,0). A natomiast dokonamy jedną iterację wstepną i dwie iteracje korygujące, to otrzymamy wtedy: Szablon:CentrujWzór Szablon:CentrujWzór Szablon:CentrujWzór Stabilność absolutna metody określonej trzema powyższymi metodami jest (-2,0).
Zastosowanie metody różnicowej Hamminga
Zastosujmy wzory 5 i 10 w ostatnio podanej tablicy, którego pierwszy jest wzorem wstępnym, a drugi wzorem korygującym, te formuły piszemy: Szablon:CentrujWzór Szablon:CentrujWzór Równania przedstawiające równania na rozwiązania dokładne przy błędach Szablon:Formuła dla wzoru wstępnego i przy Szablon:Formuła dla wzory korygującego przedstawiamy: Szablon:CentrujWzór Szablon:CentrujWzór Błędy , przedstawiamy jak nie trudno udowodnić wzorami: Szablon:ElastycznyWiersz Jeśli wprowadzimy oznaczenia εSzablon:Sub=YSzablon:Sub-ySzablon:Sub i ε'Szablon:Sub=Y'Szablon:Sub-y'Szablon:Sub, wtedy połączenie wzorów Szablon:LinkWzór, Szablon:LinkWzór oraz Szablon:LinkWzór, Szablon:LinkWzór daje nam w wyniku czego: Szablon:CentrujWzór Szablon:CentrujWzór Jeśli połączymy dwa ostatnie wzory odejmując je od siebie w ostateczności dostajemy: Szablon:CentrujWzór Jeśli założymy, że εSzablon:Sub zmienia się wolno przy każdym kroku, a hε'Szablon:Sub jest małe od błędu metody i YSzablon:Sup praktycznie się nie zmienia od ξSzablon:Sub i ξSzablon:Sub, wtedy wykorzystując wzór Szablon:LinkWzór błędy dla rozwiązania przybliżonego względem dokładnego rozwiązania, tzn. wzory Szablon:LinkWzór i Szablon:LinkWzór, piszemy: Szablon:ElastycznyWiersz Jeśli dodatkowo założymy, że różnica ySzablon:Sub i Szablon:Formuła jest mała z przejścia do przejścia, wtedy w Szablon:LinkWzór zamieniamy z n+1 na n. Szablon:Formuła możemy zastąpić różnicą Szablon:Formuła, a w tak powstałym równaniu Szablon:Formuła wyznaczamy ze wzoru Szablon:LinkWzór, a Szablon:Formuła piszemy ze wzoru z ostatnio powstałego wzoru po zastąpieniu przez różnice wcześniej powiedzianego, a Szablon:Formuła korygujemy wzorem korygującym przy pomocy wzoru Szablon:LinkWzór i wzory poniższego, którą nazywamy metodą Hamminga: Szablon:CentrujWzór Dla pierwszego przybliżenia Szablon:Formuła bardzo dobrze przybliża rozwiązanie równania różnicowego ySzablon:Sub przy pierwszym zastosowaniu wzoru korygującego. To rozwiązanie możemy poprawić, bo potrafimy wyznaczyć błąd TSzablon:Sub. Na maszynach cyfrowych metodę Hamminga piszemy wedle schematów, w których pierwszy wzór jest wzorem wstępnym Szablon:LinkWzór, a drugi modyfikujący Szablon:LinkWzór, trzeci równanie różniczkowe, którego chcemy rozwiązać Szablon:LinkWzór, w którym y zastępujemy przez Szablon:Formuła, czwarty wzór korygujący zapisany według Szablon:LinkWzór dla j=0, w którym ySzablon:Sub zastępowaliśmy przez Szablon:Formuła, a piąty wzór końcowy jest to: Szablon:CentrujWzór