热情软件屋

 

使用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,

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio