Teorema (progonka usulining turg’unligi haqida). Agar ; shartlar bajarilsa progonka usuli turg’un bo’ladi.
Misol.
differensial tenglamaning
chegaraviy shartni qanoatlantiruvchi yechimini berilgan dastur yordamida aniqlang.
Tekshirib ko’rish mumkinki, berilgan chegaraviy masala aniq yechimga ega. Quyidagi jadvalda masalaning ni ayrim tugun nuqtalariga mos keluvchi taqribiy va aniq yechimlari qiymatlari keltirilgan.
|
0,0
|
0,1
|
0,2
|
0,3
|
0,4
|
0,5
|
0,6
|
0,7
|
0,8
|
0,9
|
1,0
|
Taq. yechim
|
0,986
|
1,089
|
1,193
|
1,302
|
1,417
|
1,540
|
1,673
|
1,819
|
1,978
|
2,153
|
2,345
|
Aniq yechim
|
1,000
|
1,100
|
1,203
|
1,309
|
1,421
|
1,542
|
1,672
|
1,814
|
1,971
|
2,143
|
2,333
|
Paskal tilida progonka usuliga tuzilgan dastur matni:
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 { funksiyasining berilishi}
end;
function fr(t:real):real;
begin
fr:=-sqr(sqr(t))/3+2*t*sqr(t)/3-sqr(t)+3*t+2 {r(x) funksiyasining berilishi}
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.
Differensial progonka usuli. Differensial progonka usuli algoritmini quyidagi berilgan misolda ko’rib chiqamiz. Ushbu
(10)
differensial tenglamaning
(11)
chegaraviy shartlarni qanoatlantiruvchi yechimini topish talab qilinsin. Bu yerda –o’zgarmaslar; – oraliqda berilgan uzluksiz funksiyalar. – noma’lum funksiya.
Differensial progonka usuliga ko’ra (10), (11) chegaraviy masala yechimini
(12)
ko’rinishda tasvirlaymiz. Bu yerdagi lar xozircha noma’lum funksiyalar. (12) ni (10) ga olib borib qo’yamiz va larga nisbatan quyidagi
(13)
birinchi tartibli differensial tenglamalar sistemasini hosil qilamiz.
va
tengliklardan
(14)
ni hosil qilamiz.
(13), (14) Koshi masalasini oraliqda yechib, larni aniqlaymiz. Odatda bu usul to’g’ri progonka usuli deb ham ataladi.
va
tengliklardan
, (15)
ga ega bo’lamiz.
(10), (15) Koshi masalasini oraliqda yechib, funksiyasining sonli qiymatlarini hosil qilamiz. Bu usul teskari progonka usuli deyiladi.
Misol: Quyidagi
(16)
differensial tenglamaning
(17)
shartlarni qanoatlantiruvchi yechimini differensial progonka usuliga tuzilgan dastur yordamida toping.
Tekshirib ko’rish mumkinki, berilgan chegaraviy masala aniq
yechimga ega. Quyidagi jadvalda (5.50), (5.51) chegaraviy masalaning aniq va differensial progonka usulidan foydalanib topilgan taqribiy yechimlari keltirilgan. Jadvaldan ko’rinib turibdiki, differensial progonka usuli yuqori aniqlikga ega bo’lishi bilan birga, u chegaraviy shartlarni aniq hisobga oladi.
|
Aniq yechim
|
Taqribiy yechim
|
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
|
Chegaraviy masalalarni differensial progonka usulida yechishga Paskal tilida tuzilgan dastur matni:
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) - funksiyasining ko’rinishi }
end;
function fb(z: real): real;
begin
fb:=z+3; { B(x) - funksiyasining ko’rinishi }
end;
function ff(z: real): real;
begin
ff:=z*z*z*z+7*z*z*z+7*z*z+5*z+4; { -funksiyasining ko’rinishi }
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.
Nazorat savollari:
Differensial tenglama uchun chegaraviy shartlar qanday beriladi?
Oddiy progonka usuli va uning algoritmi.
Differensial progonka usuli va uning algoritmi.
Differensial progonka usulining asosiy mohiyati nimadan iborat?
Nazorat savollari:
Differensial tenglamaga ta’rif bering.
Differensial tenglamaga tartibi qanday aniqlanadi?
Differensial tenglama uchun boshlang’ich shartlar qanday beriladi?
Koshi masalasi qanday masala?
Differensial tenglamalar va ularning sistemasini yechishda Eyler usuli va uning algoritmi?
Differensial tenglamalar va ularning sistemasini yechishda Runge-Kutta usuli va uning algoritmi?
MA’RUZA №5
Matematik model inтerpolyasiyasi va approksimatsiyasi
Mavzu: Aniq integral qiymatini taqribiy hisoblash usullari.
Masalaning qo’yilishi: [a,b] oraliqda aniqlangan uzluksiz f(x) funksiya berilgan bo’lib bizdan quyidagi
(1)
integralni hisoblash talab qilingan bo’lsin. Ba’zi hollarda f(x) funksiyaning berilishiga qarab bu integralni aniq hisoblashimiz mumkin. Amaliy ishlarda f(x) funksiya shunday ko’rinishga ega bo’ladiki, (1) integralni aniq hisoblab bo’lmaydi. Bunday hollarda (1) integralni berilgan aniqlikda taqribiy hisoblashga to’g’ri keladi.
Quyida aniq integralni hisoblash uchun bir necha taqribiy usullar, ularning algoritmi va unga mos Paskal algoritmik tilida tuzilgan programmalari keltirilgan.
To’g’ri to’rtburchaklar usuli. x0=a, xn=b, n – natural son bo’lsin. Ushbu formulalar yordamida (1) integralni taqribiy hisoblash mumkin:
bu yerda xi=xi-1+h, yi=f(xi), i=1,2,…,n.
To’g’ri to’rtburchak usuli uchun xatolik quyidagicha aniqlanadi:
|I-S|
Aniq integralni to’g’ri to’rtburchak usulida hisoblash uchun Paskal tilida tuzilgan dasturning ko’rinishi:
program turt_bur; uses crt;
var a,b,int:real; n:integer;
function f(x:real):real;
begin
f:= { f(x) funksiyaning ko’rinishi }
end;
procedure turtburchak(a1,b1:real;n1:integer; var int1:real);
var i:integer; h1,c:real;
begin
h1:=(b1-a1)/n1;
c:=0; int1:=0; c:=a1-h1/2;
for i:=1 to n1 do
begin
c:=c+h1; int1:=int1+f(c)
end;
int1:=int1*h1;
end;
begin
read(a,b,n);
turtburchak(a,b,n,int);
writeln('Integr "=',int:10:4);
end.
Trapesiya usuli. [a;b] oraliq xi=a+ih nuqtalar bilan (bu yerda i=1,2,…,n; x0=a, xn=b, n-natural son) n+1 ta oraliqqa ajratiladi va har bir oraliqda egri chiziqli trapesiya yuzi taqribiy ravishda to’g’ri chiziqli trapesiya yuziga almashtirilib, quyidagi taqribiy formulani hosil qilamiz
bu yerda I-(1) integralning aniq qiymati, S-(1) integralning taqribiy qiymati, yi=f(xi)
Xatolikni baholash: , M=max|f’’(z)| , z[a,b]
Aniq integralni trapesiya usulida hisoblash uchun Paskal tilida tuzilgan dasturning ko’rinishi:
program trap; uses crt;
var n1:integer; a,b,i1:real;
function f(x:real):real;
begin
f:= { f(x) funksiyaning ko’rinishi }
end;
procedure trap1(a1,b1:real;N:integer; var int:real);
var i:integer; h,s:real;
begin
h:=(b1-a1)/n;
s:=(f(a1)+f(b1))/2;
for i:=1 to n-1 do s:=s+f(a1+i*h);
int:=s*h;
end;
begin
clrscr;
write('a='); read(a);
write('b='); read(b);
write('N='); read(n1);
trap1(a,b,n1,i1);
writeln('i=',i1:10:4);
end.
Simpson usuli. x0=a, x2n=b , yi=f(xi), i=1,2,…,n. n- natural son bo’lsin. Ushbu yig’indi yordamida (1) integralni taqribiy hisoblash mumkin:
Xatoliklar:
, M=max|fIV(z)|, z[a,b].
Misol. integral qiymatini [1;2] oraliqda n=4 da, trapesiya formulasi bilan hisoblang:
x0=1, x1= x2= x3= x4=2;
;
.
Aniq integralni Simpson usulida hisoblash uchun Paskal tilida tuzilgan dasturning ko’rinishi:
program simpson; uses crt;
var a,b,int1:real; n:integer;
function f(x:real):real;
begin
f:= { f(x) funksiyaning ko’rinishi }
end;
procedure simps(a,b:real;n:integer;var int:real);
var h,s,s1,s2:real; i:integer;
begin
h:=(b-a)/(2*n);
s1:=0; s2:=0;
s:=f(a)+f(b);
for i:=1 to n do s1:=s1+f(a+(2*i-1)*h);
for i:=1 to n-1 do s2:=s2+f(a+2*i*h);
int:=h*(s+4*s1+2*s2)/3;
end;
begin clrscr;
write('a='); read(a);
write('b='); read(b);
write('n='); read(n);
simps(a,b,n,int1);
writeln('integral=',int1:10:4);
end.
Nazorat savollari:
Aniq integralning geometrik ma’nosini ayting.
Taqribiy integrallash deganda nimani tushunasiz?
Taqribiy integrallashda to’g’ri to’rtburchak usuli va uning algoritmi.
Taqribiy integrallashda trapesiya usuli va uning algoritmi.
Taqribiy integrallashda Simpson usuli va uning algoritmi.
Dostları ilə paylaş: |