Office中国论坛/Access中国论坛

标题: 使用Excel的VBA求逆矩阵 [打印本页]

作者: admin    时间: 2004-6-24 06:01
标题: 使用Excel的VBA求逆矩阵


转自 问专家 网



编号: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,

此问题由李海回答。




作者: sky007    时间: 2007-9-13 19:36
不错不错~~~~




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3