6 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numeryczne [2009], Kosma Z - Metody i algorytmy numeryczne [2009]


4 2.0000E+0000 7.383970324E+0000 5.0858E-0003

5 2.5000E+0000 1.217201358E+0001 1.0480E-0002

6 3.0000E+0000 2.006480364E+0001 2.0733E-0002

7 3.5000E+0000 3.307557475E+0001 3.9877E-0002

8 4.0000E+0000 5.452301775E+0001 7.5132E-0002

9 4.5000E+0000 8.987778706E+0001 1.3934E-0001

10 5.0000E+0000 1.481579146E+0002 2.5524E-0001

6.1.4. Liniowe metody wielokrokowe

Liniowa metoda k-krokowa (k jest zadaną liczbą naturalną) konstruuje ciąg: , , ... przybliżeń wartości rozwiązania zagadnienia (6.9) w równoodległych punktach: 0x01 graphic
spełniający zależności [29, 30]

(6.60)

Nazwa metody wynika stąd, że zarówno pochodną jak i prawą stronę równania (6.1) aproksymują wartości funkcji na k krokach. W każdym kroku obliczeń w metodzie tej korzysta się z k znanych, poprzednio obliczonych wartości: Liniowość metody oznacza jej liniową zależność od wartości funkcji W szczególności przy: z oraz otrzymamy metodę Eulera jako przykład najprostszej liniowej metody jednokrokowej.

Metoda wielokrokowa liniowa może być jawna w przypadku, gdy

(6.61)

bądź też niejawna, w przypadku przeciwnym

(6.62)

Większość najczęściej stosowanych liniowych metod wielokrokowych opiera się na aproksymacji całki

0x01 graphic
(6.63)

równoważnej równaniu (6.1), kwadraturami interpolacyjnymi.

Całkowaną niewiadomą funkcję 0x01 graphic
przybliżymy wielomianem interpolacyjnym Lagrange'a 0x01 graphic
stopnia q, opartego na węzłach dla Zgodnie ze wzorem (4.12) mamy

0x01 graphic

i następnie dla otrzymujemy wzór aproksymujący całkę (6.63)

0x01 graphic

We wzorze tym wygodnie jest dokonać zamiany zmiennej, podstawiając Ostatecznie jest

0x01 graphic
(6.64)

gdzie

0x01 graphic

W zależności od wyboru liczb r, l i q możemy wyprowadzić różne metody wielokrokowe. Przyjmując: r = 1, l = 0, q = 0, 1, 2, ... otrzymujemy wzory AdamsaBashfortha:

0x01 graphic
(6.65)

Podobnie dla: r = 0, l = 1, q = 0, 1, 2, ... otrzymujemy wzory Adamsa-Moul-tona:

0x01 graphic
(6.66)

0x01 graphic
(6.66cd.)

Innym rodzajem tego typu wzorów są wzory Nyströma (r = 1, l = 1) oraz wzory Milne'a (r = 0, l = 2).

Wzory (6.65) są wzorami jawnymi (ekstrapolacyjnymi), wzory (6.66) - wzorami niejawnymi (interpolacyjnymi). Wzory niejawne w porównaniu ze wzorami jawny-mi mają wyższy rząd dokładności i znacznie większy przedział stabilności absolutnej oraz charakteryzują się mniejszą wartością stałej błędu. Zaletą metod jawnych jest tylko łatwe obliczanie kolejnej wartości

Praktyczną realizacją metody wielokrokowej niejawnej jest metoda predyktorkorektor. W każdym kroku pierwszym etapem obliczeń jest tak zwana predykcja, to znaczy obliczanie przybliżenia początkowego za pomocą metody jawnej, a drugim etapem obliczeń jest tak zwana korekcja, czyli dokonanie kilku iteracji za pomocą metody niejawnej. Należy tu podkreślić, że chodzi tu o zastosowanie metody niejawnej, a metoda jawna gra rolę pomocniczą i służy jedynie do zapoczątkowania procesu iteracyjnego. Skuteczność metody predyktor-korektor zależy nie tylko od własności teoretycznych użytych metod wielokrokowych, ale wymaga także uwz-ględnienia szeregu czynników o charakterze praktycznym.

*

Przedstawiony sposób wyprowadzania wzorów różnicowych narzuca pewne ograniczenia na ich postać. Wychodząc natomiast z ogólnego wzoru różnicowego (6.60) możemy wyprowadzać różne wzory różnicowe, których nie można uzyskać z kwadratur interpolacyjnych.

W celu wyprowadzenia wzorów na współczynniki równania różnicowego (6.60) rozwiniemy wartości funkcji oraz ich pochodnych w szeregi Taylora w otoczeniu punktu xi

0x01 graphic

0x01 graphic

Po podstawieniu tych rozwinięć do (6.60) i uporządkowaniu otrzymujemy

(6.67)

gdzie oznaczono:

0x01 graphic
(6.68)

Ograniczając się do p +1 wyrazów uzyskujemy stąd równania:

(6.69)

umożliwiające wyznaczenie wszystkich współczynników:

Określona w ten sposób metoda wielokrokowa liniowa jest rzędu p; współczynnik nosi nazwę błędu metody.

Ze względu na warunki (6.69) i budowę wzorów (6.68) jednemu spośród współ-czynników: ( j = 0, 1, ..., k) można nadać dowolną wartość; przyjmiemy

(6.70)

Wyznaczymy współczynniki jawnej i niejawnej metody dwukrokowej. W przypadku metody jawnej ( = 0) otrzymujemy:

0x01 graphic
(6.71)

0x01 graphic
(6.71cd.)

Dla = 0 obliczamy:

Są to współczynniki określające drugi ze wzorów (6.65). Błąd tej metody wynosi

0x01 graphic

W przypadku dwukrokowej metody niejawnej niewiadome współczynniki:

wyznaczamy z układu równań:

0x01 graphic
(6.72)

W szczególnym przypadku dla = 0 otrzymujemy współczynniki określające trzeci ze wzorów (6.66):

Odnotujmy jeszcze wzór dla błędu tej metody

Wynika stąd, że rząd rozważanej dwukrokowej metody niejawnej wynosi 3, podczas gdy rząd metody jawnej jest równy 2. Istnieje ponadto możliwość zwiększenia rzędu metody niejawnej, gdyż maksymalny osiągalny rząd dla k parzystego wynosi
( k +2), a dla k nieparzystego ( k +1) [30].

*

Omówimy teraz warunki, jakie muszą spełniać współczynniki liniowej metody wielokrokowej określonej wzorem (6.60), aby metoda wielokrokowa była zgodna, zbieżna i stabilna.

Biorąc pod uwagę fakt, że występujące w rozwinięciu (6.67) wartości funkcji i jej pochodnych nie mogą znikać, w granicy dla otrzymujemy warunki:

(6.73)

a więc liniowa metoda wielokrokowa jest zgodna (spełnia warunek aproksymacji), jeśli jest ona co najmniej rzędu pierwszego.

W teorii liniowych metod wielokrokowych definiuje się dwa wielomiany charakterystyczne:

- wielomian

0x01 graphic
(6.74)

- wielomian 0x01 graphic

0x01 graphic
(6.75)

W przypadku metody zgodnej wielomiany te mają następujące własności:

0x01 graphic
0x01 graphic
(6.76)

co łatwo można sprawdzić przez porównanie z warunkami zgodności (6.73).

Udowadnia się [30], że liniowa metoda wielokrokowa jest zbieżna wtedy i tylko wtedy, gdy jest zgodna i stabilna.

Rozstrzygnięcie problemu zbieżności następuje na drodze badania własności wielomianów (6.74) i (6.75). Metoda wielokrokowa jest stabilna, jeżeli pierwiastki wielomianu charakterystycznego (6.74) tej metody leżą w kole jednostkowym, przy czym pierwiastki o module równym jedności są pojedyncze. Stabilność określoną w powyższej definicji nazywa się stabilnością Dahlquista (lub zerostabilnością). Metodę wielokrokową nazywamy silnie stabilną, jeśli jedynym pierwiastkiem wielomianu o module 1 jest pierwiastek równy 1. Jeśli oprócz pierwiastka = 1 istnieją inne pierwiastki o module równym jedności metoda jest słabo stabilna. Wszystkie metody (6.65) - (6.66) są silnie stabilne.

Zerostabilność metody wielokrokowej gwarantuje istnienie numerycznego rozwiązania asymptotycznego. Można ją uważać za własność metody, powodującą „wygaszanie” członów pasożytniczych w rozwiązaniu przybliżonym, powstających wskutek zastąpienia pochodnej pierwszego rzędu wyrażeniami różnicowymi rzędów wyższych niż pierwszy.

