Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обчислювальні методи розв’язку нелінійних рівня...doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
352 Кб
Скачать
☆

Розв’язок системи рівнянь за допомогою пакету MathCad

Знаходження визначника матриці методом Гауса

В результаті перетворень Гауса система (або матриця) зводиться до форми, яка дає змогу легко обчислити визначник матриці.

Представлена програма на мові Pascal (версія TurboPascal6 і вище) здійснює перетворення матриці за схемою Гауса та знаходження визначника. Для контролю визначник тієї ж матриці обчислено за допомогою пакету MathCad. Результати співпадають.

Текст програми

program gauss6(input,output);

{знаходження визначника методом Гауса}

TYPE

dvmr = array[0..10,0..10] of real;

ovmr = array[0..10] of real;

var i,j,n,m:integer;

n1,m1,l1:integer;

aa,a,p,g:dvmr;

x,y,riz:ovmr;

b,ii:integer;

d,ab:real;

fr:text;

Function Det(A:dvmr; N:integer):real;

Var i,j,k : integer;

d,y,w : real;

Begin

{**************************************************}

{* Знаходження визначника матрицi методом Гауса *}

d:=1;

for i:=1 to N do begin

k:=i; y:=A[i,i];

for j:=i+1 to N do begin

w:=A[j,i];

if Abs(w)>Abs(y) then begin

k:=j; y:=w;

end;

end;

d:=d*y;

if d=0 then begin det:=0; Exit; end;

if i<>k then begin

d:=-d;

for j:=i to N do begin

w:=A[k,j];

A[k,j]:=A[i,j];

A[i,j]:=w;

end;

end;

for j:=i+1 to N do begin

w:=A[j,i]/y;

for k:=i+1 to N do A[j,k]:=A[j,k]-w*A[i,k];

end;

end;

Det:=d;

End;

{процедура вводу матрицi }

procedure vvidmat(var a:dvmr;n,m:integer);

var i,j:integer;

begin

for i:=1 to n do

for j:=1 to m do

readln(a[i,j]);

end;

{процедура виводу матрицi на друк}

procedure drukmat(a:dvmr;n,m:integer);

var i,j:integer;

begin

for i:=1 to n do

begin

for j:=1 to m do

write(fr,a[i,j]:5:2,' ');

writeln(fr);

end;

end;

begin

assign(fr,'det.txt');

rewrite(fr);

{побудова матрицi }

writeln('введiть порядок матрицi');

readln(m);

writeln('ввiд с-ми');

vvidmat(aa,m,m);

writeln(fr,'матриця ');

drukmat(aa,m,m);

d:=det(aa,m);

{друк визначника}

writeln(fr,'визначник=',d:5:2);

writeln(fr,'======================================================');

close(fr);

end.

Результат роботи програми

матриця

3.00 6.00 4.00 1.00

7.00 0.00 4.00 3.00

2.00 5.00 7.00 9.00

3.00 7.00 4.00 2.00

визначник=-308.00