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


6.2.3. Metoda kollokacji funkcjami sklejanymi

Rozważymy dwa algorytmy dotyczące najczęściej wykorzystywanego przypadku, gdy węzły kollokacji pokrywają się z węzłami funkcji sklejanej.

Określając dodatkowe węzły (4.113) dla równomiernej siatki (6.84) za pomocą stałego kroku siatki h:

rozwiązanie zagadnienia (6.82) - (6.83) aproksymować będziemy funkcją skle-janą trzeciego stopnia

Parametry funkcji sklejanej trzeciego stopnia wyznaczymy żądając, aby spełniała ona równanie różniczkowe (6.82) w każdym węźle kollokacji

(6.93)

i warunki brzegowe:

0x01 graphic
(6.94)

gdzie:

Zastępując w równaniu (6.93) wszystkie wielkości oraz zależnościami określonymi wzorami (4.122), wynikającymi z przedstawienia funkcji sklejanej za pomocą B-funkcji, otrzymamy algorytm niewiele różniący się od algorytmu metody różnic skończonych

gdyż jego realizacja polega również na rozwiązaniu układu równań liniowych z trój-diagonalną macierzą współczynników

0x01 graphic
(6.95)

gdzie:

0x01 graphic

0x01 graphic

W podobny sposób przy wykorzystaniu wzorów (4.122) zapisujemy warunki brzegowe:

0x01 graphic

0x01 graphic

i stąd obliczamy:

0x01 graphic
(6.96)

gdzie:

0x01 graphic

0x01 graphic
0x01 graphic

0x01 graphic
0x01 graphic

Wzory (6.96) pozwalają na pełne określenie układu równań (6.95), po modyfikacjach postaci jego początkowych i końcowych współczynników:

(6.97)

*

Na podstawie oszacowań (4.110) stwierdzamy, że przedstawiona metoda kol-lokacji funkcjami sklejanymi trzeciego stopnia jest, tak samo jak opisana w rozdziale poprzednim metoda różnic skończonych, metodą drugiego rzędu.

Znaczne zwiększenie dokładności aproksymacji równania (6.82) uzyskamy wykorzystując aproksymację drugiej pochodnej rzędu czwartego

0x01 graphic
(6.98)

otrzymaną po dodaniu stronami wyrażenia na klasyczną aproksymację drugiej pochodnej różnicami skończonymi - wzór (5.15)

0x01 graphic

do wyrażenia (4.106) na aproksymację drugiej pochodnej drugą pochodną funkcji sklejanej trzeciego stopnia

0x01 graphic

i wykorzystaniu równania (4.101).

Przy okazji zauważmy, że wyrażenie na aproksymację trzeciej pochodnej za pomocą pochodnych można wyznaczyć z trzeciego oszacowania (4.110). Mamy:

0x01 graphic

i następnie na mocy (4.71) i (4.122) jest

0x01 graphic
(6.99)

Aproksymację dla czwartej pochodnej łatwo można uzyskać po podstawieniu aproksymacji (6.98) dla do (4.106)

0x01 graphic
(6.100)

Po zastąpieniu w równaniu (6.82) pochodnych w wewnętrznych węzłach kollokacji wzorami (6.98) otrzymamy układ równań z pięciodiagonalną macierzą współczynników

(6.101)

gdzie:

0x01 graphic
0x01 graphic

0x01 graphic
0x01 graphic

Do zamknięcia układu równań (6.101) brakuje czterech równań. Okazuje się więc, że oprócz równań (6.96) - wynikających z warunków brzegowych, do układu (6.101) musimy jeszcze dołączyć takie dwa dodatkowe równania, które powinny zachowywać przyjętą dokładność aproksymacji równą 0x01 graphic

Analizując postać oszacowania (4.110b) stwierdzamy, że w dwóch punktach każ-dego podprzedziału o współrzędnych określonych parametrami

(6.102)

jest 0x01 graphic
Zatem przy wykorzystaniu oszacowań (4.110) możemy napisać dwa związki [20]:

0x01 graphic

gdzie:

0x01 graphic

i następnie po ich dodaniu stronami dostajemy

0x01 graphic

gdzie:

0x01 graphic

Biorąc pod uwagę fakt, że 0x01 graphic
otrzymujemy ostatecznie zależność

0x01 graphic

pozwalającą na uzyskanie dwóch brakujących równań. Są one następujące:

(6.103)

gdzie:

(6.104)

Po wyrażeniu funkcji sklejanej przez B-funkcje (4.121) równania (6.103) przybierają postać:

0x01 graphic
(6.105)

gdzie:

Z układów równań (6.96) i (6.105) wyznaczamy:

(6.106)

gdzie:

Uwzględnienie w układzie równań (6.101) zależności (6.106) powoduje modyfikacje następujących jego współczynników:

0x01 graphic
(6.107a)

0x01 graphic
(6.107a-cd.)

0x01 graphic
(6.107b)

Warto w tym miejscu jeszcze wspomnieć, że schematy różnicowe oparte na wykorzystaniu funkcji sklejanych są szczególnymi przypadkami niejawnych (kom-paktowych) schematów różnicowych postaci [32]

(6.108)

w których występują niejawne zależności różnicowe między wartościami funkcji w trzech kolejnych węzłach oraz jej pierwszymi i drugimi pochodnymi.

Różne postacie schematów (6.108) otrzymujemy z równań wynikających z warunków znikania określonych błędów aproksymacji, po rozwinięciu , oraz w szeregi Taylora wokół punktu np.:

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

*

Metoda kollokacji funkcjami sklejanymi czwartego rzędu dokładności została wykorzystana w programie 6.7 do przybliżonego wyznaczania rozwiązania zagadnienia (6.90) - (6.91). Program 6.7 działa w taki sam sposób jak program 6.6. Wy-korzystano w nim, zaczerpniętą z programu 5.4, procedurę funkcyjną Bf(i,x, a,h) oraz dwie nowe procedury funkcyjne Bf1(i,x,a,h) i Bf2(i,x,a,h) - przeznaczone do obliczania pochodnych i B-funkcji sklejanej (4.117) - (4.118).

{Program 6.7}

unit Obliczenia;

interface

uses

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

Forms, Dialogs, StdCtrls, Buttons;

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

var

Form3: TForm3;

al,be,ga,de,ep,dz,y: array[0..250] of Real;

a,a0,a1,a2,b,b0,b1,b2,bl,dela,delb,

Fd,fi0,fi1,fi2,h,h1,h2,Hd,ks,p,Pd,

psi0,psi1,psi2,Qd,ui,vi,s,t1,t2,

sig0,sig1,sig2,tau0,tau1,tau2,x: Real;

q,qf,r,u: array[-1..250] of Real;

Cd,Dd: array[-1..1] of Real;

ksi: array[1..4] of Real;

Ed: array[-1..2] of Real;

Gd: array[-2..1] of Real;

i,j,n,n1,n2: Integer;

plik: Text;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

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

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

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

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

{function Bf(j,x,a,h: Real): Real;}

{function Bf1(j,x,a,h: Real): Real;}

{function Bf2(j,x,a,h: Real): Real;}

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

procedure TForm3.BitBtn1Click(Sender: TObject);

label powt;

begin

Form2.Show;

AssignFile(plik,Edit10.Text);

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

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

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

Writeln(plik,'Metoda kollokacji funkcjami sklejanymi.');

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; n2:=n-2; h:=(b-a)/n; h1:=1/h; h2:=h1*h1/12;

for i:=1 to n1 do begin

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

vi:=vrr(x)/6; al[i]:=h2;

be[i]:=8*h2-ui+vi;

ga[i]:=-18*h2+4*vi;

de[i]:=8*h2+ui+vi;

ep[i]:=h2; dz[i]:=wrr(x)

end;

dela:=a1*h-3*a2; Cd[-1]:=6*a0*h/dela;

Cd[0]:=-4*a1*h/dela; Cd[1]:=-(a1*h+3*a2)/dela;

delb:=b1*h+3*b2; Dd[1]:=6*b0*h/delb;

Dd[0]:=-4*b1*h/delb; Dd[-1]:=(3*b2-b1*h)/delb;

t1:=0.5-Sqrt(3)/6; t2:=0.5+Sqrt(3)/6;

ksi[1]:=a+t1*h; ksi[2]:=a+t2*h;

ksi[3]:=b-h+t1*h; ksi[4]:=b-h+t2*h;

for i:=-1 to 2 do begin

s:=0;

for j:=1 to 2 do begin

ks:=ksi[j];

s:=s+Bf2(i,ks,a,h);

s:=s+urr(ks)*Bf1(i,ks,a,h);

s:=s+vrr(ks)*Bf(i,ks,a,h);

end;

Ed[i]:=s;

end;

for i:=-2 to 1 do begin

s:=0;

for j:=3 to 4 do begin

ks:=ksi[j];

s:=s+Bf2(n+i,ks,a,h);

s:=s+urr(ks)*Bf1(n+i,ks,a,h);

s:=s+vrr(ks)*Bf(n+i,ks,a,h);

end;

Gd[i]:=s;

end;

Fd:=wrr(ksi[1])+wrr(ksi[2]);

Hd:=wrr(ksi[3])+wrr(ksi[4]);

Pd:=Ed[0]+Ed[-1]*Cd[0];

