6.3. Równania całkowe
6.3.1. Wprowadzenie
Równaniem całkowym nazywa się równanie, w którym funkcja niewiadoma występuje pod znakiem całki. Równanie całkowe można zapisać w postaci ogólnej
(6.109)
gdzie F i K są danymi funkcjami trzech argumentów, jest obszarem w przestrzeni całka po zbiorze jest całką dowolnego typu, ϕ jest funkcją niewiadomą.
Równaniami całkowymi są opisywane różne zjawiska i procesy fizyczne, przy czym najczęściej są to zagadnienia opisywane równaniami całkowymi liniowymi postaci
(6.110)
gdzie oraz f, K są funkcjami danymi, ϕ - funkcją niewiadomą, λ - parametrem; funkcję
nazywamy jądrem równania (6.110).
Równania całkowe liniowe mogą być równaniami całkowymi Volterry, w których obszar całkowania jest zmienny lub też równaniami całkowymi Fredholma, w których obszar całkowania jest stały - przy czym rozróżniamy cztery zasadnicze typy równań liniowych:
- równanie Volterry drugiego rodzaju
(6.111)
- równanie Volterry pierwszego rodzaju
(6.112)
- równanie Fredholma drugiego rodzaju
(6.113)
- równanie Fredholma pierwszego rodzaju
(6.114)
W analizie numerycznej najważniejszymi spośród czterech wymienionych typów równań (6.111) ÷ (6.114) są równania całkowe liniowe drugiego rodzaju, gdyż równania Fredholma pierwszego rodzaju można rozwiązywać w podobny sposób jak równania Fredholma drugiego rodzaju, a większość równań Volterry pierwszego rodzaju można sprowadzić do równań Volterry drugiego rodzaju po obustronnym zróżniczkowaniu równania (6.112) względem zmiennej x
(6.115)
lub też po dokonaniu podstawienia
w wyniku którego po scałkowaniu przez części równania
otrzymujemy
(6.116)
Przy założeniach: dla równania (6.115) i (6.116) są równaniami Volterry drugiego rodzaju i są równoważne równaniu (6.112).
W przypadku równań nieliniowych można wykorzystać jedną z metod iteracyjnych, np. po zastosowaniu metody Newtona-Kantorowicza [36] do równania
(6.117)
otrzymujemy następujący ciąg kolejnych przybliżeń
(6.118)
Rozwiązania przybliżone zagadnień dla równań całkowo-różniczkowych, np. dla zagadnienia:
mogą być oparte na metodach wynikających z połączenia algorytmów numerycznych opracowanych dla równań całkowych z algorytmami numerycznymi stosowanymi do rozwiązywania zagadnień brzegowych dla równań różniczkowych zwyczajnych.
Istnieje ścisły związek równań różniczkowych zwyczajnych z równaniami całkowymi.
Rozwiązanie równania różniczkowego zwyczajnego
(6.119)
z ciągłymi współczynnikami dla warunków początkowych:
(6.120)
jest równoważne równaniu całkowemu Volterry drugiego rodzaju postaci [36]
(6.121)
gdzie:
(6.122)
(6.123)
Podobnie rozwiązania wielu zagadnień brzegowych dla równań różniczkowych zwyczajnych można sprowadzić do rozwiązywania równań całkowych, np. funkcja spełniająca równanie różniczkowe zwyczajne
(6.124)
z warunkami brzegowymi:
(6.125)
gdzie i są danymi funkcjami ciągłymi na przedziale
spełnia również równanie całkowe [37]
(6.126)
gdzie:
(6.127)
Równania całkowe są rozwiązywane różnymi metodami analitycznymi, analityczno-numerycznymi i numerycznymi, z których najważniejsze to:
1) metoda kolejnych przybliżeń, w której buduje się ciąg funkcji za pomocą wzoru rekurencyjnego
(6.128)
zbieżny dla dowolnego przybliżenia początkowego
2) metoda zastępowania jąder równań całkowych przez jądra zdegenerowane
(6.129)
gdzie i są dwoma układami funkcji liniowo-niezależnych,
3) metody wariacyjne, w których rozwiązania równania całkowego poszukuje się - tak samo jak w zagadnieniu aproksymacji średniokwadratowej - w postaci kombinacji liniowej układu funkcji liniowo-niezależnych i żąda, żeby odpowiedni funkcjonał od residuum równania całkowego miał możliwie najmniejszą normę. Na tej zasadzie oparte są metody: kollokacji, najmniejszych kwadratów i Galerkina,
4) metody polegające na przybliżaniu całek występujących w równaniach całkowych odpowiednimi kwadraturami.
W następnych dwóch rozdziałach zostaną zaprezentowane proste algorytmy rozwiązywania równań (6.111) i (6.113) przy wykorzystaniu metody trapezów i metody kollokacji liniowymi funkcjami sklejanymi. Metoda kollokacji funkcjami sklejanymi trzeciego stopnia dla tych równań całkowych, pozwalająca na osiągnięcie bardzo dużej dokładności obliczeń, została przedstawiona w monografii [38].
6.3.2. Równania całkowe Volterry drugiego rodzaju
Przybliżając w równaniu (6.111) całkę oznaczoną za pomocą złożonego wzoru trapezów (5.37) otrzymamy układ równań liniowych z trójkątną macierzą współczynników:
(6.130)
gdzie:
Z kolejnych równań układu (6.130) rekurencyjnie obliczamy:
(6.131)
W podobny sposób aproksymując rozwiązanie równania całkowego (6.111) liniową funkcją sklejaną
(6.132)
przedstawioną za pomocą sklejanych (4.115)
(6.133)
dostajemy układ równań liniowych z trójkątną macierzą współczynników, którego rozwiązanie jest następujące:
(6.134)
gdzie
(6.135)
{Program 6.8}
unit Obliczenia;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons;
. . . . . . . . . . . . . . . . .
var
Form3: TForm3;
a,b,fin,h,lam,pom,sum,x: Real;
fi: array[0..100] of Real;
i,j,n,war: Integer;
plik: Text;
implementation
uses Ustawienia, Informacje, Grafika, Podglad;
{$R *.DFM}
function K(x,t: Real): Real;
begin
if Form3.RadioButton3.Checked then K:=Exp(x-t);
if Form3.RadioButton4.Checked then
K:=1-(x-t)*Exp(2*x);
end;
function f(x: Real): Real;
begin
if Form3.RadioButton3.Checked then f:=Exp(x);
if Form3.RadioButton4.Checked then
f:=(1-x*Exp(2*x))*cos(1)-Exp(2*x)*Sin(1);
end;
function fid(x: Real): Real;
begin
if Form3.RadioButton3.Checked then fid:=Exp(2*x);
if Form3.RadioButton4.Checked then
fid:=Exp(x)*(Cos(Exp(x))-Exp(x)*Sin(Exp(x)));
end;
{function B_j(j: Integer; x,a,h: Real): Real;}
{function CalGa(i,j: Integer; a,h,x: Real): Real;}
. . . . . . . . . . . . . . . . . . . . . . . .
procedure TForm3.BitBtn1Click(Sender: TObject);
label omin1,omin2;
begin
Form2.Show;
AssignFile(plik,Edit4.Text);
Rewrite(plik); Writeln(plik,'PROGRAM 6.8.');
Writeln(plik,'Równanie całkowe Volterry drugiego rodzaju.');
a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text);
n:=StrToInt(Edit3.Text); lam:=StrToFloat(Edit5.Text);
if RadioButton1.Checked then war:=1;
if RadioButton2.Checked then war:=2;
if war=1 then
Writeln(plik,'Całkowanie metodą trapezów.');
if war=2 then
Writeln(plik,'Metoda kollokacji liniowymi funkcjami sklejanymi.');
Writeln(plik);
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,'Parametr równania: lambda = ',lam:13);
Writeln(plik); Writeln(plik,'Obliczone wartości funkcji:');
Writeln(plik,' i x[i] fi[i] błąd');
Writeln(plik,0:3,' ',a:13,' ',fid(a):18,' ',fid(a)-f(a):13);
h:=(b-a)/n; fi[0]:=f(a);
if war=2 then goto omin1;
for i:=1 to n do begin
x:=a+i*h;
sum:=0.5*K(x,a)*fi[0];
for j:=1 to i-1 do
sum:=sum+K(x,a+j*h)*fi[j];
pom:=1-0.5*lam*K(x,x)*h;
fin:=(f(x)+lam*sum*h)/pom; fi[i]:=fin;
Writeln(plik,i:3,' ',x:13,' ',fin:18,' ',fin-fid(x):13);
end;
if war=1 then goto omin2;
omin1:
for i:=1 to n do begin
x:=a+i*h; sum:=0;
for j:=0 to i-1 do
sum:=sum+CalGa(i,j,a,h,x)*fi[j];
pom:=1-lam*CalGa(i,i,a,h,x);
fin:=(f(x)+lam*sum)/pom; fi[i]:=fin;
Writeln(plik,i:3,' ',x:13,' ',fin:18,' ',fin-fid(x):13);
end;
omin2:
Writeln(plik); CloseFile(plik);
Form2.Wyniki.Lines.LoadFromFile(Edit4.Text);
end;
. . . . . . . . . . . . . . . . . . . . . . .
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Close;
end;
end.
Zadaniem programu 6.8 jest rozwiązywanie równania całkowego Volterry drugiego rodzaju (6.111) metodą przybliżania całek złożonymi kwadraturami trapezów (6.131) lub też metodą kollokacji funkcjami sklejanymi pierwszego stopnia (6.132) ÷ (6.135). Występująca w programie procedura funkcyjna CalGa(i,j,a,h,x), jest przeznaczona do obliczania całek (6.135) przy wykorzystaniu kwadratury Gaussa-Legendre'a z trzema węzłami (5.50).
Za pomocą programu 6.8 wykonano najpierw obliczenia testowe dla równania całkowego
(6.136)
przyjmując n = 25 - mającego rozwiązanie dokładne
(6.137)
Wyniki obliczeń są następujące:
PROGRAM 6.8.
Równanie całkowe Volterry drugiego rodzaju.
Całkowanie metodą trapezów.
Liczba podprzedziałów: n = 25
Początek przedziału: a = 0.0000E+0000
Koniec przedziału: b = 2.5000E+0000
Parametr równania: lambda = 1.0000E+0000
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 1.000000000E+0000 0.0000E+0000
1 1.0000E-0001 1.221504699E+0000 1.0194E-0004
2 2.0000E-0001 1.492073729E+0000 2.4903E-0004
3 3.0000E-0001 1.822575072E+0000 4.5627E-0004
4 4.0000E-0001 2.226284014E+0000 7.4309E-0004
5 5.0000E-0001 2.719416385E+0000 1.1345E-0003
6 6.0000E-0001 3.321779892E+0000 1.6630E-0003
7 7.0000E-0001 4.057569747E+0000 2.3698E-0003
8 8.0000E-0001 4.956340512E+0000 3.3081E-0003
9 9.0000E-0001 6.054193225E+0000 4.5458E-0003
10 1.0000E+0000 7.395225473E+0000 6.1694E-0003
11 1.1000E+0000 9.033302664E+0000 8.2892E-0003
12 1.2000E+0000 1.103422165E+0001 1.1045E-0002
13 1.3000E+0000 1.347835359E+0001 1.4615E-0002
14 1.4000E+0000 1.646387225E+0001 1.9225E-0002
15 1.5000E+0000 2.011069732E+0001 2.5160E-0002
16 1.6000E+0000 2.456531127E+0001 3.2781E-0002
17 1.7000E+0000 3.000664315E+0001 4.2543E-0002
18 1.8000E+0000 3.665325561E+0001 5.5021E-0002
19 1.9000E+0000 4.477212395E+0001 7.0939E-0002
20 2.0000E+0000 5.468935979E+0001 9.1210E-0002
21 2.1000E+0000 6.680330997E+0001 1.1697E-0001
22 2.2000E+0000 8.160055703E+0001 1.4969E-0001
23 2.3000E+0000 9.967546384E+0001 1.9115E-0001
24 2.4000E+0000 1.217540474E+0002 2.4363E-0001
25 2.5000E+0000 1.487231411E+0002 3.0998E-0001
PROGRAM 6.8.
Równanie całkowe Volterry drugiego rodzaju.
Metoda kollokacji liniowymi funkcjami sklejanymi.
. . . . . . . . . . . . . . . . . . . . . . . .
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 1.000000000E+0000 0.0000E+0000
1 1.0000E-0001 1.221811529E+0000 4.0877E-0004
2 2.0000E-0001 1.492823411E+0000 9.9871E-0004
3 3.0000E-0001 1.823948854E+0000 1.8301E-0003
4 4.0000E-0001 2.228521738E+0000 2.9808E-0003
5 5.0000E-0001 2.722833551E+0000 4.5517E-0003
6 6.0000E-0001 3.326789422E+0000 6.6725E-0003
7 7.0000E-0001 4.064709670E+0000 9.5097E-0003
8 8.0000E-0001 4.966309135E+0000 1.3276E-0002
9 9.0000E-0001 6.067893755E+0000 1.8246E-0002
10 1.0000E+0000 7.413822544E+0000 2.4766E-0002
11 1.1000E+0000 9.058293855E+0000 3.3280E-0002
12 1.2000E+0000 1.106752786E+0001 4.4351E-0002
13 1.3000E+0000 1.352243313E+0001 5.8695E-0002
14 1.4000E+0000 1.652186470E+0001 7.7218E-0002
15 1.5000E+0000 2.018660476E+0001 1.0106E-0001
16 1.6000E+0000 2.466422642E+0001 1.3170E-0001
17 1.7000E+0000 3.013503618E+0001 1.7094E-0001
18 1.8000E+0000 3.681933462E+0001 2.2110E-0001
19 1.9000E+0000 4.498628752E+0001 2.8510E-0001
20 2.0000E+0000 5.496476472E+0001 3.6661E-0001
21 2.1000E+0000 6.715658320E+0001 4.7025E-0001
22 2.2000E+0000 8.205268757E+0001 6.0182E-0001
23 2.3000E+0000 1.002529196E+0002 7.6860E-0001
24 2.4000E+0000 1.224901729E+0002 9.7976E-0001
25 2.5000E+0000 1.496599055E+0002 1.2467E+0000
Porównując zamieszczone wyniki obliczeń możemy stwierdzić, że dla równania (6.136) metoda zastępowania całek złożonymi kwadraturami trapezów okazała się trochę dokładniejsza od metody kollokacji liniowymi funkcjami sklejanymi. W przy-padku natomiast równania całkowego (6.111) określonego funkcjami:
którego rozwiązanie jest następujące
nieco bardziej stabilna okazała się metoda kollokacji funkcjami sklejanymi pierwszego stopnia, co można zaobserwować na poniższych tabulogramach wyników.
PROGRAM 6.8.
Równanie całkowe Volterry drugiego rodzaju.
Całkowanie metodą trapezów.
Liczba podprzedziałów: n = 100
Początek przedziału: a = 0.0000E+0000
Koniec przedziału: b = 2.5000E+0000
Parametr równania: lambda = 1.0000E+0000
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 -3.011686789E-0001 0.0000E+0000
1 2.5000E-0002 -3.667621182E-0001 -1.7629E-0005
2 5.0000E-0002 -4.374638735E-0001 -3.7278E-0005
3 7.5000E-0002 -5.135392792E-0001 -5.9105E-0005
4 1.0000E-0001 -5.952551110E-0001 -8.3275E-0005
5 1.2500E-0001 -6.828774235E-0001 -1.0996E-0004
6 1.5000E-0001 -7.766689828E-0001 -1.3934E-0004
7 1.7500E-0001 -8.768862411E-0001 -1.7158E-0004
8 2.0000E-0001 -9.837758006E-0001 -2.0689E-0004
9 2.2500E-0001 -1.097570303E+0000 -2.4544E-0004
10 2.5000E-0001 -1.218483682E+0000 -2.8740E-0004
. . . . . . . . . . . . . . . . . . . . . . . . . . .
80 2.0000E+0000 -4.572386697E+0001 -2.3397E-0001
81 2.0250E+0000 -5.334990424E+0001 -2.3231E-0001
82 2.0500E+0000 -5.966443310E+0001 -2.1540E-0001
83 2.0750E+0000 -6.410498691E+0001 -1.7951E-0001
84 2.1000E+0000 -6.609228457E+0001 -1.2114E-0001
85 2.1250E+0000 -6.506652701E+0001 -3.7530E-0002
86 2.1500E+0000 -6.053384406E+0001 7.2831E-0002
87 2.1750E+0000 -5.212226124E+0001 2.0942E-0001
88 2.2000E+0000 -3.964527389E+0001 3.6893E-0001
89 2.2250E+0000 -2.316947926E+0001 5.4443E-0001
90 2.2500E+0000 -3.080767817E+0000 7.2463E-0001
91 2.2750E+0000 1.985857074E+0001 8.9331E-0001
92 2.3000E+0000 4.447160435E+0001 1.0293E+0000
93 2.3250E+0000 6.915895239E+0001 1.1068E+0000
94 2.3500E+0000 9.193400051E+0001 1.0973E+0000
95 2.3750E+0000 1.105133749E+0002 9.7160E-0001
96 2.4000E+0000 1.224725601E+0002 7.0420E-0001
97 2.4250E+0000 1.254715169E+0002 2.7857E-0001
98 2.4500E+0000 1.175469105E+0002 -3.0634E-0001
99 2.4750E+0000 9.745585550E+0001 -1.0289E+0000
100 2.5000E+0000 6.504122242E+0001 -1.8380E+0000
PROGRAM 6.8.
Równanie całkowe Volterry drugiego rodzaju.
Metoda kollokacji liniowymi funkcjami sklejanymi.
. . . . . . . . . . . . . . . . . . . . . . . .
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 -3.011686789E-0001 0.0000E+0000
1 2.5000E-0002 -3.667548451E-0001 -1.0356E-0005
2 5.0000E-0002 -4.374478072E-0001 -2.1212E-0005
3 7.5000E-0002 -5.135126867E-0001 -3.2513E-0005
4 1.0000E-0001 -5.952160241E-0001 -4.4188E-0005
5 1.2500E-0001 -6.828236142E-0001 -5.6150E-0005
6 1.5000E-0001 -7.765979373E-0001 -6.8290E-0005
7 1.7500E-0001 -8.767951334E-0001 -8.0477E-0005
8 2.0000E-0001 -9.836614636E-0001 -9.2552E-0005
9 2.2500E-0001 -1.097429200E+0000 -1.0433E-0004
10 2.5000E-0001 -1.218311879E+0000 -1.1560E-0004
. . . . . . . . . . . . . . . . . . . . . . . . . . .
80 2.0000E+0000 -4.525933088E+0001 2.3057E-0001
81 2.0250E+0000 -5.286755187E+0001 2.5004E-0001
82 2.0500E+0000 -5.919092964E+0001 2.5810E-0001
83 2.0750E+0000 -6.367518643E+0001 2.5029E-0001
84 2.1000E+0000 -6.574919782E+0001 2.2194E-0001
85 2.1250E+0000 -6.486044196E+0001 1.6856E-0001
86 2.1500E+0000 -6.052030869E+0001 8.6367E-0002
87 2.1750E+0000 -5.235863895E+0001 -2.6956E-0002
88 2.2000E+0000 -4.018562559E+0001 -1.7142E-0001
89 2.2250E+0000 -2.405763093E+0001 -3.4372E-0001
90 2.2500E+0000 -4.341607116E+0000 -5.3621E-0001
91 2.2750E+0000 1.822924358E+0001 -7.3602E-0001
92 2.3000E+0000 4.251795803E+0001 -9.2437E-0001
93 2.3250E+0000 6.697553647E+0001 -1.0766E+0000
94 2.3500E+0000 8.967392441E+0001 -1.1628E+0000
95 2.3750E+0000 1.083919208E+0002 -1.1499E+0000
96 2.4000E+0000 1.207634232E+0002 -1.0049E+0000
97 2.4250E+0000 1.244926474E+0002 -7.0030E-0001
98 2.4500E+0000 1.176331756E+0002 -2.2007E-0001
99 2.4750E+0000 9.891668132E+0001 4.3194E-0001
100 2.5000E+0000 6.810326567E+0001 1.2240E+0000
6.3.3. Równania całkowe Fredholma drugiego rodzaju
Zastosowanie do równania całkowego Fredholma drugiego rodzaju (6.113) rozważanych w rozdziale poprzednim metod przybliżania całek złożonymi kwadraturami trapezów i kollokacji funkcjami sklejanymi pierwszego stopnia wymaga rozwiązania układu równań liniowych z pełną macierzą współczynników
(6.138)
W przypadku metody przybliżania całek złożonymi kwadraturami trapezów współczynniki układu równań (6.138) są określone wzorami:
(6.139a)
gdzie
(6.139b)
Natomiast zastosowanie metody kollokacji liniowymi funkcjami prowadzi do układu równań liniowych (6.138) ze współczynnikami postaci:
(6.140a)
gdzie
(6.140b)
{Program 6.9}
unit Obliczenia;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons;
type
Tabl = array[0..36,0..37] of Real;
. . . . . . . . . . . . . . . . . .
var
Form3: TForm3;
i,j,n,war: Integer;
a,b,det,fin,h,lam,t,x: Real;
plik: Text;
mac: Tabl;
implementation
uses Ustawienia, Informacje, Grafika, Podglad;
{$R *.DFM}
function K(x,t: Real): Real;
begin
if Form3.RadioButton3.Checked then
K:=Exp(x-t);
if Form3.RadioButton4.Checked then
K:=Sqrt(t)-x;
end;
function f(x: Real): Real;
begin
if Form3.RadioButton3.Checked then
f:=x;
if Form3.RadioButton4.Checked then
f:=5*x/3+Sqrt(x)-1/6;
end;
function fid(x: Real): Real;
begin
if Form3.RadioButton3.Checked then
fid:=x+Exp(x);
if Form3.RadioButton4.Checked then
fid:=1+Sqrt(x);
end;
{function B_j(j: Integer; x,a,h: Real): Real;}
{function CalGa(i,j: Integer; a,h,x: Real): Real;}
{procedure ElimGaussa(n,m: Integer; var A: Tabl; var det: Real);}
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
procedure TForm3.BitBtn1Click(Sender: TObject);
label omin1,omin2;
begin
Form2.Show;
AssignFile(plik,Edit4.Text);
Rewrite(plik); Writeln(plik,'PROGRAM 6.9.');
Writeln(plik,'Równanie całkowe Fredholma drugiego rodzaju.');
a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text);
n:=StrToInt(Edit3.Text); lam:=StrToFloat(Edit5.Text);
if RadioButton1.Checked then war:=1;
if RadioButton2.Checked then war:=2;
if war=1 then
Writeln(plik,'Całkowanie metodą trapezów.');
if war=2 then
Writeln(plik,'Metoda kollokacji liniowymi funkcjami sklejanymi.');
Writeln(plik);
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,'Parametr równania: lambda = ',lam:13);
Writeln(plik); Writeln(plik,'Obliczone wartości funkcji:');
Writeln(plik,' i x[i] fi[i] błąd');
h:=(b-a)/n;
if war=2 then goto omin1;
for i:=0 to n do begin
x:=a+i*h;
for j:=0 to n do begin
t:=a+j*h;
mac[i,j]:=-lam*h*K(x,t);
if (j=0) or (j=n) then
mac[i,j]:=mac[i,j]/2;
if i=j then
mac[i,j]:=mac[i,j]+1;
end;
mac[i,n+1]:=f(x);
end;
if war=1 then goto omin2;
omin1:
for i:=0 to n do begin
x:=a+i*h;
for j:=0 to n do begin
mac[i,j]:=-lam*CalGa(n,j,a,h,x);
if i=j then
mac[i,j]:=mac[i,j]+1;
end;
mac[i,n+1]:=f(x);
end;
omin2:
ElimGaussa(n,1,mac,det);
for i:=0 to n do begin
x:=a+i*h; fin:=mac[i,n+1];
Writeln(plik,i:3,' ',x:13,' ',fin:18,' ',fin-fid(x):13);
end;
Writeln(plik); CloseFile(plik);
Form2.Wyniki.Lines.LoadFromFile(Edit4.Text);
end;
. . . . . . . . . . . . . . . . . . . . . . .
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Close;
end;
end.
Program 6.9 jest zmodyfikowanym programem 6.8, w którym do rozwiązywania układu równań liniowych (6.138) wykorzystano metodę eliminacji Gaussa. Za pomocą programu 6.9 rozwiązano dwa równania Fredholma drugiego rodzaju:
równanie I
(6.141)
równanie II
(6.142)
Uzyskane wyniki obliczeń zawierają cztery kolejne tabulogramy komputerowe. Błędy obliczeń przy zastosowaniu obu rozważanych metod są tego samego rzędu, przy czym algorytm metody pierwszej daje rozwiązania równań całkowych (6.141) oraz (6.142) z niedomiarem, algorytm metody drugiej - z nadmiarem.
PROGRAM 6.9.
Równanie całkowe Fredholma drugiego rodzaju.
Całkowanie metodą trapezów.
Liczba podprzedziałów: n = 10
Początek przedziału: a = 0.0000E+0000
Koniec przedziału: b = 1.0000E+0000
Parametr równania: lambda = 7.9099E-0001
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 9.968477851E-0001 -3.1522E-0003
1 1.0000E-0001 1.201687182E+0000 -3.4837E-0003
2 2.0000E-0001 1.417552634E+0000 -3.8501E-0003
3 3.0000E-0001 1.645603763E+0000 -4.2550E-0003
4 4.0000E-0001 1.887122146E+0000 -4.7026E-0003
5 5.0000E-0001 2.143524147E+0000 -5.1971E-0003
6 6.0000E-0001 2.416375090E+0000 -5.7437E-0003
7 7.0000E-0001 2.707404926E+0000 -6.3478E-0003
8 8.0000E-0001 3.018525545E+0000 -7.0154E-0003
9 9.0000E-0001 3.351849914E+0000 -7.7532E-0003
10 1.0000E+0000 3.709713220E+0000 -8.5686E-0003
PROGRAM 6.9.
Równanie całkowe Fredholma drugiego rodzaju.
Metoda kollokacji liniowymi funkcjami sklejanymi.
. . . . . . . . . . . . . . . . . . . . . . . .
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 1.003165004E+0000 3.1650E-0003
1 1.0000E-0001 1.208668789E+0000 3.4979E-0003
2 2.0000E-0001 1.425268503E+0000 3.8657E-0003
3 3.0000E-0001 1.654131116E+0000 4.2723E-0003
4 4.0000E-0001 1.896546329E+0000 4.7216E-0003
5 5.0000E-0001 2.153939480E+0000 5.2182E-0003
6 6.0000E-0001 2.427885814E+0000 5.7670E-0003
7 7.0000E-0001 2.720126243E+0000 6.3735E-0003
8 8.0000E-0001 3.032584775E+0000 7.0438E-0003
9 9.0000E-0001 3.367387765E+0000 7.7847E-0003
10 1.0000E+0000 3.726885201E+0000 8.6034E-0003
PROGRAM 6.9.
Równanie całkowe Fredholma drugiego rodzaju.
Całkowanie metodą trapezów.
Liczba podprzedziałów: n = 10
Początek przedziału: a = 0.0000E+0000
Koniec przedziału: b = 1.0000E+0000
Parametr równania: lambda = 1.0000E+0000
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 9.925683038E-0001 -7.4317E-0003
1 1.0000E-0001 1.309702005E+0000 -6.5258E-0003
2 2.0000E-0001 1.441593769E+0000 -5.6198E-0003
3 3.0000E-0001 1.543008666E+0000 -4.7139E-0003
4 4.0000E-0001 1.628647575E+0000 -3.8080E-0003
5 5.0000E-0001 1.704204759E+0000 -2.9020E-0003
6 6.0000E-0001 1.772600582E+0000 -1.9961E-0003
7 7.0000E-0001 1.835569874E+0000 -1.0901E-0003
8 8.0000E-0001 1.894242973E+0000 -1.8422E-0004
9 9.0000E-0001 1.949405015E+0000 7.2172E-0004
10 1.0000E+0000 2.001627651E+0000 1.6277E-0003
PROGRAM 6.9.
Równanie całkowe Fredholma drugiego rodzaju.
Metoda kollokacji liniowymi funkcjami sklejanymi.
. . . . . . . . . . . . . . . . . . . . . . . .
Obliczone wartości funkcji:
i x[i] fi[i] błąd
0 0.0000E+0000 1.000401154E+0000 4.0115E-0004
1 1.0000E-0001 1.317012664E+0000 7.8490E-0004
2 2.0000E-0001 1.448382239E+0000 1.1686E-0003
3 3.0000E-0001 1.549274945E+0000 1.5523E-0003
4 4.0000E-0001 1.634391665E+0000 1.9361E-0003
5 5.0000E-0001 1.709426659E+0000 2.3199E-0003
6 6.0000E-0001 1.777300291E+0000 2.7036E-0003
7 7.0000E-0001 1.839747393E+0000 3.0874E-0003
8 8.0000E-0001 1.897898303E+0000 3.4711E-0003
9 9.0000E-0001 1.952538155E+0000 3.8549E-0003
10 1.0000E+0000 2.004238601E+0000 4.2386E-0003
418 6. Równania różniczkowe zwyczajne i całkowe
6.3. Równania całkowe 417