End Sub

Результат выполнения программы:

Пример 15. Умножить матрицу А (n, m) на матрицу B (m, h).

Сложность заключается в том, что результатом будет матрица и для формирования ее столбцов нужен еще один цикл.

По правилам математики, можно умножать матрицы только в том случае, если количество столбцов первой равно количеству строк во второй. При этом в результирующей матрице будет строк столько же, сколько было в первой матрице, а столбцов столько же, сколько ихбыло во второй. Это можно показать формулой A (n, m) × B (m, h) = C (n, h).

В ходе умножения матриц использовано три цикла. Первый, со счетчиком i, задает порядок умножения строк матри­цы А. Второй, со счетчиком i 2, задает перебор столбцов матрицы В. В третьем цикле, со счетчиком j, происходит подсчет суммы произведений элементов i -й строки матрицы А и i 2-го столбца матрицы В. Сумма присваивается очередному эле­менту матрицы C, и переменная sum обнуляется.

Sub primer_15()

Dim a() As Integer, b() As Single, c() As Single

Dim n As Integer, m As Integer, h As Integer

Dim i As Integer, j As Integer, i2 As Integer

Dim sum As Single

n = Cells (1, 4)

m = Cells (2, 4)

h = Cells (3, 4)

ReDim a(n, m): ReDim b(m, h): ReDim c(n, h)

'очистка рабочего листа от посторонних надписей

For i = 1 To 10 * n

For j = 1 To 10 * m

Cells (i + 3, j) = ""

Next j

Next i

'заполнение матриц А случайными целыми числами

'вывод матрицs в рабочий лист Excel

Cells (5, 1) = "Матрица А:"

For i = 1 To n

For j = 1 To m

a(i, j) = 50 - Int (Rnd () * 100)

Cells (i + 5, j) = a(i, j)

Next j

Next i

'заполнение матриц B случайными числами

'вывод матрицs в рабочий лист Excel

Cells (5, m + 2) = "Матрица B:"

For i = 1 To m

For j = 1 To h

b(i, j) = 50 - Int (Rnd () * 1000) / 10

Cells (i + 5, j + m + 2) = b(i, j)

Next j

Next i

'умножение матриц А и В

For i = 1 To n 'номера строк матрицы A

For i2 = 1 To h 'номера столбцов матрицы B

sum = 0

For j = 1 To m 'элементы строки A

sum = sum + a(i, j) * b(j, i2)

Next j

c(i, i2) = sum 'формируем матрицу C

Next i2

Next i

Cells (n + 5 + 2, 1) = "Матрица C:"

For i = 1 To n

For j = 1 To h

Cells (i + n + 5 + 2, j) = c(i, j)

Next j

Next i


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: