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


gdzie:

0x01 graphic

Jeśli zastosujemy równanie (7.55) do siatki przedstawionej na rysunku 7.3, na każdym kroku czasowym musimy rozwiązać następujący układ szesnastu równań liniowych z szesnastoma niewiadomymi wartościami funkcji w wewnętrznych węzłach siatki

=

, (7.56)

gdzie:

0x01 graphic

Jest to układ równań z trójdiagonalną macierzą blokową. Macierz ta jest diagonalnie dominująca.

0x01 graphic

Rys. 7.3

Trudności występujące przy rozwiązywaniu zagadnień początkowo-brzegowych dla wielowymiarowych równań parabolicznych, związane z bardzo rygorystycznymi ograniczeniami dla schematów jawnych i koniecznością rozwiązywania bardzo dużych układów równań w przypadku metod niejawnych, spowodowały poszukiwanie takich bezwarunkowo stabilnych schematów, których koszt realizacji jest proporcjonalny do liczby niewiadomych. Takie schematy nazywają się schematami ekonomicznymi.

Najbardziej popularnymi schematami ekonomicznymi są schematy metody naprzemiennych kierunków (Alternating-Direction Implicit Method). Za pomocą tej metody rozwiązywanie równania (7.46) odbywa się w dwu etapach:

Etap I

0x01 graphic
(7.57)

Etap II

0x01 graphic
(7.58)

gdzie i 0x01 graphic
są aproksymacjami różnicowymi pochodnych oraz 0x01 graphic
Rezultatem rozszczepienia jest konieczność rozwiązywania tylko układów równań z trójdiagonalnymi macierzami współczynników: najpierw dla każdego wskaźnika j, a następnie dla każdego wskaźnika i. Metoda naprzemiennych kierunków jest metodą drugiego rzędu dokładności z błędem aproksymacji Istnieją również schematy ekonomiczne dla trójwymiarowych równań parabolicznych [40].

*

Zagadnienie, określone równaniem

0x01 graphic
(7.59)

i warunkami granicznymi:

(7.60)

którego rozwiązaniem dokładnym jest funkcja

0x01 graphic
(7.61)

jest rozwiązywane w programie 7.1 przy wykorzystaniu czterech rodzajów schematów różnicowych: jawnej metody pierwszego rzędu, niejawnej metody pierwszego rzędu, metody Cranka-Nicolsona i metody Duforta-Frankela. Wymagany dodatkowy warunek początkowy dla schematu Duforta-Frankela jest wyznaczany z rozwiązania dokładnego (7.61).

{Program 7.1}

unit Obliczenia;

interface

uses

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

Forms, Dialogs, StdCtrls, Buttons;

type

Tabl = array[0..100] of Real;

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

var

Form3: TForm3;

a,al,al1,al2,b,bl,dt,h,h2,

p,t,tmax,ua,ub,x: Real;

aa,bb,dd,u,un,un1: Tabl;

j,m,m1,nr: Integer;

plik: Text;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

function u0(x: Real): Real;

begin

u0:=3*Sin(x);

end;

function ud(x,t: Real): Real;

begin

ud:=3*Exp(-t)*Sin(x);

end;

{procedure Tridiag1(n: Integer; a,b,c,d: Tabl;

var x: Tabl);}

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

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

Form2.Show;

AssignFile(plik,Edit8.Text);

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

Writeln(plik,'Zagadnienie początkowo-brzegowe');

Writeln(plik,'dla równania parabolicznego.');

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

m:=StrToInt(Edit3.Text);

ua:=StrToFloat(Edit4.Text);

ub:=StrToFloat(Edit5.Text);

dt:=StrToFloat(Edit6.Text);

tmax:=StrToFloat(Edit7.Text);

if RadioButton1.Checked then nr:=1;

if RadioButton2.Checked then nr:=2;

if RadioButton3.Checked then nr:=3;

if RadioButton4.Checked then nr:=4;

case nr of

