Консультация № 160447
14.02.2009, 15:21
0.00 руб.
16.02.2009, 18:38
0 3 1
Здравствуйте уважаемые специалисты, помогите мне пожалуйста решить задачу в паскале. Заранее спасибо


Приложение:
Разработать программу для вычисления следующих матриц
транспонирование, умножение на число, сложение матриц
6A*A+B(в степени т)

Обсуждение

Неизвестный
15.02.2009, 14:25
общий

Неизвестный
16.02.2009, 19:48
общий
BT - это не В в степени Т, а транспонированная матрица...
Неизвестный
16.02.2009, 20:57
общий
это ответ

Здравствуйте, [b]Андрей Васин[/b]!

Пример находится в приложении.
Насколько Вы знаете, можно перемножать только матрицы, у которых количество рядов первой матрицы равно количеству столбцов второй, а перемножение происходит матрицы 6А на А, таким образом А должна являться квадратной матрицей. Соответственно, В должна иметь ту же размерность, что и А, т.е. тоже является квадратной.
В примере производится ввод только размера матриц, а заполнение производится автоматическое (случайными числами), но, если Вы захотите, можете реализовать ручное заполнение матриц.
В приведенной задаче Т (В[sup]Т[/sup]) является не степенью, а признаком того, что матрица транспонирована. В примере использовано свойство матриц: А+В = В+А
Т.е. матрица С вычисляется так: В[sup]Т[/sup]+6А*А

Свойства матриц и операции над матрицами можно посмотреть здесь: Матрица_(математика)

Удачи!

Приложение:
program Q160447;

const
{ Максимальный размер матрицы }
MX_SIZE = 10;

type
{ Квадратная матрица }
TMatrix = array[1..MX_SIZE, 1..MX_SIZE] of Integer;

var
A, B, C: TMatrix;
n, i, j, t: Byte;
begin
{ Вводим размер матрицы }
repeat
write('n = '); readln(n);
until ((n > 0) and (n <= MX_SIZE));

randomize;

{ Подготовка и вывод матриц }
writeln('A = ');
for j:= 1 to n do
begin
write(j:2, ': ');
for i:= 1 to n do
begin
A[i, j]:= random(19) - 9;
B[i, j]:= random(19) - 9;
write(A[i, j]:3);
end;
writeln;
end;

{ Вывод матрицы В }
writeln;
writeln('B = ');
for j:= 1 to n do
begin
write(j:2, ': ');
for i:= 1 to n do
write(B[i, j]:3);
writeln;
end;

{ Даем возможность просмотреть матрицы }
{ Ждем, когда пользователь нажмет [Enter] }
readln;

{ Вычисление матрицы С }
writeln('C = ');
for j:= 1 to n do
begin
write(j:2, ': ');
for i:= 1 to n do
begin
{ Сразу прибавляем транспонированную матрицу В }
C[i, j]:= B[j, i];
for t:= 1 to n do
{ К транспонированной матрице В }
{ добавляем 6*A*A }
C[i, j]:= C[i, j] + 6*A[i, t]*A[t, j];
{ Выводим результат }
write(C[i, j]:5);
end;
writeln;
end;

{ Ждем, когда пользователь нажмет [Enter] }
Readln;
end.
Форма ответа