我正在尝试在 VBA 中实现以下算法:
请参阅链接:VT-Micro Algorithm
这是我的代码:
s = 7.2
a_inkmhs = 7.2
Total_Fuel = 0
If a_inkmhs >= 0 Then
For i = 0 To 3
For j = 0 To 3
Cl = P_coeff(i, j)
Fuel = Exp(Cl * (s ^ i) * (a_inkmhs ^ j))
Next j
Total_Fuel = Total_Fuel + Fuel
Next i
Else
For i = 0 To 3
For j = 0 To 3
ML = N_coeff(i, j)
Fuel = Exp(ML * (s ^ i) * (a_inkmhs ^ j))
Next j
Total_Fuel = Total_Fuel + Fuel
Next i
End If
预期输出: 0.002338176 我越来越 : 3.999006792
问题: 我的实现可能有什么问题。
最佳答案
请注意,您计算的是指数之和,而不是和的指数。此外,更新 Total_Fuel = Total_Fuel + Fuel
应该在内部 for 循环内,否则您将无法正确计算双倍和。正如@VincentG 提到的那样,您的 If
应该测试 a_inkmhs
而不是 a
(或者您可以将 a_inkmhs
重命名为 a
) 并且在求和期间 a_inkmhs
应该提高到 j
的幂而不是 i
,即 a_inkmhs^j
。代码应该是:
s = 7.2
a_inkmhs = 7.2
Total_Fuel = 0
If a_inkmhs >= 0 Then
For i = 0 To 3
For j = 0 To 3
Cl = P_coeff(i, j)
Fuel = Cl * (s ^ i) * (a_inkmhs ^ j)
Total_Fuel = Total_Fuel + Fuel
Next j
Next i
Else
For i = 0 To 3
For j = 0 To 3
ML = N_coeff(i, j)
Fuel = ML * (s ^ i) * (a_inkmhs ^ j)
Total_Fuel = Total_Fuel + Fuel
Next j
Next i
End If
Total_Fuel = Exp(Total_Fuel)
关于algorithm - VBA 中的双重求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32964470/