|
转自 问专家 网
编号:QA000090
建立日期: 1998年11月11日 最后修改日期:1998年11月11日
所属类别:
yanrong:
在以下“过程”中使用EXCEL中的MINVERSE,但结果不对,也与在工作表上直接MINVERSE计算的结果不同,请教在VBA中应用MINVERSE求逆矩阵的办法--或者下列“过程”不对?
Private Sub inv588()
Dim a(3, 3) As Single
Dim b(3, 3)
Dim i As Integer
Dim j As Integer
a(1, 1) = 11.1469
a(1, 2) = -8.5919
a(1, 3) = -7.4236
a(2, 1) = -8.5919
a(2, 2) = 308.5973
a(2, 3) = -44.0458
a(3, 1) = -7.4236
a(3, 2) = -44.0458
a(3, 3) = 253.8423
For i = 1 To 3
For j = 1 To 3
b(i, j) = Application.MInverse(a(i, j))
Next j
Next i
End Sub
回答:
问题出在你的“过程”上。让我们来看看b(i, j) = Application.MInverse(a(i, j))这一句。MInverse是对数组整体求逆,而Application.MInverse(a(i, j))相当与对每个元素单独求逆,显然分块求逆的结果组成一个矩阵并不是逆矩阵。正确的方法是对矩阵整体求逆,如果要获得逆矩阵的某个元素应使用Index()工作表函数。例如:
b(i,j) = Application.Index(Application.MInverse(Worksheets(1).Range("A1:c3").Value), i,
此问题由李海回答。
|
|