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


6.2. Zagadnienia brzegowe dla równań różniczkowych
zwycz
ajnych

6.2.1. Wstęp

Obok zagadnień początkowych dla równań różniczkowych zwyczajnych w praktyce występują także często zagadnienia ogólniejsze - zagadnienia brzegowe. Szukane jest wówczas rozwiązanie 0x01 graphic
układu równań (6.4) spełniające warunki brzegowe postaci:

0x01 graphic

gdzie i są macierzami kwadratowymi stopnia n o stałych elementach, a C1 i  C2 - zadanymi wektorami kolumnowymi.

Podczas gdy zagadnienia początkowe mają zwykle dokładnie jedno rozwiązanie, gdy funkcje ( x Y ) ( i = 1, 2, ..., n) są ograniczone i ciągłe oraz spełniają warunek Lipschitza względem argumentów: [26], zagadnienia brzegowe mogą nie mieć żadnego rozwiązania lub mogą mieć ich wiele. Przykładowo zagadnienie brzegowe:

ma nieskończenie wiele rozwiązań postaci

gdzie A jest dowolną stałą. Natomiast zagadnienie brzegowe:

ma dla jedyne rozwiązanie

0x01 graphic

a dla nie ma w ogóle rozwiązań. Chociaż nie można podać żadnego ogólnego twierdzenia o istnieniu i jednoznaczności rozwiązań zagadnień brzegowych, to na ogół istnieją ich rozwiązania, gdyż zwykle zagadnienia te opisują jakieś zjawiska fizyczne.

Metody rozwiązywania zagadnień brzegowych, podobnie jak metody rozwiązywania zagadnień początkowych, można podzielić również na metody analityczne, analityczno-numeryczne i dyskretne. Mogą one dotyczyć rozwiązywania pierwotnych zagadnień brzegowych lub też równoważnych im zagadnień początkowych, sformułowań wariacyjnych oraz równań całkowych.

Przy rozwiązywaniu zagadnień brzegowych mogą być stosowane metody analityczne polegające na rozwijaniu rozwiązań w szeregi potęgowe lub wykorzystaniu metody kolejnych przybliżeń Picarda.

Do metod analityczno-numerycznych można zaliczyć liczne metody wariacyjne jak:

- metoda najmniejszych kwadratów,

- metoda Galerkina,

- metoda Ritza

oraz metodę kollokacji, w której żąda się, aby rozwiązanie, przedstawione w postaci kombinacji liniowej funkcji bazowych, było spełnione w określonych punktach przedziału 0x01 graphic

Najważniejszymi metodami dyskretnymi rozwiązywania zagadnień brzegowych dla równań różniczkowych są:

- prosta metoda strzałów, w której dodatkowe parametry występujące w rozwiązaniu równoważnego zagadnienia początkowego są wyznaczane z warunków brzegowych,

- wielocelowa metoda strzałów [29, 34], polegająca na podzieleniu przedziału [ab] na pewną liczbę podprzedziałów, w których rozwiązuje się niezależne zagadnienia początkowe z dodatkowymi parametrami wyznaczanymi z warunków ciągło-

ści rozwiązania i jego pochodnej. Jej zaletą jest możliwość osiągnięcia bardzo dużej dokładności obliczeń,

- specjalne metody wielokrokowe liniowe opracowane do bezpośredniego rozwiązywania zagadnień brzegowych [29],

- metody różnicowe, u których podstaw leży idea zastąpienia pochodnych przez odpowiednie ilorazy różnicowe,

- metoda elementów skończonych, polegająca na podziale przedziału 0x01 graphic
na pewną liczbę elementów, dla których przyjęte rozwiązania przybliżone wyznacza się ze sformułowań wariacyjnych [35].

Przedstawimy dwie metody odznaczające się prostymi algorytmami obliczeniowymi, pozwalającymi na uzyskanie wyników z dokładnością wystarczającą w wielu zastosowaniach praktycznych. Są to:

- metoda różnic skończonych,

- metoda kollokacji funkcjami sklejanymi.

Zagadnienia brzegowe są formułowane zwykle dla równań drugiego, trzeciego i czwartego rzędu lub też ich układów. Ograniczymy się do wyznaczenia rozwiązania równania liniowego drugiego rzędu

0x01 graphic
(6.82)

z dwupunktowymi liniowymi warunkami brzegowymi:

(6.83)

6.2.2. Metoda różnic skończonych