Oprócz zerostabilności istotne jest jeszcze określenie stabilności numerycznej tzn. zbadanie warunków, przy których nie występuje narastanie błędu numerycznego. Stabilność ta jest badana, tak samo jak w metodzie Rungego-Kutty, dla modelowego zagadnienia (6.50). Po zaburzeniu wartości funkcji na kroku i+j łatwo stwierdzamy, że o zachowaniu się błędów decyduje wielomian stabilności numerycznej

0x01 graphic
(6.77)

Liniową metodę wielokrokową nazywamy absolutnie stabilną, jeśli pierwiastki wielomianu spełniają nierówność

(6.78)

W przeciwnym wypadku metoda jest absolutnie niestabilna.

Liniową metodę wielokrokową nazywamy względnie stabilną, jeśli pierwiastki wielomianu spełniają nierówność

(6.79)

W przeciwnym razie metoda jest względnie niestabilna. Stabilność względna oznacza, że błąd narasta wolniej niż rozwiązanie zagadnienia różniczkowego.

Dla metod absolutnie stabilnych i metod względnie stabilnych można określić odpowiednie przedziały otwarte (a, b) zawierające takie wartości które zapewniają te dwa rodzaje stabilności. W przypadku metod (6.65) dolne granice przedziału stabilności absolutnej wynoszą:

a w przypadku metod (6.66) wartości są następujące:

A więc istotnie metody niejawne mają znacznie większy przedział stabilności absolutnej w porównaniu z metodami jawnymi.

*

{Program 6.4}

unit Obliczenia;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons;

. . . . . . . . . . . . . . . . .

var

Form3: TForm3;

a,b,bl,eps,f1,f2,f3,f4,h,

x,x1,x2,x3,x4,ya,yp: Real;

y: array[0..100] of Real;

i,k,n: Integer;

plik: Text;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

{function f(x,y: Real): Real;}

{function yd(x: Real): Real;}

. . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn1Click(Sender: TObject);

label powt;

begin

Form2.Show;

AssignFile(plik,Edit5.Text);

Rewrite(plik); Writeln(plik,'PROGRAM 6.4.');

Writeln(plik,'Zagadnienie początkowe dla równania');

Writeln(plik,'różniczkowego zwyczajnego.');

Writeln(plik,'Metoda predyktor-korektor.');

Writeln(plik); a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text); n:=StrToInt(Edit3.Text);

ya:=StrToFloat(Edit4.Text); eps:=StrToFloat(Edit6.Text);

if RadioButton1.Checked then k:=1;

if RadioButton2.Checked then k:=2;

if RadioButton3.Checked then k:=3;

if RadioButton4.Checked then k:=4;

Writeln(plik,'Liczba podprzedziałów: n = ',n:3);

Writeln(plik,'Początek przedziału: a = ',a:13);

Writeln(plik,'Koniec przedziału: b = ',b:13);

Writeln(plik,'Warunek początkowy: ya = ',ya:13);

Writeln(plik,'Dokładność obliczeń: eps = ',eps:13);

Write(plik,'Predyktor: ',k:1,'-krokowy wzór Adamsa-');

Writeln(plik,'Bashfortha.');

Writeln(plik,'Korektor: ',k:1,'-krokowy wzór Adamsa-Moultona.');

Writeln(plik); Writeln(plik,'Obliczone wartości funkcji:');

Writeln(plik,' i x[i] y[i] błąd');

h:=(b-a)/n;

for i:=0 to k-1 do begin

x:=a+i*h;

Writeln(plik,i:3,' ',x:13,' ',yd(x):18,' ',

yd(x)-yd(x):13);

end;

for i:=0 to n do

y[i]:=yd(a+i*h);

for i:=k to n do begin

x:=a+i*h;

x1:=x-h; x2:=x1-h;

x3:=x2-h; x4:=x3-h;

f1:=f(x1,y[i-1]);

if k>1 then f2:=f(x2,y[i-2]);

if k>2 then f3:=f(x3,y[i-3]);

if k>3 then f4:=f(x4,y[i-4]);

case k of

1: y[i]:=y[i-1]+h*f1;

2: y[i]:=y[i-1]+h*(3*f1-f2)/2;

3: y[i]:=y[i-1]+h*(23*f1-16*f2+5*f3)/12;

4: y[i]:=y[i-1]+h*(55*f1-59*f2+37*f3-9*f4)/24;

end;

repeat

yp:=y[i];

case k of

1: y[i]:=y[i-1]+h*(f(x,yp)+f1)/2;

2: y[i]:=y[i-1]+h*(5*f(x,yp)+8*f1-f2)/12;

3: y[i]:=y[i-1]+h*(9*f(x,yp)+19*f1-5*f2+f3)/24;

4: y[i]:=y[i-1]+h*(251*f(x,yp)+646*f1-264*f2+

106*f3-19*f4)/720;

end;

bl:=Abs(y[i]-yp);

until (bl<eps);

bl:=yd(x)-y[i];

Writeln(plik,i:3,' ',x:13,' ',y[i]:18,' ',bl:13);

end;

Writeln(plik); CloseFile(plik);

Form2.Wyniki.Lines.LoadFromFile(Edit5.Text);

end;

. . . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

Close;

end;

end.

0x01 graphic

Rys. 6.6

W programie 6.4 wyznaczane jest rozwiązanie zagadnienia (6.22) - (6.23) metodą predyktor-korektor. W zależności od wyboru alternatywy obliczeń predyktorami
i korektorami są, odpowiednio, wzory Adamsa-Bashfortha (6.65) lub wzory Adamsa-Moultona (6.66): dwu-, trzy- i czterokrokowe. Funkcja 0x01 graphic
obliczana jest w procedurze funkcyjnej f(x,y). Liczby określające: granice przedziału 0x01 graphic
długość kroku całkowania 0x01 graphic
, warunek początkowy 0x01 graphic
oraz dokładność obliczeń 0x01 graphic
- wczytywane są z formularza Dane (rys. 6.6) Niezbędne dodatkowe wartości początkowe wyznaczane są z rozwiązania dokładnego, obliczanego w procedurze funkcyjnej yd(x).

Wyniki trzech przykładowych obliczeń są następujące:

PROGRAM 6.4.

Zagadnienie początkowe dla równania

różniczkowego zwyczajnego.

Metoda predyktor-korektor.

Liczba podprzedziałów: n = 20

Początek przedziału: a = 0.0000E+0000

Koniec przedziału: b = 2.0000E+0000

Warunek początkowy: ya = 1.0000E+0000

Dokładność obliczeń: eps = 1.0000E-0008

Predyktor: 2-krokowy wzór Adamsa-Bashfortha.

Korektor: 2-krokowy wzór Adamsa-Moultona.

Obliczone wartości funkcji:

i x[i] y[i] błąd

0 0.0000E+0000 1.000000000E+0000 0.0000E+0000

1 1.0000E-0001 1.095445115E+0000 0.0000E+0000

2 2.0000E-0001 1.183182829E+0000 3.3127E-0005

3 3.0000E-0001 1.264853439E+0000 5.7625E-0005

4 4.0000E-0001 1.341561942E+0000 7.8845E-0005

5 5.0000E-0001 1.414113883E+0000 9.9680E-0005

6 6.0000E-0001 1.483117828E+0000 1.2186E-0004

7 7.0000E-0001 1.549046659E+0000 1.4668E-0004

8 8.0000E-0001 1.612276337E+0000 1.7521E-0004

9 9.0000E-0001 1.673111490E+0000 2.0856E-0004

10 1.0000E+0000 1.731802888E+0000 2.4792E-0004

11 1.1000E+0000 1.788559751E+0000 2.9463E-0004

12 1.2000E+0000 1.843558617E+0000 3.5027E-0004

13 1.3000E+0000 1.896949879E+0000 4.1672E-0004

14 1.4000E+0000 1.948862679E+0000 4.9619E-0004

15 1.5000E+0000 1.999408634E+0000 5.9137E-0004

16 1.6000E+0000 2.048684693E+0000 7.0546E-0004

17 1.7000E+0000 2.096775352E+0000 8.4234E-0004

18 1.8000E+0000 2.143754377E+0000 1.0066E-0003

19 1.9000E+0000 2.189686129E+0000 1.2041E-0003

20 2.0000E+0000 2.234626586E+0000 1.4413E-0003

PROGRAM 6.4.

Zagadnienie początkowe dla równania

różniczkowego zwyczajnego.

Metoda predyktor-korektor.

Liczba podprzedziałów: n = 20

Początek przedziału: a = 0.0000E+0000

Koniec przedziału: b = 2.0000E+0000

Warunek początkowy: ya = 1.0000E+0000

Dokładność obliczeń: eps = 1.0000E-0008

Predyktor: 3-krokowy wzór Adamsa-Bashfortha.

Korektor: 3-krokowy wzór Adamsa-Moultona.

Obliczone wartości funkcji:

i x[i] y[i] błąd

0 0.0000E+0000 1.000000000E+0000 0.0000E+0000

