Теорема (прогонка усулининг турѓунлиги ҳаќида). Агар ; шартлар бажарилса прогонка усули турѓун бўлади.
Мисол.
дифференциал тенгламанинг
чегаравий шартни ќаноатлантирувчи ечимини берилган дастур ёрдамида аниќланг.
Текшириб кўриш мумкинки, берилган чегаравий масала аниќ ечимга эга. Ќуйидаги жадвалда масаланинг ни айрим тугун нуќталарига мос келувчи таќрибий ва аниќ ечимлари ќийматлари келтирилган.
|
0,0
|
0,1
|
0,2
|
0,3
|
0,4
|
0,5
|
0,6
|
0,7
|
0,8
|
0,9
|
1,0
|
Таќ. ечим
|
0,986
|
1,089
|
1,193
|
1,302
|
1,417
|
1,540
|
1,673
|
1,819
|
1,978
|
2,153
|
2,345
|
Аниќ ечим
|
1,000
|
1,100
|
1,203
|
1,309
|
1,421
|
1,542
|
1,672
|
1,814
|
1,971
|
2,143
|
2,333
|
Паскаль тилида прогонка усулига тузилган дастур матни:
program progonka;
const a1=0; b1=1; m=10; h=(b1-a1)/m;
alfa0=0.5; alfa1=0.5; alfa2=1.0;
betta0=-3.0; betta1=2.0; betta2=-3.0;
type vektor=array[0..m] of real;
var
x,y,a,b,c,r,d,e:vektor;
i:integer;
q,s,g1,g2:real;
function fq(t:real):real;
begin
fq:=2-t { функциясининг берилиши}
end;
function fr(t:real):real;
begin
fr:=-sqr(sqr(t))/3+2*t*sqr(t)/3-sqr(t)+3*t+2 {r(x) функциясининг берилиши}
end;
begin
for i:=0 to m do begin
x[i]:=a1+i*h; a[i]:=1.0; b[i]:=1.0;
c[i]:=2-fq(x[i])*sqr(h); r[i]:=fr(x[i])*sqr(h)
end;
g1:=2*(alfa1-alfa0*h); e[1]:=alfa1*(2+fq(x[1])*sqr(h))/g1;
d[1]:=-h*(2*alfa2+alfa1*fr(x[1])*h)/g1;
for i:=1 to m-1 do begin
e[i+1]:=b[i]/(c[i]-a[i]*e[i]); d[i+1]:=(a[i]*d[i]-r[i])/(c[i]-a[i]*e[i]);
end;
g2:=2*(betta1+betta0*h); q:=betta1*(2+fq(x[m-1])*sqr(h))/g2;
s:=(2*h*betta2-betta1*fr(x[m-1])*sqr(h))/g2;
y[m]:=(q*d[m]+s)/(1-q*e[m]);
for i:=m-1 downto 0 do y[i]:=e[i+1]*y[i+1]+d[i+1];
for i:=0 to m do writeln('y[',i:1,']=',y[i]:6:4);
end.
Дифференциал прогонка усули. Дифференциал прогонка усули алгоритмини ќуйидаги берилган мисолда кўриб чиќамиз. Ушбу
(10)
дифференциал тенгламанинг
(11)
чегаравий шартларни ќаноатлантирувчи ечимини топиш талаб ќилинсин. Бу ерда –ўзгармаслар; – оралиќда берилган узлуксиз функциялар. – номаълум функция.
Дифференциал прогонка усулига кўра (10), (11) чегаравий масала ечимини
(12)
кўринишда тасвирлаймиз. Бу ердаги лар хозирча номаълум функциялар. (12) ни (10) га олиб бориб ќўямиз ва ларга нисбатан ќуйидаги
(13)
биринчи тартибли дифференциал тенгламалар системасини ҳосил ќиламиз.
ва
тенгликлардан
(14)
ни ҳосил ќиламиз.
(13), (14) Коши масаласини оралиќда ечиб, ларни аниќлаймиз. Одатда бу усул тўѓри прогонка усули деб ҳам аталади.
ва
тенгликлардан
, (15)
га эга бўламиз.
(10), (15) Коши масаласини оралиќда ечиб, функциясининг сонли ќийматларини ҳосил ќиламиз. Бу усул тескари прогонка усули дейилади.
Мисол: Ќуйидаги
(16)
дифференциал тенгламанинг
(17)
шартларни ќаноатлантирувчи ечимини дифференциал прогонка усулига тузилган дастур ёрдамида топинг.
Текшириб кўриш мумкинки, берилган чегаравий масала аниќ
ечимга эга. Ќуйидаги жадвалда (5.50), (5.51) чегаравий масаланинг аниќ ва дифференциал прогонка усулидан фойдаланиб топилган таќрибий ечимлари келтирилган. Жадвалдан кўриниб турибдики, дифференциал прогонка усули юќори аниќликга эга бўлиши билан бирга, у чегаравий шартларни аниќ ҳисобга олади.
|
Аниќ ечим
|
Таќрибий ечим
|
0.0
|
1.000000
|
1.000121
|
0.1
|
0.911000
|
0.911107
|
0.2
|
0.848000
|
0.848091
|
0.3
|
0.817000
|
0.817073
|
0.4
|
0.824000
|
0.824054
|
0.5
|
0.875000
|
0.875035
|
0.6
|
0.976000
|
0.976015
|
0.7
|
1.133000
|
1.132997
|
0.8
|
1.352000
|
1.351980
|
0.9
|
1.639000
|
1.638965
|
1.0
|
2.000000
|
2.000000
|
Чегаравий масалаларни дифференциал прогонка усулида ечишга Паскаль тилида тузилган дастур матни:
program difprogon; uses crt;
const a11=1; a12=1; a21=1; a22=-1; b1=0; b2=2;
ndx=11; dx=0.1;
type vek=array[1..ndx] of real;
type vek1=array[1..2] of real;
type vek2=array[1..3] of real;
var
y0,y,yt: vek1; alf0,alf: vek2; px: vek; zlx,h:real;
i,nx:integer;
function fa(z: real): real;
begin
fa:=z+1; { A(x) - функциясининг кўриниши }
end;
function fb(z: real): real;
begin
fb:=z+3; { B(x) - функциясининг кўриниши }
end;
function ff(z: real): real;
begin
ff:=z*z*z*z+7*z*z*z+7*z*z+5*z+4; { -функциясининг кўриниши }
end;
procedure pv(x: real; y: vek2; var dy: vek2);
begin
dy[1]:=fa(x)*y[1]-y[2];
dy[2]:=y[1]*fb(x);
dy[3]:=y[1]*ff(x)
end;
procedure rungikytta1(x: real; y0: vek2; var dy: vek2);
var v3,fc,fk1,fk2,fk3,fk4: vek2;
begin
pv(x,y0,fc);
for i:=1 to 3 do begin fk1[i]:=h*fc[i];
v3[i]:=y0[i]+0.5*fk1[i] end;
x:=x+0.5*h;
pv(x,v3,fc);
for i:=1 to 3 do begin fk2[i]:=h*fc[i];
v3[i]:=y0[i]+0.5*fk2[i] end;
pv(x,v3,fc);
for i:=1 to 3 do begin fk3[i]:=h*fc[i];
v3[i]:=y0[i]+fk3[i] end;
x:=x+0.5*h;
pv(x,v3,fc);
for i:=1 to 3 do begin fk4[i]:=h*fc[i];
dy[i]:=y0[i]+0.166666667*(fk1[i]+2*fk2[i]+2*fk3[i]+fk4[i]) end;
end;
procedure pv1(x: real; y: vek1; var dy: vek1);
begin
dy[1]:=y[2];
dy[2]:=-y[2]*fa(x)-y[1]*fb(x)+ff(x);
end;
procedure rungikytta2(x: real; y0: vek1; var dy: vek1);
var v3,fc,fk1,fk2,fk3,fk4: vek1;
begin
pv1(x,y0,fc);
for i:=1 to 2 do begin fk1[i]:=h*fc[i];
v3[i]:=y0[i]+0.5*fk1[i]
end;
x:=x+0.5*h; pv1(x,v3,fc);
for i:=1 to 2 do begin fk2[i]:=h*fc[i];
v3[i]:=y0[i]+0.5*fk2[i]
end;
pv1(x,v3,fc);
for i:=1 to 2 do begin fk3[i]:=h*fc[i];
v3[i]:=y0[i]+fk3[i]
end;
x:=x+0.5*h; pv1(x,v3,fc);
for i:=1 to 2 do begin fk4[i]:=h*fc[i];
dy[i]:=y0[i]+0.166666667*(fk1[i]+2*fk2[i]+2*fk3[i]+fk4[i])
end;
end;
begin clrscr;
for i:=1 to ndx do px[i]:=(i-1)*dx;
alf0[1]:=a11; alf0[2]:=a12; alf0[3]:=b1;
for nx:=2 to ndx do begin zlx:=px[nx-1]; h:=dx;
rungikytta1(zlx,alf0,alf);
for i:=1 to 3 do alf0[i]:=alf[i];
end;
y0[1]:=(b2*alf[1]-a21*alf[3])/(a22*alf[1]-a21*alf[2]);
y0[2]:=(b2*alf[2]-a22*alf[3])/(a21*alf[2]-a22*alf[1]);
writeln('x=',px[ndx]:4:2,' yy===',y0[1]:7:4);
for nx:=ndx downto 2 do begin zlx:=px[nx]; h:=-dx;
rungikytta2(zlx,y0,y);
writeln('x=',(zlx+h):4:2,' yy=',y[1]:7:4);
for i:=1 to 2 do y0[i]:=y[i];
end; end.
Ишни бажариш тартиби:
Берилган масаланинг ечиш алгоритмини блок-схема кўринишда тасвирлаш.
Турбо-Паскаль муҳитида дастурни киритиш.
Дастурни компьютер хотирасида саќлаш ва дастурдаги мавжуд хатоларни топиш ва уларни тўѓрилаш.
Дастурни ишга тушириш ва масаланинг бошланѓич маълумотларини киритиб натижалар олиш.
Олинган натижалар таҳлили асосида хулосалар ќилиш.
Лаборатория ишини расмийлаштириш.
Назорат саволлари:
Дифференциал тенглама учун чегаравий шартлар ќандай берилади?
Оддий прогонка усули ва унинг алгоритми.
Дифференциал прогонка усули ва унинг алгоритми.
Дифференциал прогонка усулининг асосий моҳияти нимадан иборат?
6-ЛАБОРАТОРИЯ ИШИ
Мавзу: Интеграл ва интегро-дифференциал тенгламаларни таќрибий ечиш усуллари.
Керакли техник воситалар:
Шахсий компьютер.
Керакли дастурий воситалар:
Турбо Паскаль дастурлаш системаси ҳамда интеграл ва интегро-дифференциал тенгламаларни таќрибий ечиш учун тузилган дастурлар.
Ишнинг маќсади: Талабаларни интеграл ва интегро-дифференциал тенгламаларни таќрибий ечиш усуллари алгоритми билан таништириш ҳамда уларни Паскаль тилида тузилган дастурда ишлашга ўргатиш.
Топшириќ
1-масала. Ќуйида берилган 1-тур Вольтерра тенгламасини таќрибий ечинг.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
2-масала. Ќуйида берилган 2-тур Вольтерра тенгламасини таќрибий ечинг.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
3-масала. Ќуйида берилган 1-тур Фредгольм тенгламасини таќрибий ечинг.
1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
4-масала. Ќуйида берилган 1-тур Фредгольм тенгламасини таќрибий ечинг.
1. 2.
3. 4.
5. 6.
7.
8. 9. 10.
Назарий ќисм
1-тур Вольтера тенгламаси. Чизиќли 1-тур Вольтерра тенгламаси ќуйидаги
, (1)
кўринишга эга.
Теорема. Агар , бўлиб , функциялар оралиќда узлуксиз , ҳосилаларга эга ҳамда бўлса, (1) тенглама шу оралиќда узлуксиз ягона ечимга эга бўлади.
(1) тенгламани ечишда квадратура формуласидан фойдаланамиз. Дастлаб (1) тенгламанинг иккала томонини бўйича бир марта дифференциаллаб, ҳосил бўлган ифодада десак,
(2)
тенгликни ҳосил ќиламиз. (1) тенгламадаги интегрални ўзгармас ќадамли трапеция формуласи бўйича чекли йиѓиндига алмаштириб, ќуйидаги
, (3)
рекуррент формулага эга бўлиш мумкин. Бу ерда , , лар учун .
(2) ва (3) формулалар ёрдамида ларни кетма-кет аниќлаш мумкин.
Мисол. Тузилган дастурдан фойдаланиб берилган , , лар учун олинган (6.2) интеграл тенламанинг таќрибий ва аниќ ечимлари ҳар хил ларда ќуйидаги жадвалда келтирилган.
|
Таќрибий ечим
|
Аниќ ечим
|
0,0
0,2
0,4
0,6
0,8
1,0
1,2
1,4
1,6
1,8
2,0
2,2
2,4
2,6
2,8
3,0
|
0,000000
0,197000
0,370889
0,503031
0,582535
0,607539
0,584365
0,525031
0,444020
0,355225
0,269770
0,194969
0,134354
0,088411
0,055624
0,033494
|
0,000000
0,196040
0,369247
0,501162
0,580919
0,606531
0,584103
0,525436
0,444860
0,356218
0,270671
0,195628
0,134723
0,088523
0,055555
0,033327
|
Чизиќли 1-тур Вольтерра тенгламасини ечиш учун Паскаль тилида тузилган дастур матни:
program volter_1; uses crt;
const
a=0.0; { нинг бошланѓич ќиймати }
n=31; { бўйича нўќталар сони }
h=0.1; { бўйича ќадам }
type vek=array[1..n] of real;
var y,t,c:vek;
s:real;i,j:integer;
function f(x:real):real;
begin
f:=x*x { функция кўриниши }
end;
function f1(x:real):real;
begin
f1:=2*x { функция кўриниши }
end;
function r(x,y:real):real;
begin
r:=2+x*x-y*y { функция кўриниши }
end;
begin clrscr;
for i:=1 to n do begin t[i]:=a+(i-1)*h; c[i]:=1.0 end;
c[1]:=0.5;
y[1]:=f1(a)/r(a,a); toch[1]:=ftoch(a);
for i:=2 to n do
begin
s:=0;
for j:=1 to i-1 do s:=s+c[j]*r(t[i],t[j])*y[j];
y[i]:=2/r(t[i],t[i])*(f(t[i])/h-s);
end;
for i:=1 to n do writeln(t[i]:5:2,' ',y[i]:10:6);
end.
2-тур Вольтера тенгламаси.Чизиќли, бир жинсли бўлмаган 2-тур Вольтерра тенгламаси ќуйидаги
, (4)
кўринишга эга. Бу ерда - ядро функцияси, , , чизиќлар билан чегараланган учбурчак ичида ва унинг чегарасида узлуксиз. функция оралиќда узлуксиз. - номаълум функция.
(4) тенгламани ечишда квадратура формуласидан фойдаланамиз. (4) тенгламадаги интегрални ўзгармас ќадамли трапеция формуласи бўйича чекли йиѓиндига алмаштириб, ќуйидаги
, (5)
рекуррент формулага эга бўлиш мумкин. Бу ерда , , лар учун . Агар (4) тенгламада десак,
(6)
тенгликга эга бўламиз.
(5) ва (6) формулалар ёрдамида ларни кетма-кет аниќлаш мумкин.
Мисол. Тузилган дастурдан фойдаланиб, берилган , , , лар учун олинган (4) интеграл тенламанинг таќрибий ва аниќ ечимлари ҳар хил ларда ќуйидаги жадвалда келтирилган.
|
Таќрибий ечим
|
Аниќ ечим
|
0,0
0,2
0,4
0,6
0,8
1,0
1,2
1,4
1,6
1,8
2,0
|
-0,301169
-0,983602
-2,101015
-3,669153
-5,284334
-5,513842
-1,309168
10,545296
25,010640
14,346203
-45,527236
|
-0,301169
-0,983569
-2,100915
-3,668947
-5,284021
-5,513636
-1,309882
10,542137
25,006065
14,355014
-45,489898
|
Чизиќли 2-тур Вольтерра тенгламасини ечиш учун Паскаль тилида тузилган дастур матни:
program volter_2; uses crt;
const
a=0.0; { нинг бошланѓич ќиймати }
n=21; { бўйича нуќталар сони }
h=0.05; { бўйича ќадам }
type vek=array[1..n] of real;
var y,t,c:vek;
s:real;i,j:integer;
function f(x:real):real;
begin
f:=(1-x*exp(2*x))*cos(1)-exp(2*x)*sin(1) { функция кўриниши }
end;
function r(x,y:real):real;
begin
r:=1-(x-y)*exp(2*x) { функция кўриниши }
end;
begin clrscr;
for i:=1 to n do begin t[i]:=a+(i-1)*h; c[i]:=1.0 end;
c[1]:=0.5;
y[1]:=f(a);
for i:=2 to n do
begin
s:=0;
for j:=1 to i-1 do s:=s+c[j]*r(t[i],t[j])*y[j];
y[i]:=(f(t[i])+h*s)/(1-h*r(t[i],t[i])/2);
end;
for i:=1 to n do writeln(t[i]:5:2,' ',y[i]:10:6);
end.
Фредгольм типидаги тенгламалар. Умумий ҳолда чизиќли, бир жинсли бўлмаган Фредгольм типидаги интеграл тенгламалар
(7)
кўринишга эга. Бу ерда , - ядро функцияси квадратда аниќланган ва узлуксиз.
(7) да, агар ва бўлса, 1-турдаги; агар ва бўлса, 2-турдаги Фредгольм интеграл тенгламалари ҳосил бўлади.
лар учун, (7) даги интегрални ўзгармас ќадам билан трапеция формуласига алмаштирсак,
, (8)
тенгликга эга бўламиз. Бу ерда , , , , , лар учун .
(8) да Кронекер белгилашини киритсак, ихтиёрий лар учун
(9)
та номаълумларни ўз ичига олган та чизиќли алгебраик тенгламалар системасига эга бўламиз. (9) чизиќли алгебраик тенгламалар системасини Гаусс усулида ечиб ларни аниќлаймиз.
Мисол. Тузилган дастурдан фойдаланиб берилган , , , , , , лар учун олинган (7) интеграл тенламанинг таќрибий ва аниќ ечимлари ҳар хил ларда ќуйидаги жадвалда келтирилган.
|
Таќрибий ечим
|
Аниќ ечим
|
-3,141593
-2,792527
-2,443461
-2,094395
-1,745329
-1,396263
-1,047198
-0,698132
-0,349066
-0,000000
0,349066
0,698132
1,047198
1,396263
1,745329
2,094395
2,443461
2,792527
3,141593
|
16,029411784
14,267864029
9,807468605
4,735294098
1,424667324
1,424667340
4,735294138
9,807468648
14,267864050
16,029411768
14,267864050
9,807468648
4,735294138
1,424667340
1,424667324
4,735294098
9,807468605
14,267864029
16,029411784
|
16,029411765
14,267864011
9,807468590
4,735294086
1,424667316
1,424667334
4,735294133
9,807468644
14,267864046
16,029411765
14,267864046
9,807468644
4,735294133
1,424667334
1,424667316
4,735294086
9,807468590
14,267864011
16,029411765
|
Фредгольм типидаги интеграл тенгламаларини ечиш учун Паскаль тилида тузилган дастур матни:
program fredgolm;
const alfa=1; { нинг ќиймати }
lambda=1; { нинг ќиймати }
n=37; { бўйича нуќталар сони }
a=-3.14159265; { нинг бошланѓич ќиймати }
b=-a; { нинг охирги ќиймати }
type
matrisa=array[1..n,1..n+1] of real;
vektor=array[1..n] of real;
var
aij:matrisa; t,y,c:vektor;
h:real;i,j:integer;
function f(x:real):real;
begin
f:=25-16*sqr(sin(x)) { функциянинг берилиши }
end;
function fk(x,s:real):real;
begin
fk:=0.3/(0.64*pi*sqr(cos((x+s)/2))-pi) { функциянинг берилиши }
end;
function d(l,m:integer):integer;
begin
if l=m then d:=1 else d:=0; { функциянинг берилиши }
end;
procedure gauss(b:matrisa; var y:vektor);
var max,c:real; k,m:integer;
begin
for i:=1 to n do
begin
max:=abs(b[i,i]); j:=i;
for k:=i+1 to n do if abs(b[k,i])>max then
begin
max:=abs(b[k,i]); j:=k;
end;
if j<>i then for k:=i to n+1 do
begin
c:=b[i,k]; b[i,k]:=b[j,k];
b[j,k]:=c;
end;
c:=b[i,i];
for k:=i to n+1 do b[i,k]:=b[i,k]/c;
for m:=i+1 to n do
begin
c:=b[m,i];
for k:=i+1 to n+1 do
b[m,k]:=b[m,k]-b[i,k]*c;
end;
end;
y[n]:=b[n,n+1];
for i:=n-1 downto 1 do
begin
y[i]:=b[i,n+1];
for k:=i+1 to n do
y[i]:=y[i]-b[i,k]*y[k]
end;
end;
begin
h:=(b-a)/(n-1);
for i:=1 to n do begin t[i]:=a+(i-1)*h; c[i]:=1 end;
c[1]:=0.5; c[n]:=0.5;
for i:=1 to n do for j:=1 to n do
aij[i,j]:=alfa*d(i,j)-h*lambda*c[j]*fk(t[i],t[j]);
for i:=1 to n do aij[i,n+1]:=f(t[i]);
gauss(aij,y);
for i:=1 to n do writeln('t=',t[i]:8:6,' ',y[i]:10:9);
end.
Do'stlaringiz bilan baham: |