求和,直到在 Python 内达到时间条件

Summing until time-condition is reached in Python

我想对我的动态模型中的某个但滚动的时期求和。正式表示如下

运行 等式的简单代码片段是:

import numpy as np
import pandas as pd
import operator 

year = np.arange(50)
m_ = [50, 30, 15]
a = [25, 15, 7.5]
ARC_ = [38, 255, 837]
r = 0.03

我尝试用 list(map(operator.sub, m_, a)))m_ 中减去列表 a,就像在另一个 post 中找到的那样。

我失败的尝试看起来像这样:

for t in year:
    for i in range(0, 3):
        while t < t+(list(map(operator.sub, m_, a))):
            L_[t] = sum(ARC_[i] / (1+r) ** t)

完全不确定我是否理解正确,我试图将我的答案建立在方程式的基础上。即使与您期望的结果有一些差距,但它可能会帮助您解决问题。

我创建了一个结果列表来存储 L[t] 的每个值,即 50 个值。然后我计算每对 (t,i) 的总和的开始/结束并计算它。

import numpy as np

years = np.arange(50)
m_ = [50, 30, 15]
a = [25, 15, 7.5]
ARC_ = [38, 255, 837]
r = 0.03

result = []

for t in years:
    s = 0

    for i in range(3):
        t0 = t
        tf = t + m_[i]-a[i]
        for k in range(int(t0), int(tf+1)):
            s += ARC_[i] / (1+r) ** t

    result.append(s)

如果您想做的是计算 m 和 a 之间的差 element-wise,一个简单的解决方案是:

[m_[i] - a[i] for i in range(len(m_))]

希望对您有所帮助。