1: Writeln(plik,'Metoda jawna pierwszego rzędu.');

2: Writeln(plik,'Metoda niejawna pierwszego rzędu.');

3: Writeln(plik,'Metoda Cranka-Nicolsona.');

4: Writeln(plik,'Metoda Duforta-Frankela.');

end;

Writeln(plik);

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

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

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

Writeln(plik,'Krok czasowy: dt = ',dt:13);

Writeln(plik,'Warunki brzegowe: ua = ',ua:13);

Writeln(plik,' ub = ',ub:13);

Writeln(plik);

h:=(b-a)/m; h2:=h*h;

m1:=m-1; al:=dt/h2;

u[0]:=ua; u[m]:=ub;

un[0]:=ua; un[m]:=ub;

un1[0]:=ua; un1[m]:=ub;

al1:=(1-2*al)/(1+2*al);

al2:=2*al/(1+2*al);

for j:=1 to m1 do begin

x:=a+j*h;

un[j]:=u0(x);

end;

t:=0;

repeat

t:=t+dt;

case nr of

1: for j:=1 to m1 do

u[j]:=un[j]+al*(un[j-1]-2*un[j]+un[j+1]);

2: begin

for j:=1 to m1 do begin

aa[j]:=-al;

bb[j]:=1+2*al;

dd[j]:=un[j];

end;

dd[1]:=dd[1]-aa[1]*ua;

dd[m1]:=dd[m1]-aa[m1]*ub;

Tridiag1(m1,aa,bb,aa,dd,u);

end;

3: begin

for j:=1 to m1 do begin

aa[j]:=-al/2; bb[j]:=1+al;

p:=un[j-1]-2*un[j]+un[j+1];

dd[j]:=un[j]+al*p/2;

end;

dd[1]:=dd[1]-aa[1]*ua;

dd[m1]:=dd[m1]-aa[m1]*ub;

Tridiag1(m1,aa,bb,aa,dd,u);

end;

4: begin

if Abs(t-dt)<1e-10 then

for j:=1 to m1 do

u[j]:=ud(a+j*h,t)

else

for j:=1 to m1 do begin

p:=un[j-1]+un[j+1];

u[j]:=al1*un1[j]+al2*p;

end;

end;

end;

for j:=1 to m1 do begin

un1[j]:=un[j];

un[j]:=u[j];

end;

until (t>=tmax);

Writeln(plik,'Wartości funkcji u(x,t) dla t = ',t:13,':');

Writeln(plik,' j x[j] u[j] błąd');

for j:=0 to m do begin

x:=a+j*h; bl:=ud(x,t)-u[j];

Writeln(plik,j:3,' ',x:13,' ',u[j]:18,' ',bl:13);

end;

Writeln(plik); CloseFile(plik);

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

end;

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

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

Close;

end;

end.

W programie 7.1 występują dwie procedury funkcyjne: u0(x) i ud(x,t) - przeznaczone do obliczania wartości funkcji 0x01 graphic
i rozwiązania dokładnego 0x01 graphic
oraz procedura

Tridiag1(n,a,b,c,d,x),

której zadaniem jest rozwiązywanie układu równań (2.76) przy wykorzystaniu algo-rytmu metody faktoryzacji (2.77) ÷ (2.79). Sens wczytywanych danych jest objaśniony odpowiednimi napisami ukazującymi się na formularzu Dane (rys. 7.4).

0x01 graphic

Rys. 7.4

Wyniki obliczeń numerycznych dla uzyskane za pomocą kolejnych schematów różnicowych przy przyjęciu i kroków czasowych zawierają załączone tabulogramy wyników. Zgodnie z warunkiem (7.39) maksymalny dopuszczalny krok czasowy dla schematu jawnego pierwszego rzędu wynosi

PROGRAM 7.1.

Zagadnienie początkowo-brzegowe

dla równania parabolicznego.

Metoda jawna pierwszego rzędu.

Liczba podprzedziałów: m = 36

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

