Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 20.03.2014, 21:38   #1 (permalink)
virginia
Member
 
Регистрация: 29.10.2011
Сообщений: 42
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: -42
По умолчанию Разбор алгоритма

помогите разобрать алгоритм нахождения обр.матрицы(можно написать комментарии к действиям)
Код:
unit Unit2;
interface
type
 Tmatrix=array of array of Real;
 procedure Permition(k,n:integer;var a:Tmatrix;var p:integer);//перестановка строк
 procedure Determinate(n:integer;var det:real;var a:tmatrix); //определитель
 procedure Additional(n:integer;d:tmatrix;var det1:real);//дополнения
 Procedure Matrixadd(n:integer;b:Tmatrix;var e:Tmatrix);//матрица алгебраических дополнений
 function Sign(p:integer):integer;//знак при перестановке строк
 function Sign1(i,m:integer):integer;//знак дополнения
implementation
 
procedure Permition(k,n:integer;var a:Tmatrix;var p:integer);
var z:Real;
j,i:integer;
begin
  z:=abs(a[k,k]);
  i:=k;
  p:=0;
  for j:=k+1 to n-1 do
  begin
    if abs(a[j,k])>z then
     begin
       z:=abs(a[j,k]);i:=j;
       p:=p+1;
     end;
   end;
  if i>k then
  for j:=k to n-1 do
   begin
     z:=a[i,j];a[i,j]:=a[k,j];a[k,j]:=z;
   end;
end;
 
procedure Determinate(n:integer;var det:real;var a:tmatrix);
var k,i,j,p:integer;r:real;
begin
  det:=1.0;
  for k:=0 to n-1 do
  begin
    if a[k,k]=0 then Permition(k,n,a,p);
    det:=sign(p)*det*a[k,k];
    for j:=k+1 to n-1 do
    begin
      r:=a[j,k]/a[k,k];
      for i:=k to n-1 do
       begin
        a[j,i]:=a[j,i]-r*a[k,i];
      end;
    end;
  end;
end;
 
procedure Additional(n:integer;d:tmatrix;var det1:real);
var i,j,p,k:integer;
r:real;
begin
  det1:=1.0;
  for i:=1 to n-1 do
   begin
     Permition(i,n,d,p);
     det1:=sign(p)*det1*d[i,i];
     for j:=i+1 to n-1 do
    begin
      r:=d[j,i]/d[i,i];
      for k:=i to n-1 do
      begin
        d[j,k]:=(d[j,k]-r*d[i,k]);
      end;
    end;
  end;
end;
 
Procedure Matrixadd(n:integer;b:Tmatrix;var e:Tmatrix );
var i,m,k,j:integer;z,det1:real;d,c:Tmatrix;
begin
  Setlength(c,n,n);
  Setlength(d,n,n);
  for i:=0 to n-1 do begin
  for m:=0 to n-1 do begin
  for j:=0 to n-1 do  //перестановка строки
  begin
    z:=b[i,j];
    for k:=i downto 1 do
     begin
       d[k,j]:=b[k-1,j];end;
       for k:=i+1 to n-1 do
       begin
         d[k,j]:=b[k,j];
       end;
       d[0,j]:=z;
     end;
   for k:=0 to n-1 do  //перестановка столбца
    begin
     z:=d[k,m];
     for j:=m downto 1 do
    begin
      c[k,j]:=d[k,j-1];
    end;
    for j:=m+1 to n-1 do
    begin
      c[k,j]:=d[k,j];
    end;
  c[k,0]:=z;
  end;
  Additional(n,c,det1);
  e[i,m]:=(det1)*sign1(i,m);
 end;
 end;
end;
 
function Sign(p:integer):integer;
begin
  if p mod 2=0 then
  result:=1 else result:=-1;
end;
 
function Sign1(i,m:integer):integer;
begin
  if (i+m) mod 2=0 then
  result:=1 else result:=-1;
end;
end.
virginia вне форума   Ответить с цитированием

Старый 20.03.2014, 21:38
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Прочитайте схожие топики, это не должно занять много времени

Разбор ЖК телевизора
Разбор полетов. Цветомузыка собрана, но осталось куча вопросов
Разбор и доработка Microlab MD112
Найти НОД 3 чисел при помощи алгоритма Евклида
Разбор ноутбука Самсунг X06
Разбор схемы

Старый 21.03.2014, 02:40   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

если тебе нужен алгоритм, то на яндекс, вбивай "алгоритм нахождения обратной матрицы" (первые 5 ссылок тебе помогут)
Если что-то конкретное - спрашивай.
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:50.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.