1 1.0000E-0001 1.095445115E+0000 0.0000E+0000

2 2.0000E-0001 1.183215957E+0000 0.0000E+0000

3 3.0000E-0001 1.264919302E+0000 -8.2379E-0006

4 4.0000E-0001 1.341654802E+0000 -1.4015E-0005

5 5.0000E-0001 1.414232359E+0000 -1.8797E-0005

6 6.0000E-0001 1.483263147E+0000 -2.3449E-0005

7 7.0000E-0001 1.549221761E+0000 -2.8423E-0005

8 8.0000E-0001 1.612485572E+0000 -3.4022E-0005

9 9.0000E-0001 1.673360558E+0000 -4.0505E-0005

10 1.0000E+0000 1.732098931E+0000 -4.8124E-0005

11 1.1000E+0000 1.788911533E+0000 -5.7151E-0005

12 1.2000E+0000 1.843976789E+0000 -6.7897E-0005

13 1.3000E+0000 1.897447324E+0000 -8.0728E-0005

14 1.4000E+0000 1.949454944E+0000 -9.6075E-0005

15 1.5000E+0000 2.000114456E+0000 -1.1445E-0004

16 1.6000E+0000 2.049526645E+0000 -1.3649E-0004

17 1.7000E+0000 2.097780626E+0000 -1.6293E-0004

18 1.8000E+0000 2.144955728E+0000 -1.9467E-0004

19 1.9000E+0000 2.191123026E+0000 -2.3280E-0004

20 2.0000E+0000 2.236346597E+0000 -2.7862E-0004

PROGRAM 6.4.

Zagadnienie początkowe dla równania

różniczkowego zwyczajnego.

Metoda predyktor-korektor.

Liczba podprzedziałów: n = 20

Początek przedziału: a = 0.0000E+0000

Koniec przedziału: b = 2.0000E+0000

Warunek początkowy: ya = 1.0000E+0000

Dokładność obliczeń: eps = 1.0000E-0008

Predyktor: 4-krokowy wzór Adamsa-Bashfortha.

Korektor: 4-krokowy wzór Adamsa-Moultona.

Obliczone wartości funkcji:

i x[i] y[i] błąd

0 0.0000E+0000 1.000000000E+0000 0.0000E+0000

1 1.0000E-0001 1.095445115E+0000 0.0000E+0000

2 2.0000E-0001 1.183215957E+0000 0.0000E+0000

3 3.0000E-0001 1.264911064E+0000 0.0000E+0000

4 4.0000E-0001 1.341638123E+0000 2.6633E-0006

5 5.0000E-0001 1.414209107E+0000 4.4550E-0006

6 6.0000E-0001 1.483233831E+0000 5.8660E-0006

7 7.0000E-0001 1.549186090E+0000 7.2490E-0006

8 8.0000E-0001 1.612442810E+0000 8.7394E-0006

9 9.0000E-0001 1.673309622E+0000 1.0430E-0005

10 1.0000E+0000 1.732038406E+0000 1.2401E-0005

11 1.1000E+0000 1.788839653E+0000 1.4729E-0005

12 1.2000E+0000 1.843891395E+0000 1.7496E-0005

13 1.3000E+0000 1.897345797E+0000 2.0799E-0005

14 1.4000E+0000 1.949334121E+0000 2.4748E-0005

15 1.5000E+0000 1.999970522E+0000 2.9478E-0005

16 1.6000E+0000 2.049355004E+0000 3.5149E-0005

17 1.7000E+0000 2.097575743E+0000 4.1954E-0005

18 1.8000E+0000 2.144710936E+0000 5.0123E-0005

19 1.9000E+0000 2.190830293E+0000 5.9937E-0005

20 2.0000E+0000 2.235996245E+0000 7.1733E-0005

*

Innym rodzajem algorytmów prowadzących do konstrukcji metod wielokrokowych postaci (6.60) są wzory Geara [9, 32], oparte na metodzie wstecznego różniczkowania [30]. Idea tej metody polega na przybliżaniu rozwiązania zagadnienia początkowego wielomianem interpolacyjnym o postaci Newtona wstecz (4.31).

Przybliżając pochodną rozwiązania równania różniczkowego w punkcie pochodną drugiego wielomianu interpolacyjnego Newtona (4.31) i pamiętając, że dostajemy wzory metody jawnej wstecznego różniczkowania (ekstrapo-lacyjnej):

0x01 graphic
(6.80)

0x01 graphic
(6.80cd.)

