Результат выполнения программы:
Пример 16. Умножить матрицу A (n, m) на вектор V (m).
Согласно правилам математики, матрицу можно умножить на вектор только в том случае, если вектор имеет количество элементов, равное количеству столбцов матрицы. Результатом умножения матрицы на вектор является новый вектор, который содержит столько элементов, сколько было строк в матрице.
Умножение массивов происходит во внутреннем цикле. В нем подсчитывается сумма произведений каждого элемента i -й строки матрицы со всеми элементами вектора. Затем сумма присваивается i -му элементу результирующего вектора С. Перед расчетом очередной строки переменная sum должна быть обнулена во избежание накопления суммы нескольких строк.
Sub primer_16()
Dim a() As Single, b() As Integer, c() As Single
Dim n As Integer, m As Integer, i As Integer
Dim j As Integer, sum As Single
n = Cells (1, 8)
m = Cells (2, 8)
ReDim a(n, m): ReDim b(m): ReDim c(m)
'очистка рабочего листа от посторонних надписей
For i = 1 To 10 * n
For j = 1 To 10 * m
Cells (i + 2, j) = ""
Next j
Next i
'заполнение матрицы А случайными числами
'вывод матрицы в рабочий лист Excel
Cells (4, 1) = "Матрица А:"
For i = 1 To n
For j = 1 To m
a(i, j) = 50 - Int (Rnd () * 1000) / 10
Cells (i + 4, j) = a(i, j)
Next j
Next i
Cells(4, m + 2) = "Вектор B:"
'заполнение вектора В случайными целыми числами
'вывод вектора в рабочий лист Excel
For i = 1 To m
b(i) = 50 - Int (Rnd () * 1000) / 10
Cells (5, i + m + 2) = b(i)
Next i
Cells (n + 6, 1) = "Матрица C:"
'умножение матрицы на вектор
'вывод результата в рабочий лист Excel
For i = 1 To n
sum = 0
For j = 1 To m
sum = sum + a(i, j) * b(j)
Next j
c(i) = sum
Cells (i + n + 6, 1) = c(i)
Next i