使用VBA进行数组乘法和矩阵求逆

时间:2011-09-04 23:36:05

标签: vba

我正在尝试使用数组进行一些计算。

e.g。我想解决Ax=y,所以我使用以下代码来做到这一点,其中A是方阵,y是col。向量。在VBA中,A是具有二维的数组,y是具有一维的一个。但是,此代码不起作用......

x = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), y)

我哪里弄错了?谢谢!

2 个答案:

答案 0 :(得分:7)

你可能犯了很多错误中的一个或多个:

  • 未定义为Variant的数组(如果数据类型不是Variant,则大多数工作表函数不起作用。)
  • Ay的维度不匹配,因为它们需要进行矩阵乘法。
  • 特别是,如果y尺寸为(1,2)而不是(2,1),则无效,如下例所示。
  • 等......可以是任何东西,真的。您没有告诉我们您收到的错误消息。

这是一个有效的例子:

Dim A As Variant
Dim y As Variant
Dim x As Variant

ReDim y(1 To 2, 1 To 1)
y(1, 1) = 2
y(2, 1) = 3

ReDim A(1 To 2, 1 To 2)
A(1, 1) = 3
A(2, 1) = 1
A(1, 2) = 4
A(2, 2) = 2

x = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), y)

答案 1 :(得分:1)

让矩阵 A (3 x 3)为Range("A1:C3")中的数组,矩阵 y (3 x 1)为{{1}中的数组},矩阵 x (3 x 1)是Range("E1:E3")中的数组。然后你可以尝试这个简单的程序:

Range("G1:G3")

通过使用相同的过程,您可以执行此操作以查找矩阵(n x m)与矩阵(p x q)相乘的结果。当然,为了简化,您应该首先声明变量。我希望这个答案可以帮到你。