设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 5133|回复: 1
打印 上一主题 下一主题

[VBA编程/宏] 使用Excel的VBA求逆矩阵

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2004-6-24 06:01:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


转自 问专家 网



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

此问题由李海回答。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-9-13 19:36:34 | 只看该作者
不错不错~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-17 12:43 , Processed in 0.113534 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表