本人数学拙笨,又碰到十分棘手的问题,希望大家伸出援助之手,帮忙解决难题!目前想要知道在VB中如何构造以下矩阵 U(1,1) U(1,2) U(1,3) U(1,4) U(1,5)
U(2,1) U(2,2) U(2,3) U(2,4) U(2,5)
U(5*5)= U(3,1) U(3,2) U(3,3) U(3,4) U(3,5)
U(4,1) U(4,2) U(4,3) U(4,4) U(4,5)
U(5,1) U(5,2) U(5,3) U(5,4) U(5,5)
及
A(5*5)= (A1,A2,A3,A4,A5) 然后实现计算:U*A=?拜托各位了~~~
U(2,1) U(2,2) U(2,3) U(2,4) U(2,5)
U(5*5)= U(3,1) U(3,2) U(3,3) U(3,4) U(3,5)
U(4,1) U(4,2) U(4,3) U(4,4) U(4,5)
U(5,1) U(5,2) U(5,3) U(5,4) U(5,5)
及
A(5*5)= (A1,A2,A3,A4,A5) 然后实现计算:U*A=?拜托各位了~~~
两个矩阵相乘U*A=? 前提是:
U 的列数= A 的行数
U 的行数= A 的列数 你的A是一维的还是二维的?
A(5*5)以及U(5*5)是什么意思呀,不懂?
a(1,1) a(1,2) a(1,3)
a(2,1) a(2,2) a(2,3)
a(3,1) a(3,2) a(3,3) b(1,1) b(1,2) b(1,3)
b(2,1) b(2,2) b(2,3)
b(3,1) b(3,2) b(3,3) c(1,1) c(1,2) c(1,3)
c(2,1) c(2,2) c(2,3)
c(3,1) c(3,2) c(3,3)且 c = a * bPrivate Sub Command1_Click()
Dim a(3, 3) As Integer, b(3, 3) As Integer, c(3, 3) As Integer
For i = 1 To 3 '行
For j = 1 To 3 '列
c(i, j) = a(i, 1) * b(1, j) + a(i, 2) * b(2, j) + a(i, 3) * b(3, j)
Next j
Next i
End Sub
Dim n As Integer
Dim m As Integer
Dim p As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim z() As Double
n = UBound(X, 1)
m = UBound(X, 2)
p = UBound(Y, 2)
ReDim z(1 To n, 1 To p)
If m <> UBound(Y, 1) Then
MsgBox ("这两个矩阵不能相乘!" + Str$(m) + Str$(UBound(Y, 1)))
Else
For i = 1 To n
For j = 1 To m
For k = 1 To p
z(i, k) = z(i, k) + X(i, j) * Y(j, k)
Next k
Next j
Next i
End If
MatMultiply = z
End Function
矩阵乘法必须要求第一个矩阵的行数等于第二个矩阵的列数
A=MatMultiply(x,y)
其中x和y就是需要相乘的矩阵,A为结果矩阵,但是需要预先定义成动态数组:dim A() as double