编写矩阵乘法的VB程序。矩阵是由m×n个元素数排列而成,例如m*n矩阵是由m行n列数据排列而成。若A矩阵是m×s个元素,B矩阵是s×n个元素,将A矩阵乘以B矩阵得到C矩阵,C矩阵是m×n个元素。
计算方法:矩阵A的第i行s个元素(i,1),(i,2),…,(i,s)和矩阵B的第j列s个元素(1,j),(2,j),…,(s,j)对应相乘后相加,就得到乘积矩阵C的第i行第j列元素,即(i,j)值=(i,1)的值×(1,j)的值+(i,2)的值×(2,j)的值+…+(i,s)的值×(s,j)的值。
例如:A矩阵3×5个元素,B矩阵5×2个元素相乘后得到3×2的C矩阵,如图1所示。其中c(5)=a(11)×b(1)+a(12)×b(3)+a(13)×b(5)+a(14)×b(7)+a(15)×b(9)。
3×5矩阵A (由数组a存储) | a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(10) a(11) a(12) a(13) a(14) a(15) |
| × | 5×2矩阵B (由数组b存储) | b(1) b(2) b(3) b(4) b(5) b(6) b(7) b(8) b(9) b(10) |
| = | 乘积矩阵C (由数组c存储) | c(1) c(2) c(3) c(4) c(5) c(6) |
|
图1 |
(1)如下图所示,矩阵A×矩阵B的乘积矩阵C的第2行第3列的值为_________。
矩阵A
| 矩阵B
|
1 0 2 1 4 0 |
2 4 1 5 1 3 |
(2)根据上述矩阵乘法规则,小明设计了一个求矩阵A、B的乘积矩阵C的程序,代码如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Const max = 10
Dim a(1 To max * max) As Integer ’ 存储m×s矩阵A的各元素
Dim b(1 To max * max) As Integer ’ 存储s×n矩阵B的各元素
Dim c(1 To max * max) As Integer ’ 存储乘积矩阵C的各元素
Dim m As Integer, s As Integer, n As Integer, i As Integer, strline As String
m=3: n=2: s=5
’从左向右、由上往下依次将矩阵A和矩阵B的各元素存储于数组a和数组b中,代码略
For i = 1 To_________
strline = “”
For j = 1 To n
c ((i - 1) * n + j) = 0
For k = 1 To _________
c((i - 1) * n + j)=c ((i - 1) * n + j)+a((i - 1) * s + k) * b__________)
Next k
strline = strline + Str(c((i - 1) * n + j))
Next j
List3. AddItem strline
Next i
End Sub