我试图填充,然后基于相当大的数组执行计算。这是为了填充二叉树来计算期权价格,因此在填充数组之后,我将需要执行重复计算,因此我更希望数组中具有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。非常感谢您提供解决方法。
答案 0 :(得分:1)
您可以尝试使用单个查询列来表示3D阵列(这不是最佳方法,但可以帮助解决内存错误):
NavController.navigate(R.id.loginToContentAction)