Aby przekształcić zagadnienie różniczkowe (6.82) - (6.83) na zagadnienie różnicowe podzielimy odcinek 0x01 graphic
na n równych części o długości 0x01 graphic

(6.84)

a następnie zastąpimy pochodne i ich centralnymi ilorazami różnicowymi (5.6) i (5.15). Wprowadzając oznaczenia skrócone:

0x01 graphic
(6.85)

otrzymujemy dla każdego (i = 1, 2, ..., n −1) zamiast równania różniczkowe-go (6.82) następujące równanie różnicowe

0x01 graphic

Stąd po przekształceniu dochodzimy do układu równań liniowych z trójdiagonalną macierzą współczynników

(6.86)

gdzie:

Dla zachowania tego samego rzędu aproksymacji warunków brzegowych (6.83) pochodne i zastąpimy ilorazami różnicowymi (5.8) i (5.9):

0x01 graphic
(6.87)

Z równań różnicowych (6.87) wyznaczamy:

0x01 graphic
(6.88)

gdzie:

0x01 graphic

0x01 graphic

0x01 graphic
0x01 graphic

0x01 graphic

Uwzględnienie zależności (6.88) wynikających z aproksymacji warunków brzegowych powoduje korektę następujących współczynników układu (6.86):

0x01 graphic
(6.89a)

0x01 graphic
(6.89b)

W przypadkach wielu zagadnień fizyki matematycznej występują jednakże prostsze warunki brzegowe:

lub

i wtedy wzory (6.88) i (6.89) znacznie się upraszczają.

*

{Program 6.6}

unit Obliczenia;

interface

uses

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

Forms, Dialogs, StdCtrls, Buttons;

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

var

Form3: TForm3;

a,a0,a1,a2,b,b0,b1,b2,bl,h,hp,x,ui,p,p1,p2: Real;

al,be,ga,de,q,u,y: array[0..100] of Real;

Ad,Bd: array[0..3] of Real;

i,n,n1: Integer;

plik: Text;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

function urr(x: Real): Real;

begin

urr:=-2*x;

end;

function vrr(x: Real): Real;

begin

vrr:=-2;

end;

function wrr(x: Real): Real;

begin

wrr:=-4*x;

end;

function yd(x: Real): Real;

begin

yd:=x+Exp(x*x);

end;

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

procedure TForm3.BitBtn1Click(Sender: TObject);

label powt;

begin

Form2.Show;

AssignFile(plik,Edit10.Text);

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

Writeln(plik,'Zagadnienie brzegowe dla równania');

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

Writeln(plik,'Metoda różnic skończonych.');

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

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

a0:=StrToFloat(Edit4.Text); a1:=StrToFloat(Edit5.Text);

a2:=StrToFloat(Edit6.Text); b0:=StrToFloat(Edit7.Text);

b1:=StrToFloat(Edit8.Text); b2:=StrToFloat(Edit9.Text);

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,'Stałe określające warunki brzegowe:');

Writeln(plik,' - a1, a2, a0 = ',a1:9:6,a2:11:6,a0:11:6);

Writeln(plik,' - b1, b2, b0 = ',b1:9:6,b2:11:6,b0:11:6);

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

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

n1:=n-1; h:=(b-a)/n; hp:=1/h;

for i:=1 to n1 do begin

x:=a+i*h; ui:=urr(x);

al[i]:=hp*(hp-ui/2); be[i]:=-2*hp*hp+vrr(x);

ga[i]:=hp*(hp+ui/2); de[i]:=wrr(x);

end;

Ad[3]:=2*h*a1-3*a2; Ad[0]:=2*h*a0/Ad[3];

Ad[1]:=-4*a2/Ad[3]; Ad[2]:=a2/Ad[3];

Bd[3]:=2*h*b1+3*b2; Bd[0]:=2*h*b0/Bd[3];

Bd[1]:=4*b2/Bd[3]; Bd[2]:=-b2/Bd[3];

p1:=al[1]; p2:=ga[n1]; al[1]:=0; ga[n1]:=0;

be[1]:=be[1]+p1*Ad[1]; ga[1]:=ga[1]+p1*Ad[2];

de[1]:=de[1]-p1*Ad[0]; be[n1]:=be[n1]+p2*Bd[1];

al[n1]:=al[n1]+p2*Bd[2]; de[n1]:=de[n1]-p2*Bd[0];

q[0]:=0; u[0]:=0;

for i:=1 to n1 do begin

p:=be[i]+al[i]*q[i-1];

q[i]:=-ga[i]/p;

u[i]:=(de[i]-al[i]*u[i-1])/p;