Koniec przedziału: b = 3.1416E+0000

Krok czasowy: dt = 1.0000E-0003

Warunki brzegowe: ua = 0.0000E+0000

ub = 0.0000E+0000

Wartości funkcji u(x,t) dla t = 1.0000E+0000:

j x[j] u[j] błąd

0 0.0000E+0000 0.000000000E+0000 0.0000E+0000

1 8.7266E-0002 9.620138102E-0002 -1.2963E-0005

2 1.7453E-0001 1.916706114E-0001 -2.5828E-0005

3 2.6180E-0001 2.856811128E-0001 -3.8496E-0005

4 3.4907E-0001 3.775174084E-0001 -5.0871E-0005

5 4.3633E-0001 4.664805685E-0001 -6.2859E-0005

6 5.2360E-0001 5.518935298E-0001 -7.4368E-0005

7 6.1087E-0001 6.331062482E-0001 -8.5312E-0005

8 6.9813E-0001 7.095006457E-0001 -9.5606E-0005

9 7.8540E-0001 7.804953149E-0001 -1.0517E-0004

10 8.7266E-0001 8.455499435E-0001 -1.1393E-0004

11 9.5993E-0001 9.041694264E-0001 -1.2183E-0004

12 1.0472E+0000 9.559076341E-0001 -1.2881E-0004

13 1.1345E+0000 1.000370807E+0000 -1.3480E-0004

14 1.2217E+0000 1.037220555E+0000 -1.3977E-0004

15 1.3090E+0000 1.066176428E+0000 -1.4367E-0004

16 1.3963E+0000 1.087018054E+0000 -1.4648E-0004

17 1.4835E+0000 1.099586817E+0000 -1.4817E-0004

18 1.5708E+0000 1.103787060E+0000 -1.4874E-0004

19 1.6581E+0000 1.099586817E+0000 -1.4817E-0004

20 1.7453E+0000 1.087018054E+0000 -1.4648E-0004

21 1.8326E+0000 1.066176428E+0000 -1.4367E-0004

22 1.9199E+0000 1.037220555E+0000 -1.3977E-0004

23 2.0071E+0000 1.000370807E+0000 -1.3480E-0004

24 2.0944E+0000 9.559076340E-0001 -1.2881E-0004

25 2.1817E+0000 9.041694264E-0001 -1.2183E-0004

26 2.2689E+0000 8.455499435E-0001 -1.1393E-0004

27 2.3562E+0000 7.804953149E-0001 -1.0517E-0004

28 2.4435E+0000 7.095006457E-0001 -9.5606E-0005

29 2.5307E+0000 6.331062482E-0001 -8.5312E-0005

30 2.6180E+0000 5.518935298E-0001 -7.4368E-0005

31 2.7053E+0000 4.664805685E-0001 -6.2859E-0005

32 2.7925E+0000 3.775174084E-0001 -5.0871E-0005

33 2.8798E+0000 2.856811128E-0001 -3.8496E-0005

34 2.9671E+0000 1.916706114E-0001 -2.5828E-0005

35 3.0543E+0000 9.620138102E-0002 -1.2963E-0005

36 3.1416E+0000 0.000000000E+0000 -1.0402E-0011

PROGRAM 7.1.

Zagadnienie początkowo-brzegowe

dla równania parabolicznego.

Metoda niejawna pierwszego rzędu.

Liczba podprzedziałów: m = 36

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

Koniec przedziału: b = 3.1416E+0000

Krok czasowy: dt = 5.0000E-0003

Warunki brzegowe: ua = 0.0000E+0000

ub = 0.0000E+0000

Wartości funkcji u(x,t) dla t = 1.0000E+0000:

j x[j] u[j] błąd

0 0.0000E+0000 0.000000000E+0000 0.0000E+0000

1 8.7266E-0002 9.648928389E-0002 -3.0087E-0004

2 1.7453E-0001 1.922442261E-0001 -5.9944E-0004