Postępując podobnie dla przybliżenia rozwiązania w punkcie uzyskamy wzory niejawnej metody wstecznego różniczkowania (interpolacyjnej):

0x01 graphic
(6.81)

{Program 6.5}

unit Obliczenia;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons;

. . . . . . . . . . . . . . . . .

var

Form3: TForm3;

a,b,bl,eps,f1,h,x,x1,ya,yp: Real;

y: array[0..100] of Real;

i,k,n: Integer;

plik: Text;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

{function f(x,y: Real): Real;}

{function yd(x: Real): Real;}

. . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn1Click(Sender: TObject);

label powt;

begin

Form2.Show;

AssignFile(plik,Edit5.Text);

Rewrite(plik); Writeln(plik,'PROGRAM 6.5.');

Writeln(plik,'Zagadnienie początkowe dla równania');

Writeln(plik,'różniczkowego zwyczajnego.');

Writeln(plik,'Metoda predyktor-korektor.');

Writeln(plik,'Wzory metody wstecznego różniczkowania.');

Writeln(plik); a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text); n:=StrToInt(Edit3.Text);

ya:=StrToFloat(Edit4.Text); eps:=StrToFloat(Edit6.Text);

if RadioButton1.Checked then k:=1;

if RadioButton2.Checked then k:=2;

if RadioButton3.Checked then k:=3;

if RadioButton4.Checked then k:=4;

Writeln(plik,'Liczba podprzedziałów: n = ',n:3);

Writeln(plik,'Początek przedziału: a = ',a:13);

Writeln(plik,'Koniec przedziału: b = ',b:13);

Writeln(plik,'Warunek początkowy: ya = ',ya:13);

Writeln(plik,'Dokładność obliczeń: eps = ',eps:13);

Writeln(plik,'Predyktor: ',k:1,'-krokowy wzór metody jawnej.');

Writeln(plik,'Korektor: ',k:1,'-krokowy wzór metody niejawnej.');

Writeln(plik); Writeln(plik,'Obliczone wartości funkcji:');

Writeln(plik,' i x[i] y[i] błąd');

h:=(b-a)/n;

for i:=0 to k-1 do begin

x:=a+i*h;

Writeln(plik,i:3,' ',x:13,' ',yd(x):18,' ',

yd(x)-yd(x):13);

end;

for i:=0 to k-1 do

y[i]:=yd(a+i*h);

for i:=k to n do begin

x:=a+i*h; x1:=x-h;

f1:=f(x1,y[i-1]);

case k of

1: y[i]:=y[i-1]+h*f1;

2: y[i]:=y[i-2]+2*h*f1;

3: y[i]:=(-3*y[i-1]+6*y[i-2]-y[i-3])/2+3*h*f1;

4: y[i]:=(-10*y[i-1]+18*y[i-2]-6*y[i-3]+y[i-4])/3+4*h*f1;

end;

repeat

yp:=y[i];

case k of

1: y[i]:=y[i-1]+h*f(x,yp);

2: y[i]:=(4*y[i-1]-y[i-2])/3+2*h*f(x,yp)/3;

3: y[i]:=(18*y[i-1]-9*y[i-2]+2*y[i-3])/11+

6*h*f(x,yp)/11;

4: y[i]:=(48*y[i-1]-36*y[i-2]+16*y[i-3]-3*y[i-4])/25+

12*h*f(x,yp)/25;

end;

bl:=Abs(y[i]-yp);

until (bl<eps);

bl:=yd(x)-y[i];

Writeln(plik,i:3,' ',x:13,' ',y[i]:18,' ',bl:13);

end;

Writeln(plik); CloseFile(plik);

Form2.Wyniki.Lines.LoadFromFile(Edit5.Text);

end;

. . . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

Close;

end;

end.

Program 6.5 jest zmodyfikowanym programem 6.4, w którym zamiast wzorów Adamsa-Bashfortha i wzorów Adamsa-Moultona predyktorami są wzory jawne wstecznego różniczkowania (6.80), a korektorami wzory niejawne wstecznego różniczkowania (6.81). Wyniki powtórzonych obliczeń dla zagadnienia (6.22) - (6.23) przy wykorzystaniu metod dwu-, trzy- i czterokrokowych wstecznego różniczkowania są następujące:

PROGRAM 6.5.

Zagadnienie początkowe dla równania

różniczkowego zwyczajnego.

Metoda predyktor-korektor.

Wzory metody wstecznego różniczkowania.

Liczba podprzedziałów: n = 20