end;

y[n1]:=u[n1];

for i:=n-2 downto 1 do

y[i]:=q[i]*y[i+1]+u[i];

y[0]:=Ad[0]+Ad[1]*y[1]+Ad[2]*y[2];

y[n]:=Bd[0]+Bd[1]*y[n1]+Bd[2]*y[n-2];

if (a2<>0) and (b2<>0) then

for i:=0 to n do

y[i]:=y[i]-y[0]+yd(a);

for i:=0 to n do begin

x:=a+i*h; 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(Edit10.Text);

end;

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

0x01 graphic

Rys. 6.7

W programie 6.6 wyznaczane jest przybliżone rozwiązanie równania różniczkowego

0x01 graphic
(6.90)

spełniające dwa rodzaje warunków brzegowych (6.83):

a)

0x01 graphic
(6.91a)

b)

0x01 graphic
(6.91b)

Funkcje 0x01 graphic
i obliczane są w procedurach funkcyjnych urr(x), vrr(x) i wrr(x). Wartości określające początek i koniec przedziału 0x01 graphic
liczbę podprzedziałów n oraz stałe występujące w warunkach brzegowych (6.83) wczytywane są z formularza Dane (rys. 6.7). Rozwiązanie numeryczne porównywane jest z rozwiązaniem dokładnym

0x01 graphic
(6.92)

obliczanym w procedurze funkcyjnej yd(x). Uzyskane wyniki obliczeń dla n = 40 są następujące:

PROGRAM 6.6.

Zagadnienie brzegowe dla równania

różniczkowego zwyczajnego.

Metoda różnic skończonych.

Liczba podprzedziałów: n = 40

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

Koniec przedziału: b = 1.0000E+0000

Stałe określające warunki brzegowe:

- a1, a2, a0 = 1.000000 0.000000 1.718282

- b1, b2, b0 = 1.000000 0.000000 3.718282

Obliczone wartości funkcji:

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

0 -1.0000E+0000 1.718281828E+0000 5.8208E-0011

1 -9.5000E-0001 1.515869944E+0000 -1.1013E-0004

2 -9.0000E-0001 1.348120092E+0000 -2.1211E-0004

3 -8.5000E-0001 1.209880372E+0000 -3.0465E-0004

4 -8.0000E-0001 1.096868256E+0000 -3.8738E-0004

5 -7.5000E-0001 1.005515093E+0000 -4.6044E-0004

6 -7.0000E-0001 9.328405441E-0001 -5.2432E-0004

7 -6.5000E-0001 8.763509434E-0001 -5.7972E-0004

8 -6.0000E-0001 8.339568185E-0001 -6.2740E-0004

9 -5.5000E-0001 8.039058310E-0001 -6.6815E-0004

10 -5.0000E-0001 7.847281608E-0001 -7.0274E-0004

11 -4.5000E-0001 7.751919778E-0001 -7.3189E-0004

12 -4.0000E-0001 7.742671278E-0001 -7.5626E-0004

13 -3.5000E-0001 7.810955423E-0001 -7.7642E-0004

14 -3.0000E-0001 7.949671834E-0001 -7.9290E-0004

15 -2.5000E-0001 8.153005848E-0001 -8.0613E-0004

16 -2.0000E-0001 8.416272385E-0001 -8.1646E-0004

17 -1.5000E-0001 8.735792418E-0001 -8.2421E-0004

18 -1.0000E-0001 9.108797475E-0001 -8.2958E-0004

19 -5.0000E-0002 9.533358688E-0001 -8.3274E-0004

20 2.2737E-0013 1.000833784E+0000 -8.3378E-0004

21 5.0000E-0002 1.053335869E+0000 -8.3274E-0004

22 1.0000E-0001 1.110879747E+0000 -8.2958E-0004

23 1.5000E-0001 1.173579242E+0000 -8.2421E-0004

24 2.0000E-0001 1.241627239E+0000 -8.1646E-0004

25 2.5000E-0001 1.315300585E+0000 -8.0613E-0004

26 3.0000E-0001 1.394967183E+0000 -7.9290E-0004

27 3.5000E-0001 1.481095542E+0000 -7.7642E-0004

28 4.0000E-0001 1.574267128E+0000 -7.5626E-0004

29 4.5000E-0001 1.675191978E+0000 -7.3189E-0004

30 5.0000E-0001 1.784728161E+0000 -7.0274E-0004

31 5.5000E-0001 1.903905831E+0000 -6.6815E-0004