3 2.6180E-0001 2.865360736E-0001 -8.9346E-0004

4 3.4907E-0001 3.786472086E-0001 -1.1806E-0003

5 4.3633E-0001 4.678766097E-0001 -1.4589E-0003

6 5.2360E-0001 5.535451873E-0001 -1.7260E-0003

7 6.1087E-0001 6.350009518E-0001 -1.9800E-0003

8 6.9813E-0001 7.116239756E-0001 -2.2189E-0003

9 7.8540E-0001 7.828311113E-0001 -2.4410E-0003

10 8.7266E-0001 8.480804295E-0001 -2.6444E-0003

11 9.5993E-0001 9.068753436E-0001 -2.8278E-0003

12 1.0472E+0000 9.587683887E-0001 -2.9896E-0003

13 1.1345E+0000 1.003364628E+0000 -3.1286E-0003

14 1.2217E+0000 1.040324656E+0000 -3.2439E-0003

15 1.3090E+0000 1.069367185E+0000 -3.3344E-0003

16 1.3963E+0000 1.090271184E+0000 -3.3996E-0003

17 1.4835E+0000 1.102877562E+0000 -3.4389E-0003

18 1.5708E+0000 1.107090375E+0000 -3.4521E-0003

19 1.6581E+0000 1.102877562E+0000 -3.4389E-0003

20 1.7453E+0000 1.090271184E+0000 -3.3996E-0003

21 1.8326E+0000 1.069367185E+0000 -3.3344E-0003

22 1.9199E+0000 1.040324656E+0000 -3.2439E-0003

23 2.0071E+0000 1.003364628E+0000 -3.1286E-0003

24 2.0944E+0000 9.587683888E-0001 -2.9896E-0003

25 2.1817E+0000 9.068753437E-0001 -2.8278E-0003

26 2.2689E+0000 8.480804296E-0001 -2.6444E-0003

27 2.3562E+0000 7.828311114E-0001 -2.4410E-0003

28 2.4435E+0000 7.116239757E-0001 -2.2189E-0003

29 2.5307E+0000 6.350009519E-0001 -1.9800E-0003

30 2.6180E+0000 5.535451874E-0001 -1.7260E-0003

31 2.7053E+0000 4.678766098E-0001 -1.4589E-0003

32 2.7925E+0000 3.786472086E-0001 -1.1806E-0003

33 2.8798E+0000 2.865360736E-0001 -8.9346E-0004

34 2.9671E+0000 1.922442261E-0001 -5.9944E-0004

35 3.0543E+0000 9.648928390E-0002 -3.0087E-0004

36 3.1416E+0000 0.000000000E+0000 -1.0402E-0011

PROGRAM 7.1.

Zagadnienie początkowo-brzegowe

dla równania parabolicznego.

Metoda Cranka-Nicolsona.

Liczba podprzedziałów: m = 36

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

Koniec przedziału: b = 3.1416E+0000

Krok czasowy: dt = 1.0000E-0002

Warunki brzegowe: ua = 0.0000E+0000

ub = 0.0000E+0000

Wartości funkcji u(x,t) dla t = 1.0000E+0000:

j x[j] u[j] błąd

0 0.0000E+0000 0.000000000E+0000 0.0000E+0000

1 8.7266E-0002 9.624866418E-0002 -6.0246E-0005

2 1.7453E-0001 1.917648179E-0001 -1.2003E-0004

3 2.6180E-0001 2.858215256E-0001 -1.7891E-0004

4 3.4907E-0001 3.777029589E-0001 -2.3642E-0004

5 4.3633E-0001 4.667098446E-0001 -2.9213E-0004

6 5.2360E-0001 5.521647866E-0001 -3.4562E-0004

7 6.1087E-0001 6.334174211E-0001 -3.9648E-0004

8 6.9813E-0001 7.098493666E-0001 -4.4433E-0004

9 7.8540E-0001 7.808789298E-0001 -4.8879E-0004

