Басылым: төртінші -бет



бет31/47
Дата29.06.2017
өлшемі19,22 Mb.
#20661
1   ...   27   28   29   30   31   32   33   34   ...   47

Практикалық жұмыс №4

Тақырыбы: Сызықты теңдеулер жүйесін шешу. Гаусс әдісі.

Мақсаты: Сызықтық теңдеулер жүйесін Гаусс әдісі арқылы шешіп үйрену.

Кейде бас элементі барлық матрица бойынша таңдалынатын Гаусс әдісі де пайдаланылады. Мұнда жетекші элемент ретінде жүйе матрицасы элементтерінің ішіндегі модулі бойынша ең максимал элемент таңдалынады.



Мысалы:

теңдеулер жүйесін шешу үшін қолданылатын бас элементтер әдісінің схемасы төменде келтірілген:



mi

Белгісіздердің коэффициенттері

Босмүшелер

Қосынды ∑

х1

х2

х3

m1

-1

m3



a11

a21

a31


a12

a22

a32


a13

a23

a33



a14

a24

a34


a15

a25

a35


-1

m′3



a′11

a′31



a′12

a′32






a′14

a′34



a′15

a′35









a″32




a″34

a″35




х1

х2

х3







‌‌Берілген схемада│a23│= max│aij│, мұндағы i=1,2,3; j=1,2,3;

│a′11│= max│a′ij│, i=1,3; j=1,2.

Есептеулерді мына формулалар бойынша орындайды:

m1=-a13/a23, m3=-a33/a23;

a′1j=a1j+m1a2j (j=1,2,4,5); a′3j=a3j+m3a2j (j=1,2,4,5);

m′3=- a′31/a′11;

a″3j=a′3j+m′3a′1j (j=2,4,5);

Белгісіздерді келесі қатынастар бойынша анықтайды:

x2= a″34/ a″32;

x1=( a′14- a′12x2)/ a′11;



x3=(a24-a21x1-a22x2)/a237

Программасы:



Мысал:

Есеп №1



const nn=6;

type matr=array[1..nn,1..nn]of real;

vek=array[1..nn]of real;

vekint=array[1..nn]of integer;

var

a:matr;


n:integer;

b,x:vek;


p:vekint;

procedure first;

var i:integer;

begin


a[1,1]:=0.34;

a[1,2]:=0.71;

a[1,3]:=0.63;

a[2,1]:=0.71;

a[2,2]:=-0.65;

a[2,3]:=-0.18;

a[3,1]:=1.17;

a[3,2]:=-2.35;

a[3,3]:=0.75;

b[1]:=2.08;

b[2]:=0.17;

b[3]:=1.28;

n:=3;

for i:=1 to n do p[i]:=i;



end;

procedure vivod;

var i:integer;

begin


for i:=1 to n do writeln('x',i,'= ',x[i]:2:3)

end;


procedure gl(a:matr;b:vek;p:vekint;n1:integer);

var t,ki,kj,i,j,mi,mj:integer;

c:matr;

bb,m:vek;



tr:boolean;

pp:vekint;

begin

tr:=true;



for i:=1 to nn do begin

for j:=1 to nn do c[i,j]:=0;

bb[i]:=0;

m[i]:=0;


end;

if n1=1 then begin

t:=p[1];

x[t]:=b[1]/a[1,1];

end

else begin



mi:=1;mj:=1;

for i:=1 to n1 do

for j:=1 to n1 do

if a[mi,mj]

for i:=1 to n1 do m[i]:=0-a[i,mj]/a[mi,mj];

ki:=0;


for i:=1 to n1 do

if i<>mi then begin ki:=ki+1;

kj:=0;

bb[ki]:=b[i]+m[i]*b[mi];



for j:=1 to n1 do

if j<>mj then begin kj:=kj+1;

c[ki,kj]:=a[i,j]+m[i]*a[mi,j];

end;end;


t:=p[mj];

pp:=p;


for i:=mj to n1 do pp[i]:=p[i+1];

gl(c,bb,pp,n1-1);

x[t]:=b[mi];

for i:=1 to n1 do

if i<>mj then begin

x[t]:=x[t]-a[mi,i]*x[p[i]];

end;

x[t]:=x[t]/a[mi,mj];



end;

end;


BEGIN

first;


gl(a,b,p,n);

vivod;


readln;

END.




Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   ...   47




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет