Dastur natijasi
Chiziqli algebraik tenglamalar sistemasining ildizlarini 0,0000001 aniqlikda iterasiya usulida taqribiy hisoblang.
№1 №2
№3 №4
№5 №6
№7 №8
№9 №10
№11 №12
№13 №14
№15 №16
№17 №18
№19 №20
№21 №22
№23 №24
№25 №26
Zeydel usuli chiziqli bir qadamli birinchi tartibli ityeratsion usuldir. Bu usul oddiy ityeratsion usuldan shu bilan farq qiladiki, dastlabki yaqinlashish ga ko’ra topiladi. So’ngra ko’ra topiladi va x.k. Barcha lar aniqlangandan so’ng lar topiladi. Aniqroq aytganda, hisoblashlar quyidagi sxema bo’yicha olib boriladi:
Ko’pincha Zeydel usuli oddiy ityeratsiya usuliga nisbatan yaxshiroq yaqinlashadi, ammo har doim ham bunday bo’lavyermaydi. Bundan tashqari Zeydel usuli programmalashtirish uchun qulaydir, chunki ning qiymati hisoblanayotganda larning qiymatini saqlab qolishning hojati yo’q.
Misol. Zeydel usuli bilan misolning yyechimi 5 xona aniqlikda topilsin.
Yechish. Bu tizimning tenglamalarini mos ravishda 10, 25, - 20, 10, 20 larga bo’lib, quyidagi ko’rinishda yozib olamiz:
bu yerda shart bajariladi. Haqiqadan ham,
Dastlabki yaqinlashish x(0) sifatida ozod hadlar ustuni (0,6; 0,44; 0,95; 1; 1,6)
Ityeratsiyaning birinchi qadamini bajaramiz:
x1(1) = 0,6 – 0,1 x2(0) + 0,3x3(0) +0,2x4(0) – 0,1x5(0) =
=0,6 – 0,1 0,44 + 0,3 0,95 + 0,2 1 – 0,1 1,6 = 0,881
x2(1) = 0,44 + 0,04 x1(1) - 0,04x3(0) +0,2x4(0) + 0,08x5(0) =
= 0,44 + 0,04 0,881 - 0,04 0,95 + 0,2 1 – 0,08 1,6 = 0,771
x3(1) = 0,95 + 0,1 x1(1) + 0,05x2(1) +0,1x4(0) – 0,1x5(0) =
= 0,95 + 0,1 0,881 + 0,05 0,771 + 0,1 1 – 0,15 1,6 = 0,937
x4(1) = 1 – 0,1 x2(1) + 0,1x3(1) +0,5x5(0) = 1,817
x5(1) = 1,6 + 0,05x1(1) + 0,1x2(1) + 0,05x3(1) +0,1x4(1) = 1,948
Keyingi yaqinlashishlarni 6- jadvalda keltiramiz:
6 - jadval
k
|
|
|
|
|
|
0
|
0,6
|
0,44
|
0,95
|
1
|
1,6
|
1
|
0.881
|
0,771
|
0,937
|
1,817
|
1,948
|
2
|
0,973
|
0,961
|
0,985
|
1.974
|
1,992
|
3
|
0,995
|
0,995
|
0,999
|
1,996
|
1,999
|
4
|
0,9995
|
0,9991
|
0,9997
|
1,9995
|
1,9998
|
5
|
0,99992
|
0,99989
|
0,99997
|
1.99991
|
1,99997
|
6
|
0,99999
|
0,99998
|
0,99999
|
1,99999
|
2.00000
|
Javob: x1 = x2 = x3 = 1; x4 = x5 = 2
Taqribiy hisoblashlar kompyuter texnologiyasi yordamida oson bajariladi. Buning uchun amaliy dasturlarga yoki dasturlashtirish tillariga murojaat etiladi. Quyida Turbo Paskal dasturlash tilida iteratsiya usuliga tuzilgan dastur matni:
uses crt;
type mat=array[1..20,1..20] of real; vector=array[1..30] of real;
var ag,temp,a,y,b,z,a2: mat; temp2:array[1..20,1..20] of integer;
i,p,q,j,k,n,nn,t: integer; aa,aas,d,m,x,r,bg,x3,x2: vector; ii: integer;
m2,s2,max,l,s,f: real; h: integer;
begin write('Count N='); readln(n);
for i:=1 to n do begin for j:=1 to n do begin
write('a[',i,'][',j,']='); readln(a[i,j]); end;
write('b[',i,']='); readln(a[i,j+1]); end;
For i:=1 To n do For j:=1 To n+1 do a2[i,j]:=a[i,j]/a[i,i];
For i:=1 To n do x[i]:= a2[i,n+1]; repeat
For i:=1 To n do begin s:=a2[i,n+1]; For j:=1 To n do begin
If ji Then s:=s-a2[i,j]*x[j];
end; x2[i]:=x3[i]; x3[i]:=s; end; f:=0; For i:=1 To n do
begin If Abs(x3[i]-x2[i])>0.00001 Then f:=1; x[i]:=x3[i]; end;
until f<>1; writeln('Ziydel ildizlari'); for k:=1 to n do
writeln('X[',k,']=', x[k]:5:5); for t:=1 to n do begin
l:=a[t,t]; for j:=1 to n+1 do a[t,j]:=a[t,j]/l; for i:=t+1 to n do begin l:=a[i,t];
for j:=1 to n+1 do a[i,j]:=a[i,j]-a[t,j]*l ; end;
end;
end.
Yuqorida berilgan tenglamalar sitemasini Ziydel usulida yechishni ABCPascal dasturi yordamida amalga oshiramiz.
Dostları ilə paylaş: |