tau0:=(Fd-Ed[-1]*Cd[-1])/Pd;

tau1:=-(Ed[1]+Ed[-1]*Cd[1])/Pd;

tau2:=-Ed[2]/Pd; sig0:=Cd[-1]+Cd[0]*tau0;

sig1:=Cd[1]+Cd[0]*tau1;

sig2:=Cd[0]*tau2; Qd:=Gd[0]+Dd[0]*Gd[1];

fi0:=(Hd-Gd[1]*Dd[1])/Qd;

fi1:=-(Gd[-1]+Gd[1]*Dd[-1])/Qd;

fi2:=-Gd[-2]/Qd; psi0:=Dd[1]+Dd[0]*fi0;

psi1:=Dd[-1]+Dd[0]*fi1; psi2:=Dd[0]*fi2;

ga[1]:=ga[1]+al[1]*sig1+be[1]*tau1;

de[1]:=de[1]+al[1]*sig2+be[1]*tau2;

dz[1]:=dz[1]-al[1]*sig0-be[1]*tau0;

be[2]:=be[2]+al[2]*tau1;

ga[2]:=ga[2]+al[2]*tau2;

dz[2]:=dz[2]-al[2]*tau0;

al[1]:=0; be[1]:=0; al[2]:=0;

ga[n2]:=ga[n2]+ep[n2]*fi2;

de[n2]:=de[n2]+ep[n2]*fi1;

dz[n2]:=dz[n2]-ep[n2]*fi0;

be[n1]:=be[n1]+de[n1]*fi2+ep[n1]*psi2;

ga[n1]:=ga[n1]+de[n1]*fi1+ep[n1]*psi1;

dz[n1]:=dz[n1]-de[n1]*fi0-ep[n1]*psi0;

ep[n2]:=0; de[n1]:=0; ep[n1]:=0;

q[-1]:=0; r[-1]:=0; q[0]:=0;

r[0]:=0; u[-1]:=0; u[0]:=0;

for i:=1 to n1 do begin

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

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

q[i]:=-(de[i]+be[i]*r[i-1]+al[i]*q[i-2]*r[i-1])/p;

r[i]:=-ep[i]/p;

u[i]:=dz[i]-be[i]*u[i-1]-al[i]*u[i-2];

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

end;

qf[n1]:=u[n1];

qf[n2]:=q[n2]*qf[n1]+u[n2];

for i:=n-3 downto 1 do

qf[i]:=q[i]*qf[i+1]+r[i]*qf[i+2]+u[i];

qf[-1]:=sig0+sig1*qf[1]+sig2*qf[2];

qf[0]:=tau0+tau1*qf[1]+tau2*qf[2];

qf[n]:=fi0+fi1*qf[n1]+fi2*qf[n2];

qf[n+1]:=psi0+psi1*qf[n1]+psi2*qf[n2];

for i:=0 to n do

y[i]:=(qf[i-1]+4*qf[i]+qf[i+1])/6;

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;

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

Wynikiem działania programu 6.7 są dwa kolejne wydruki, zawierające wyniki obliczeń dla dwóch zagadnień określonych równaniem (6.90) i warunkami brzegowymi (6.91) - wykorzystywanych uprzednio przy testowaniu poprawności działania programu 6.6. Porównanie tabulogramów wydruków otrzymanych za pomocą programów 6.6 i 6.7 potwierdza możliwość uzyskiwania bardzo dużej dokładności obliczeń przy zastosowaniu algorytmu opisanego wzorami (6.101) ÷ (1.107).

PROGRAM 6.7.

Zagadnienie brzegowe dla równania

różniczkowego zwyczajnego.

Metoda kollokacji funkcjami sklejanymi.

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.6389E-0011

1 -9.5000E-0001 1.515760774E+0000 -9.6233E-0007

2 -9.0000E-0001 1.347909713E+0000 -1.7264E-0006

3 -8.5000E-0001 1.209577959E+0000 -2.2399E-0006

4 -8.0000E-0001 1.096483462E+0000 -2.5822E-0006

5 -7.5000E-0001 1.005057456E+0000 -2.7995E-0006

6 -7.0000E-0001 9.323191474E-0001 -2.9274E-0006

7 -6.5000E-0001 8.757742117E-0001 -2.9921E-0006

8 -6.0000E-0001 8.333324276E-0001 -3.0130E-0006

9 -5.5000E-0001 8.032406810E-0001 -3.0045E-0006

10 -5.0000E-0001 7.840283939E-0001 -2.9772E-0006

11 -4.5000E-0001 7.744630239E-0001 -2.9388E-0006

12 -4.0000E-0001 7.735137660E-0001 -2.8951E-0006