32 6.0000E-0001 2.033956818E+0000 -6.2740E-0004

33 6.5000E-0001 2.176350943E+0000 -5.7972E-0004

34 7.0000E-0001 2.332840544E+0000 -5.2432E-0004

35 7.5000E-0001 2.505515093E+0000 -4.6044E-0004

36 8.0000E-0001 2.696868256E+0000 -3.8738E-0004

37 8.5000E-0001 2.909880372E+0000 -3.0465E-0004

38 9.0000E-0001 3.148120092E+0000 -2.1211E-0004

39 9.5000E-0001 3.415869944E+0000 -1.1013E-0004

40 1.0000E+0000 3.718281828E+0000 5.8208E-0011

PROGRAM 6.6.

Zagadnienie brzegowe dla równania

różniczkowego zwyczajnego.

Metoda różnic skończonych.

Liczba podprzedziałów: n = 40

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

Koniec przedziału: b = 1.0000E+0000

Stałe określające warunki brzegowe:

- a1, a2, a0 = 1.000000 0.000000 1.718282

- b1, b2, b0 = 1.000000 -1.000000 -2.718282

Obliczone wartości funkcji:

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

0 -1.0000E+0000 1.718281828E+0000 5.8208E-0011

1 -9.5000E-0001 1.516268491E+0000 -5.0868E-0004

2 -9.0000E-0001 1.348882943E+0000 -9.7496E-0004

3 -8.5000E-0001 1.210979801E+0000 -1.4040E-0003

4 -8.0000E-0001 1.098282094E+0000 -1.8012E-0003

5 -7.5000E-0001 1.007225952E+0000 -2.1713E-0003

6 -7.0000E-0001 9.348351974E-0001 -2.5190E-0003

7 -6.5000E-0001 8.786198334E-0001 -2.8486E-0003

8 -6.0000E-0001 8.364936683E-0001 -3.1643E-0003

9 -5.5000E-0001 8.067073461E-0001 -3.4697E-0003

10 -5.0000E-0001 7.877938068E-0001 -3.7684E-0003

11 -4.5000E-0001 7.785238246E-0001 -4.0637E-0003

12 -4.0000E-0001 7.778697527E-0001 -4.3589E-0003

13 -3.5000E-0001 7.849759864E-0001 -4.6569E-0003

14 -3.0000E-0001 7.991349588E-0001 -4.9607E-0003

15 -2.5000E-0001 8.197677300E-0001 -5.2733E-0003

16 -2.0000E-0001 8.464084214E-0001 -5.5976E-0003

17 -1.5000E-0001 8.786919132E-0001 -5.9369E-0003

18 -1.0000E-0001 9.163443451E-0001 -6.2942E-0003

19 -5.0000E-0002 9.591760779E-0001 -6.6730E-0003

20 2.2737E-0013 1.007076860E+0000 -7.0769E-0003

21 5.0000E-0002 1.060013026E+0000 -7.5099E-0003

22 1.0000E-0001 1.118026632E+0000 -7.9765E-0003

23 1.5000E-0001 1.181236488E+0000 -8.4815E-0003

24 2.0000E-0001 1.249841135E+0000 -9.0304E-0003

25 2.5000E-0001 1.324123862E+0000 -9.6294E-0003

26 3.0000E-0001 1.404459944E+0000 -1.0285E-0002

27 3.5000E-0001 1.491326362E+0000 -1.1007E-0002

28 4.0000E-0001 1.585314365E+0000 -1.1803E-0002

29 4.5000E-0001 1.687145318E+0000 -1.2685E-0002

30 5.0000E-0001 1.797690461E+0000 -1.3665E-0002

31 5.5000E-0001 1.917995305E+0000 -1.4757E-0002

32 6.0000E-0001 2.049309654E+0000 -1.5980E-0002

33 6.5000E-0001 2.193124424E+0000 -1.7353E-0002

34 7.0000E-0001 2.351216799E+0000 -1.8901E-0002

35 7.5000E-0001 2.525705599E+0000 -2.0651E-0002

36 8.0000E-0001 2.719119270E+0000 -2.2638E-0002

37 8.5000E-0001 2.934479493E+0000 -2.4904E-0002

38 9.0000E-0001 3.175404224E+0000 -2.7496E-0002

39 9.5000E-0001 3.446234972E+0000 -3.0475E-0002

40 1.0000E+0000 3.752194430E+0000 -3.3913E-0002

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

6.2. Zagadnienia brzegowe dla równań różniczkowych zwyczajnych 387



Wyszukiwarka