繁体   English   中英

VBA中的双重求和

[英]Double Summation in VBA

我正在尝试在VBA中实现以下算法:

请查看链接: VT-Micro算法

这是我的代码:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM