首页 > 解决方案 > 计算具有不同结束索引的产品

问题描述

我正在尝试使用不同的结束索引来计算产品,但我没有得到我期望的结果:

from sympy.abc import n, k
from sympy import IndexedBase, Product

g = IndexedBase('g')

gg = {g[0]: 1, g[1]: 2, g[2]: 3, g[3]: 4, g[4]: 5, g[5]: 6}

my_product = Product(g[n]**-1, (n, 0, k-1))
result = list()

for i in range(len(gg)):
    s = {k: i, **gg}    # substitions
    result.append(my_product.evalf(subs=s))

print(result)

结果是:

[1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000]

预期结果是:

[1.00000000000000, 1.00000000000000, 0.500000000000000, 0.166666666666667, 0.0416666666666667, 0.00833333333333333]

标签: sympy

解决方案


我不确定 evalf 应该在这里做什么,但你可以得到我认为你想要的结果

result.append(my_product.subs(k, i).doit().subs(gg))

有了这个,我得到:

[1, 1, 1/2, 1/6, 1/24, 1/120]

推荐阅读