Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2011, 21:00   #1
Winterfox
 
Регистрация: 04.12.2011
Сообщений: 9
Лампочка Матрица. Разложение по указанной строке.

Помогите разобраться, программа вычисляет определитель матрицы разложением по какой-то строке. По какой строке она раскладывает? Друг просил помочь разобраться, а я в чужих кодах плохо разбираюсь.

PHP код:
[HTML][CODE]const n=4; { размерность матрицы }
type matr=array[1..n,1..nof longint;
var 
a,b:matr;
 
i,j,dt:longint;
procedure PrintMatr(m:matr;n:integer);
процедура вывода матрицы на экран }
var 
i,j:integer;
 
begin
    
for i:=1 to n do
    
begin
       
for j:=1 to n do
       
write(m[i,j]:3);
       
writeln;
    
end;
  
end;
procedure GetMatr(a:matr; var b:matrm,i,j:integer);
Вычеркивание из матрицы строки и столбца }
var 
ki,kj,di,dj:integer;
 
begin
    di
:=0;
    for 
ki:=1 to m-do
    
begin
       
if (ki=ithen di:=1;
       
dj:=0;
       for 
kj:=1 to m-do
       
begin
          
if (kj=jthen dj:=1;
          
b[ki,kj]:=a[ki+di,kj+dj];
       
end;
    
end;
 
end;
Function 
Determinant(a:matr;n:integer):longint;
Вычисление определителя матрицы }
var 
i,j,d,k:longint;
 
b:matr;
 
begin
    d
:=0k:=1;
    if (
n<1then
    begin
       writeln
('Determinant: Cann''t run. N=',n); halt;
    
end;
    if (
n=1)
    
then d:=a[1,1]
    else if (
n=2)
    
then d:=a[1,1]*a[2,2]-a[2,1]*a[1,2]
    else { 
n>}
    for 
i:=1 to n do
    
begin
       GetMatr
(a,b,n,i,1);
    
       
d:=d+k*a[i,1]*Determinant(b,n-1);
       
k:=-k;
    
end;
 
Determinant:=d;
 
end;
begin
Заполнение матрицы случайными числами }
randomize;
for 
i:=1 to n do
for 
j:=1 to n do
 
a[i,j]:=random(5);
Печать исходной матрицы }
PrintMatr(a,n);
Вычисление и вывод определителя }
dt:=Determinant(a,n);
writeln('=========');
writeln('Determinant=',dt);
end.[/CODE][/HTML
Winterfox вне форума Ответить с цитированием
Старый 13.12.2011, 23:15   #2
Winterfox
 
Регистрация: 04.12.2011
Сообщений: 9
По умолчанию

кажется понял, вот здесь:
Цитата:
d:=d+k*a[i,1]*Determinant(b,n-1);
в массиве a[i,1] мы указываем что разлагать нужно по 1-му столбцу?
Winterfox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица, каждой строке найти макс. и мин. элементы и поменять их с первым и последним элементом строки (Паскаль) тина222 Помощь студентам 0 02.11.2011 22:01
Определитель матрицы через разложение по первой строке AlexSun Помощь студентам 1 16.04.2011 21:04
Определитель матрицы через разложение по первой строке AlexSun Общие вопросы C/C++ 0 16.04.2011 16:53
Дана действительная матрица размером n x m, все элементы которой различны. В каждой строке выбирается эл bayker Помощь студентам 5 30.05.2010 21:32
Дана матрица размера 5 x 10. В каждой строке найти количество элементов Executioner3 Помощь студентам 12 11.05.2010 16:27