我正在尝试解决由估计四阶微分方程得到的方程组。要做到这一点,需要创建一个大矩阵(A),通常为105 x 105,采用逆矩阵乘以105 x 1矩阵(B)。为此,我使用线性代数方法求解Ax = B.
运行以下代码:
Dim A(1 To 105, 1 To 105) As Double
Dim B(1 To 105) As Double
Dim i As Integer
' Used to make sure all values of A are initialized to zero
For i = 1 To 105
For j = 1 To 105
A(i, j) = 0
Next
Next
For i = 1 To 105
A(i, i) = EI
A(i, i + 1) = -4 * EI + axial * h ^ 2
A(i, i + 2) = 6 * EI - 2 * axial * h ^ 2 + km(i) * h ^ 4
A(i, i + 3) = -4 * EI + axial * h ^ 2
A(i, i + 4) = EI
B(i) = W * h ^ 4
Next
Dim x(1 To 105) As Variant
x = Application.WorksheetFunction.MMult((Application.WorksheetFunction.MInverse(A)), B)
导致“运行时错误'1004':无法获取WorksheetFunction类的MInverse属性”
我已经探究过这个错误了,它似乎意味着我将错误数据传递给函数文本或空白值,所以我在顶部添加了两个循环来将矩阵A初始化为0但是这没有做任何事情。在探索了一些之后,我发现了一些关于矩阵最大尺寸为52 x 52但却无法找到更多相关信息的文章。
答案 0 :(得分:0)
是的,如官方文档中所述,限制为52 x 52。
修改强>
文档似乎有误。我测试了=MINVERSE(A1:DA105)
,效果很好。
您的矩阵很可能包含生成非常大数字的数字而且失败。我填充了我的矩阵105行,数字从1到105,但它失败了。然后我将=RAND()
放在所有单元格中并且它有效。
如果大数字是问题,也许有一些技巧,比如用数字的对数填充矩阵。这是我在其他情况下使用的技巧,我不知道它是否可以与矩阵一起使用。