10 8.7266E-0001 8.459655329E-0001 -5.2953E-0004

11 9.5993E-0001 9.046138274E-0001 -5.6624E-0004

12 1.0472E+0000 9.563774645E-0001 -5.9864E-0004

13 1.1345E+0000 1.000862492E+0000 -6.2648E-0004

14 1.2217E+0000 1.037730351E+0000 -6.4956E-0004

15 1.3090E+0000 1.066700455E+0000 -6.6770E-0004

16 1.3963E+0000 1.087552326E+0000 -6.8075E-0004

17 1.4835E+0000 1.100127266E+0000 -6.8862E-0004

18 1.5708E+0000 1.104329573E+0000 -6.9125E-0004

19 1.6581E+0000 1.100127266E+0000 -6.8862E-0004

20 1.7453E+0000 1.087552326E+0000 -6.8075E-0004

21 1.8326E+0000 1.066700455E+0000 -6.6770E-0004

22 1.9199E+0000 1.037730351E+0000 -6.4956E-0004

23 2.0071E+0000 1.000862492E+0000 -6.2648E-0004

24 2.0944E+0000 9.563774645E-0001 -5.9864E-0004

25 2.1817E+0000 9.046138274E-0001 -5.6624E-0004

26 2.2689E+0000 8.459655329E-0001 -5.2953E-0004

27 2.3562E+0000 7.808789298E-0001 -4.8879E-0004

28 2.4435E+0000 7.098493666E-0001 -4.4433E-0004

29 2.5307E+0000 6.334174211E-0001 -3.9648E-0004

30 2.6180E+0000 5.521647866E-0001 -3.4562E-0004

31 2.7053E+0000 4.667098446E-0001 -2.9213E-0004

32 2.7925E+0000 3.777029589E-0001 -2.3642E-0004

33 2.8798E+0000 2.858215256E-0001 -1.7891E-0004

34 2.9671E+0000 1.917648179E-0001 -1.2003E-0004

35 3.0543E+0000 9.624866419E-0002 -6.0246E-0005

36 3.1416E+0000 0.000000000E+0000 -1.0402E-0011

PROGRAM 7.1.

Zagadnienie początkowo-brzegowe

dla równania parabolicznego.

Metoda Duforta-Frankela.

Liczba podprzedziałów: m = 36

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

Koniec przedziału: b = 3.1416E+0000

Krok czasowy: dt = 5.0000E-0003

Warunki brzegowe: ua = 0.0000E+0000

ub = 0.0000E+0000

Wartości funkcji u(x,t) dla t = 1.0000E+0000:

j x[j] u[j] błąd

0 0.0000E+0000 0.000000000E+0000 0.0000E+0000

1 8.7266E-0002 9.593421692E-0002 2.5420E-0004

2 1.7453E-0001 1.911383165E-0001 5.0647E-0004

3 2.6180E-0001 2.848877381E-0001 7.5488E-0004

4 3.4907E-0001 3.764689920E-0001 9.9755E-0004

5 4.3633E-0001 4.651850895E-0001 1.2326E-0003

6 5.2360E-0001 5.503608477E-0001 1.4583E-0003

7 6.1087E-0001 6.313480274E-0001 1.6729E-0003

8 6.9813E-0001 7.075302675E-0001 1.8748E-0003

9 7.8540E-0001 7.783277750E-0001 2.0624E-0003

10 8.7266E-0001 8.432017381E-0001 2.2343E-0003

11 9.5993E-0001 9.016584269E-0001 2.3892E-0003

12 1.0472E+0000 9.532529507E-0001 2.5259E-0003

13 1.1345E+0000 9.975926438E-0001 2.6434E-0003

14 1.2217E+0000 1.034340055E+0000 2.7407E-0003

15 1.3090E+0000 1.063215513E+0000 2.8172E-0003

444 7. Równania różniczkowe cząstkowe

7.3. Równania paraboliczne 445



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
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