我需要帮助评估表达式。我刚刚启动它但是对于下一个加上我正在使用的所有for循环而言似乎没有必要。它有总和,产品和组合:
我尝试的是不完整的,我认为不准确。我尝试了几个,但我现在可以想出来。我还没有分母。
i = 10
N = 3.1
j = []
for x in range(1, i + 1):
for y in range(1, i):
for z in range(1, n - i):
l = N * y * z
j.append(l)
ll = sum(j)
感谢任何帮助。我希望能够理解它,以便我可以做更复杂的例子。
答案 0 :(得分:1)
以下是一些提示。如果您尝试并且仍然卡住,请寻求更多帮助。
首先,您知道该表达涉及"组合,"也被称为"二项式系数。"所以你需要一个计算这些的例程。 Here is a question有关如何计算这些数字的多个答案。简而言之,您可以使用scipy
包或使用Python的factorial
函数或使用迭代的自己的例程。
接下来,您会看到表达式涉及sums和products,并且被写为单个表达式。 Python有一个sum
函数,它可以处理生成器表达式(以及列表和集合生成器以及其他迭代)。如果您知道如何设置这样的表达式,那么从数学到Python的转换会更容易。如果您不理解这些生成器/可迭代物以及如何对它们求和,请对此主题进行研究。这种方法不是必需的,因为你可以使用循环而不是生成器,但这种方法会更容易。学习,直到你能理解一个表达式(包括为什么range
中的最终数字已添加1
),例如
sum(N * f(x) for x in range(1, 5+1))
最后,你的表达式有产品,但Python没有内置的方法来获取可迭代的产品。这是Python 3中的这样一个函数。
from operator import mul
from functools import reduce
def prod(iterable):
"""Return the product of the numbers in an iterable."""
return reduce(mul, iterable, 1)
所有这些,你想要的表达式看起来像这样(你需要用更有用的东西替换...
来完成这项工作):
numerator = sum(N * prod(... for y in range(1, 1+1)) for x in range(1, 5+1))
denominator = prod(y + N for y in range(1, 5+1))
result = numerator / denominator
请注意,您的最终结果是N
。