13 -3.5000E-0001 7.803219701E-0001 -2.8501E-0006

14 -3.0000E-0001 7.941770906E-0001 -2.8069E-0006

15 -2.5000E-0001 8.144972265E-0001 -2.7676E-0006

16 -2.0000E-0001 8.408135081E-0001 -2.7339E-0006

17 -1.5000E-0001 8.727577408E-0001 -2.7067E-0006

18 -1.0000E-0001 9.100528539E-0001 -2.6868E-0006

19 -5.0000E-0002 9.525058023E-0001 -2.6747E-0006

20 2.2737E-0013 1.000002671E+0000 -2.6706E-0006

21 5.0000E-0002 1.052505802E+0000 -2.6747E-0006

22 1.0000E-0001 1.110052854E+0000 -2.6868E-0006

23 1.5000E-0001 1.172757741E+0000 -2.7067E-0006

24 2.0000E-0001 1.240813508E+0000 -2.7338E-0006

25 2.5000E-0001 1.314497227E+0000 -2.7676E-0006

26 3.0000E-0001 1.394177091E+0000 -2.8068E-0006

27 3.5000E-0001 1.480321970E+0000 -2.8500E-0006

28 4.0000E-0001 1.573513766E+0000 -2.8950E-0006

29 4.5000E-0001 1.674463024E+0000 -2.9388E-0006

30 5.0000E-0001 1.784028394E+0000 -2.9772E-0006

31 5.5000E-0001 1.903240681E+0000 -3.0045E-0006

32 6.0000E-0001 2.033332428E+0000 -3.0130E-0006

33 6.5000E-0001 2.175774212E+0000 -2.9921E-0006

34 7.0000E-0001 2.332319147E+0000 -2.9274E-0006

35 7.5000E-0001 2.505057456E+0000 -2.7995E-0006

36 8.0000E-0001 2.696483461E+0000 -2.5822E-0006

37 8.5000E-0001 2.909577959E+0000 -2.2399E-0006

38 9.0000E-0001 3.147909713E+0000 -1.7263E-0006

39 9.5000E-0001 3.415760774E+0000 -9.6227E-0007

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

PROGRAM 6.7.

Zagadnienie brzegowe dla równania

różniczkowego zwyczajnego.

Metoda kollokacji funkcjami sklejanymi.

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.515761192E+0000 -1.3801E-0006

2 -9.0000E-0001 1.347910513E+0000 -2.5260E-0006

3 -8.5000E-0001 1.209579112E+0000 -3.3924E-0006

4 -8.0000E-0001 1.096484944E+0000 -4.0643E-0006

5 -7.5000E-0001 1.005059250E+0000 -4.5930E-0006

6 -7.0000E-0001 9.323212384E-0001 -5.0184E-0006

7 -6.5000E-0001 8.757765902E-0001 -5.3706E-0006

8 -6.0000E-0001 8.333350870E-0001 -5.6725E-0006

9 -5.5000E-0001 8.032436179E-0001 -5.9415E-0006

10 -5.0000E-0001 7.840316078E-0001 -6.1911E-0006

11 -4.5000E-0001 7.744665170E-0001 -6.4318E-0006

12 -4.0000E-0001 7.735175430E-0001 -6.6720E-0006

13 -3.5000E-0001 7.803260384E-0001 -6.9183E-0006

14 -3.0000E-0001 7.941814602E-0001 -7.1765E-0006

15 -2.5000E-0001 8.145019101E-0001 -7.4512E-0006

16 -2.0000E-0001 8.408185210E-0001 -7.7468E-0006

17 -1.5000E-0001 8.727631015E-0001 -8.0673E-0006

18 -1.0000E-0001 9.100585837E-0001 -8.4166E-0006

19 -5.0000E-0002 9.525119261E-0001 -8.7985E-0006

20 2.2737E-0013 1.000009217E+0000 -9.2171E-0006

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

31 5.5000E-0001 1.903255462E+0000 -1.7785E-0005

32 6.0000E-0001 2.033348534E+0000 -1.9120E-0005

33 6.5000E-0001 2.175791810E+0000 -2.0590E-0005

34 7.0000E-0001 2.332338428E+0000 -2.2208E-0005

35 7.5000E-0001 2.505078642E+0000 -2.3985E-0005

36 8.0000E-0001 2.696506810E+0000 -2.5930E-0005

37 8.5000E-0001 2.909603772E+0000 -2.8053E-0005

38 9.0000E-0001 3.147938345E+0000 -3.0358E-0005

39 9.5000E-0001 3.415792640E+0000 -3.2828E-0005

40 1.0000E+0000 3.718317418E+0000 -3.5590E-0005

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

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



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
6 c, 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