Показать сообщение отдельно
  #4  
Старый 23.12.2010, 18:52
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я так понял, что есть матрица вида
Код:
 1 2 3 4
 2 5 6 7
 3 6 8 9
 4 7 9 0
и хранится она в виде
Код:
 1 2 3 4 5 6 7 8 9 0
Если так, то переведи в квадратную матрицу. Зная размерность, можно писать все элементы в соответствующие места
Код:
k:=1;
for i:=1 to N do
 for j:=i to N do
 begin
  a[i,j]:=b[k];
  inc(k);
 end;
Потом относительно главной диагонали копируешь:
Код:
for i:=1 to N do
 for j:=i+1 to N do
  a[j,i]:=a[i,j];

Можно эти два шага сразу:
Код:
k:=1;
for i:=1 to N do
 for j:=i to N do
 begin
  a[i,j]:=b[k];
  a[j,i]:=b[k];
  inc(k);
 end;

Как-то так. Получишь нужную матрицу.
А дальше я не понимаю, что значит "произведение вида АТА". Если это А*Т*А то не знаю чего за Т.
Так что дальше спрашиваешь Вику или Гугл "умножение матриц", после чего выполняешь указанные там инструкции.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием