Gennady
Гений
(60237)
15 лет назад
Доброго времени суток.
Ну, ну, Роман Папко, с каких это пор возведение в квадрат элементов матрицы стало эквивалентом возведения в квадрат самой матрицы? Во все времена, возведение числа в квадрат выполнялось умножением числа само на себя. Это же справедливо и для матриц. Т. е.
()^2 = () * ()
Осталось только всего ничего, реализовать процедуру умножения матриц. Вот возможный вариант. Годится для перемножения не только квадратных матриц.
const
M = 4;{число строк}
N = 6;{число столбцов}
K = 4;{число столбцов второго массива}
type
Data = Integer;
Arr2 = array[1..M, 1..N] of Data; {двухмерный массив целых чисел}
procedure MatrMul(A,B: Arr2; var C: Arr2);
var
i, j, s : Integer;
begin
FillChar(C, SizeOf(C), 0); {обнуляем результирующую матрицу C}
for i:=1 to M do {цикл по строкам матрицы А}
for j:=1 to K do {цикл по столбцам матрицы В}
for s:=1 to N do {цикл по столбцам А и строкам В}
C[ i,j ] := C[ i,j ] + A[ i,s ] * B[ s,j ];
end;
Разменость подставьте какую надо. Полагаю, как воспользоваться функцией догадаетесь?
Удачи!
Роман Папко
Мастер
(1397)
15 лет назад
for i=1 to n do
b(i):=sqr(a(i))
где a(i) первая исходная матрица, b(i) вторая матрица результат квадратирования первой, n - число элементов матрицы. только круглые скобки заменить на квадратные в местах где указывается элемент массива
Разгуляева Елена
Мыслитель
(7015)
15 лет назад
Вот кусок программы с процедурой перемножения матриц
Const max = 5;
Type
matrix = array[1..max, 1..max] of integer;
var kmax, ch : byte;
A, B, : matrix;
{Умножение двух матриц: Resul = m1* m2}
Procedure MultMatrix(m1, m2: matrix; var Resul : matrix);
var i, j, k : byte;
begin
for i:= 1 to kmax do begin
for j := 1 to kmax do begin
Resul [ i, j ] := 0;
for k := 1 to kmax do begin
Resul [ i, j ] := Resul [ i, j ]+ m1 [ i, k ] * m2 [ k, j ] ;
end;
end;
end;
end;
Вызываем процедуру
MultMatrix(A, A, B);
результат в В