Как перемножить матрицы в паскале

Как перемножить матрицы в паскале

Задание.

Написать программу для умножения матрицы на матрицу. Максимальное число строк и столбцов каждой матрицы: 50.

Обсуждение программы.

Элемент матрицы-результата, расположенный на I-й строке и J-м столбце, вычисляется так:

  1. Берем I-ю строку 1-й матрицы и J-й столбец 2-й матрицы (считая слева-направо и сверху-вниз). И вычисляем их скалярное произведение. То есть произведение 1-го элемента строки на 1-й элемент столбца плюс произведение 2-го элемента строки на 2-й элемент столбца и т.д. То есть результат есть сумма произведений элементов строки и элементов столбца с одинаковыми номерами.
  2. Количество элементов строки и столбца должно быть одинаково, иначе умножение этих матриц невозможно. То есть число строк 2-й матрицы должно равняться числу столбцов 1-й (K).
  3. Обозначим число строк 1-й матрицы: N, число столбцов 2-й: M. Матрица-результат будет иметь N строк и M столбцов. Чтобы вычислить все элементы матрицы-результата, нужно пробежать все значения I (от 1 до N) и J (от 1 до M).
  4. При вычислении суммы произведений нужна вспомогательная переменная. Назовем её Summa.

Текст программы

После изучения подпрограмм и указателей можно будет сделать эту программу более универсальной и увеличить максимальный размер матриц.

Задача

Три продавца продают четыре вида товаров. Количество продаваемого товара сведено в таблицу A.

Решение

В таблице B представлены цена каждого товара и комиссионные (наценка), получаемые от продажи.

Вырученные от продажи деньги подсчитываются так:
1-й продавец: 5 * 20.30 + 3 * 18.60 + 7 * 12.10 + 0 * 23.00 = 242.00
2-й продавец: 7 * 20.30 + 1 * 18.60 + 9 * 12.10 + 2 * 23.00 = 315.60
3-й продавец: 3 * 20.30 + 4 * 18.60 + 7 * 12.10 + 6 * 23.00 = 358.00

А полученные комиссионные так:
1-й продавец: 5 * 1.60 + 3 * 1.30 + 7 * 1.00 + 0 * 1.80 = 18.90
2-й продавец: 7 * 1.60 + 1 * 1.30 + 9 * 1.00 + 2 * 1.80 = 25.10
3-й продавец: 3 * 1.60 + 4 * 1.30 + 7 * 1.00 + 6 * 1.80 = 27.80

Эти вычисления называются умножением матриц и записываются так, как представлено на рисунке выше.
Число столбцов таблицы A должно совпадать с числом строк таблицы B. Результирующая таблица C имеет столько строк, сколько у A, и столько столбцов, сколько у B.

Читайте также:  Вылечить или удалить вирус

Следующая программа вводит матрицы A и B, перемножает эти матрицы и затем печатает их произведение – матрицу C:

var
a: atype; b: btype; c: ctype;
n,i,j,k: integer;

begin
for n := 1 to 3 do
readln(a[n,1],a[n,2],a[n,3],a[n,4]);

for n := 1 to 4 do
readln(b[n,1],b[n,2]);

for i := 1 to 3 do
for j := 1 to 2 do begin
c[i,j] := 0;
for k := 1 to 4 do
c[i,j] := c[i,j] + a[i,k] * b[k,j];
end;

Ссылка на основную публикацию
Adblock detector