Początek przedziału: a = 0.0000E+0000

Koniec przedziału: b = 2.0000E+0000

Warunek początkowy: ya = 1.0000E+0000

Dokładność obliczeń: eps = 1.0000E-0008

Predyktor: 2-krokowy wzór metody jawnej.

Korektor: 2-krokowy wzór metody niejawnej.

Obliczone wartości funkcji:

i x[i] y[i] błąd

0 0.0000E+0000 1.000000000E+0000 0.0000E+0000

1 1.0000E-0001 1.095445115E+0000 0.0000E+0000

2 2.0000E-0001 1.183640124E+0000 -4.2417E-0004

3 3.0000E-0001 1.265827035E+0000 -9.1597E-0004

4 4.0000E-0001 1.343048594E+0000 -1.4078E-0003

5 5.0000E-0001 1.416120136E+0000 -1.9066E-0003

6 6.0000E-0001 1.485674709E+0000 -2.4350E-0003

7 7.0000E-0001 1.552211019E+0000 -3.0177E-0003

8 8.0000E-0001 1.616130557E+0000 -3.6790E-0003

9 9.0000E-0001 1.677764266E+0000 -4.4442E-0003

10 1.0000E+0000 1.737391538E+0000 -5.3407E-0003

11 1.1000E+0000 1.795254006E+0000 -6.3996E-0003

12 1.2000E+0000 1.851565876E+0000 -7.6570E-0003

13 1.3000E+0000 1.906521973E+0000 -9.1554E-0003

14 1.4000E+0000 1.960304316E+0000 -1.0945E-0002

15 1.5000E+0000 2.013087745E+0000 -1.3087E-0002

16 1.6000E+0000 2.065045022E+0000 -1.5655E-0002

17 1.7000E+0000 2.116351672E+0000 -1.8734E-0002

18 1.8000E+0000 2.167190838E+0000 -2.2430E-0002

19 1.9000E+0000 2.217758322E+0000 -2.6868E-0002

20 2.0000E+0000 2.268268015E+0000 -3.2200E-0002

PROGRAM 6.5.

Zagadnienie początkowe dla równania

różniczkowego zwyczajnego.

Metoda predyktor-korektor.

Wzory metody wstecznego różniczkowania.

Liczba podprzedziałów: n = 20

Początek przedziału: a = 0.0000E+0000

Koniec przedziału: b = 2.0000E+0000

Warunek początkowy: ya = 1.0000E+0000

Dokładność obliczeń: eps = 1.0000E-0008

Predyktor: 3-krokowy wzór metody jawnej.

Korektor: 3-krokowy wzór metody niejawnej.

Obliczone wartości funkcji:

i x[i] y[i] błąd

0 0.0000E+0000 1.000000000E+0000 0.0000E+0000

1 1.0000E-0001 1.095445115E+0000 0.0000E+0000

2 2.0000E-0001 1.183215957E+0000 0.0000E+0000

3 3.0000E-0001 1.264832551E+0000 7.8513E-0005

4 4.0000E-0001 1.341453038E+0000 1.8775E-0004

5 5.0000E-0001 1.413917374E+0000 2.9619E-0004

6 6.0000E-0001 1.482840968E+0000 3.9873E-0004

7 7.0000E-0001 1.548691716E+0000 5.0162E-0004

8 8.0000E-0001 1.611838835E+0000 6.1271E-0004

9 9.0000E-0001 1.672581449E+0000 7.3860E-0004

10 1.0000E+0000 1.731165917E+0000 8.8489E-0004

11 1.1000E+0000 1.787797348E+0000 1.0570E-0003

12 1.2000E+0000 1.842647867E+0000 1.2610E-0003

13 1.3000E+0000 1.895862784E+0000 1.5038E-0003

14 1.4000E+0000 1.947565238E+0000 1.7936E-0003

15 1.5000E+0000 1.997859693E+0000 2.1403E-0003

16 1.6000E+0000 2.046834527E+0000 2.5556E-0003

17 1.7000E+0000 2.094563941E+0000 3.0538E-0003

18 1.8000E+0000 2.141109301E+0000 3.6518E-0003

19 1.9000E+0000 2.186520013E+0000 4.3702E-0003

20 2.0000E+0000 2.230833999E+0000 5.2340E-0003

PROGRAM 6.5.

Zagadnienie początkowe dla równania

różniczkowego zwyczajnego.

Metoda predyktor-korektor.

Wzory metody wstecznego różniczkowania.

Liczba podprzedziałów: n = 20

Początek przedziału: a = 0.0000E+0000

Koniec przedziału: b = 2.0000E+0000

Warunek początkowy: ya = 1.0000E+0000

Dokładność obliczeń: eps = 1.0000E-0008

Predyktor: 4-krokowy wzór metody jawnej.

Korektor: 4-krokowy wzór metody niejawnej.

Obliczone wartości funkcji:

i x[i] y[i] błąd

0 0.0000E+0000 1.000000000E+0000 0.0000E+0000

1 1.0000E-0001 1.095445115E+0000 0.0000E+0000

2 2.0000E-0001 1.183215957E+0000 0.0000E+0000

3 3.0000E-0001 1.264911064E+0000 0.0000E+0000

4 4.0000E-0001 1.341661675E+0000 -2.0888E-0005

5 5.0000E-0001 1.414268352E+0000 -5.4790E-0005

6 6.0000E-0001 1.483327712E+0000 -8.8015E-0005

7 7.0000E-0001 1.549309629E+0000 -1.1629E-0004

8 8.0000E-0001 1.612594334E+0000 -1.4278E-0004

9 9.0000E-0001 1.673491819E+0000 -1.7177E-0004

10 1.0000E+0000 1.732256561E+0000 -2.0575E-0004

11 1.1000E+0000 1.789100332E+0000 -2.4595E-0004

12 1.2000E+0000 1.844202312E+0000 -2.9342E-0004

13 1.3000E+0000 1.897716268E+0000 -3.4967E-0004

14 1.4000E+0000 1.949775544E+0000 -4.1667E-0004

15 1.5000E+0000 2.000496784E+0000 -4.9678E-0004

16 1.6000E+0000 2.049982901E+0000 -5.9275E-0004

17 1.7000E+0000 2.098325519E+0000 -7.0782E-0004

18 1.8000E+0000 2.145606980E+0000 -8.4592E-0004

19 1.9000E+0000 2.191901993E+0000 -1.0117E-0003

20 2.0000E+0000 2.237279019E+0000 -1.2110E-0003

Porównanie wyników obliczeń wykonanych za pomocą programu 6.4 z wynikami obliczeń uzyskanymi po uruchomieniu programu 6.5 pokazuje, że metodami bardziej dokładnymi w przypadku rozwiązywania zagadnienia (6.22) - (6.23) są metody predyktor-korektor oparte na zastosowaniu metod Adamsa. Zalety metod predyktor-korektor wykorzystujące wzory wstecznego różniczkowania ujawniają się w pełni dopiero przy rozwiązywaniu zagadnień początkowych dla układów równań różniczkowych (6.2) źle uwarunkowanych (nazywanych układami typu stiff ), dla których stosunek największej co do modułu wartości własnej macierzy Jacobiego 0x01 graphic
do najmniejszej co do modułu wartości własnej jest znacznie większy od jedności.

Przykładowo dla zagadnienia początkowego [30]:

którego rozwiązaniem jest funkcja

0x01 graphic

metody Rungego-Kutty i metody Adamsa okazały się niewydolne dla ze względu na bardzo duży koszt obliczeń (pracochłonność), związany z koniecznością

bardzo wielkiej liczby niezbędnych wywołań procedury obliczającej wartość prawej strony równania różniczkowego. W jawnych i niejawnych wzorach metod wstecznego różniczkowania wartość prawej strony równania różniczkowego jest zawsze obliczana tylko jeden raz, co ma również istotne znaczenie przy rozwiązywaniu zagadnień początkowych dla dużych układów równań różniczkowych zwyczajnych.

Metody predyktor-korektor wstecznego różniczkowania okazały się szczególnie skuteczne przy rozwiązywaniu zagadnień początkowych dla układów równań różniczkowych zwyczajnych w monografii [33], otrzymanych przy wyznaczaniu płaskiego ruchu cieczy lepkiej - opisywanego quasi-liniowym równaniem czwartego rzędu dla funkcji prądu - metodą prostych.

382 6. Równania różniczkowe zwyczajne i całkowe

6.1. Zagadnienia początkowe dla równań różniczkowych zwyczajnych 379



Wyszukiwarka

Podobne podstrony:
7 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Spis tresci, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy
4 a, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
4 m, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Okladka, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy nume
1 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Przedmowa, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy nu
Contents, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy num
4 i, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
5 f, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
2 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
2 f, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 d, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
7 c 2, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numery
5 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
7 b, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 e, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz

więcej podobnych podstron