Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации 2часть / Лекция_31_Разреженные матрицы.ppt
Скачиваний:
19
Добавлен:
11.05.2015
Размер:
482.3 Кб
Скачать

Методы работы с массивом стеков Добавить элемент с упорядочиванием по j

Procedure TListms.addj(i,j:word;a:extended);

var inf:Tinf;

begin

inf.a:=a; inf.j:=j;

ms[i].addsj(inf);

end;

07/02/19

31

Методы работы с массивом стеков Читать элемент без удаления

Function TListms.read(i,j):extended;

Var inf:Tinf;

begin

result:=ms[i].readsj(j);

end;

07/02/19

32

Методы работы с массивом стеков Распечатать матрицу в StringGrid

Procedure TListms.Print(stg:TStringGrid);

Var i,j:word;

begin

for i:=1 to m do

for j:=1 to n do

StG.Cells[j,i]:=FloatToStr(ms[i].readsj(j))

end;

07/02/19

33

Класс для решения СЛАУ с верхней треугольной матрицей Ax=b

Type

Tbx=array[1..1] of extended;

Tbxp=^Tbx;

TSlau=class(TListms)

b,x:Tbxp;

constructor create(n0:word);

Procedure Addb(i:word;bi:extended);

Procedure SlauT;

Procedure Print(StgA,Stgb,Stgx:TStringGrid);

destructor free;

end;

07/02/19

34

Методы работы со СЛАУ Создать объект СЛАУ

constructor TSlau.create(n0:word);

begin

inherited create(n0,n0);

GetMem(b,sizeof(extended)*n0);

GetMem(x,sizeof(extended)*n0);

end;

07/02/19

35

Методы работы со СЛАУ Уничтожить объект СЛАУ

Destructor TSlau.free;

begin

FreeMem(x,sizeof(extended)*n);

FreeMem(b,sizeof(extended)*n);

inherited free;

end;

07/02/19

36

Методы работы со СЛАУ Добавить элемент в b

Procedure TSlau.Addb(i:word;bi:extended);

begin

b[i]:=bi;

end;

07/02/19

37

Методы работы со СЛАУ Распечатать объект СЛАУ

Procedure

TSlau.Print(StgA,Stgb,Stgx:TStringGrid);

Var i,j:word;

begin

inherited Print(stgA);

for i:=1 to m do begin

Stgb.Cells[0,i]:=FloatToStr(b[i]);

Stgx.Cells[0,i]:=FloatToStr(x[i]);

end;

end;

07/02/19

38

Решить СЛАУ с верхней треугольной матрицей

a

a

a

a

 

 

11

12

13

14

 

0

a

a

a

 

 

 

22

23

24

 

 

 

 

 

 

 

0

0

a33

a34

 

 

 

 

0

0

0

a44

x4 b4 / a44

x3 (b3 a34 x4 ) / a33

x1 x

2x3

x4

b

1

b2

b

3

b4

x2 (b2 a23x3 a24 x4 ) / a22

 

x1 (b1 a12 x2 a13x3 a14 x4 ) / a11

 

x

(b s) / a

39

i

 

i

ii

07/02/19

 

 

 

Решить СЛАУ с верхней треугольной матрицей

Procedure TSlau.SlauT;

var a1,s:extended; sp:Tsel; i,j:word;

begin

sp:=ms[n].sp1;

if sp<>nil then a1:=sp^.inf.a else a1:=0;

x[n]:=b[n]/a1;

for i:=n-1 downto 1 do begin

sp:=ms[i].sp1;

a1:=sp^.inf.a; s:=0; sp:=sp^.A;

while sp<>nil do begin

j:=sp^.inf.j;

s:=s+sp^.inf.a*x[j];

sp:=sp^.A;

end;

x[i]:=(b[i]-s)/a1;

end;

end;

07/02/19

40