大型三维数组的“内存不足”错误

时间:2018-09-17 13:05:56

标签: vba

我试图填充,然后基于相当大的数组执行计算。这是为了填充二叉树来计算期权价格,因此在填充数组之后,我将需要执行重复计算,因此我更希望数组中具有3个维,以便在代码中进一步参考。第一个维度是经过的期间数,第二个维度是价格上涨的次数,第三个维度是价格下跌的次数。

Dim arr() As Double
Dim periods As Integer
Dim p As Long, i As Long
Dim u As Double, d As Double
Dim iniprice As Double

Let periods = 400
Let iniprice = 100
Let u = 1.1
Let d = 0.9

ReDim arr(0 To periods, 0 To periods, 0 To periods)

Let arr(0, 0, 0) = iniprice

For p = 1 To UBound(arr, 1)
  For i = 0 To p
    arr(p, i, p - i) = WorksheetFunction.RoundDown(arr(0, 0, 0) * u ^ i * d ^ (p - i), 2)
  Next i
Next p

这是我PC上可用的RAM量(当前具有8Gb)的限制吗?还是VBA本身的限制?由于一个期间通常是一天,因此期限值为1000是正常的(252天= 1个交易年)。

我还注意到我有很多未使用的值,因为我只想填充格式为arr(p,i,pi)的值,诸如arr(10,10,10)的值将为0。非常感谢您提供解决方法。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用单个查询列来表示3D阵列(这不是最佳方法,但可以帮助解决内存错误):

NavController.navigate(R.id.loginToContentAction)