Python 用组合求代数表达式

Python 用组合求代数表达式,python,math,algebra,Python,Math,Algebra,我需要帮助计算表达式。我刚开始,但不知接下来要做什么,加上我正在使用的所有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

我需要帮助计算表达式。我刚开始,但不知接下来要做什么,加上我正在使用的所有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)

感谢您的帮助。我希望能够理解它,这样我就可以做更复杂的例子。

这里有一些提示。如果你尝试了它们,但仍然卡住了,请寻求更多帮助

首先,您知道表达式涉及“组合”,也称为“二项式系数”,因此需要一个例程来计算这些系数。关于如何计算这些数字有多个答案。简单地说,您可以使用
scipy
包,或者创建自己的例程,该例程使用Python的
factorial
函数,或者使用迭代

接下来,您将看到表达式包含和和和积,并作为单个表达式编写。Python有一个
sum
函数,该函数可以处理生成器表达式(以及列表和集合生成器以及其他iterable)。如果您知道如何设置这样的表达式,那么从数学到Python的转换将更容易。如果您不了解这些生成器/可数以及如何求和,请研究此主题。这种方法是没有必要的,因为您可以使用循环而不是生成器,但是这种方法会更容易。研究直到你能理解一个表达式(包括为什么
范围中的最后一个数字添加了
1
),例如

最后,表达式有乘积,但是Python没有内置的方法来获取iterable的乘积。在Python3中有这样一个函数

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)
在所有这些情况下,您所需的表达式将如下所示(您需要通过使用更有用的内容替换
来完成任务):


请注意,您的最终结果是
N

的函数,我不确定产品表达式。这让事情变得更清楚了。我还有很多问题要解决,所以我将对生成器方法进行更多的研究。谢谢你的简明解释,不客气。在本网站上,点击答案左上角附近的复选标记,接受最佳答案(如果它确实回答了您的问题)以表达您的感激之情。这比在评论中说谢谢要好。这也有助于其他人看到你的问题得到了回答。我确实尝试过这样做,但只是记录下来,没有公开展示。我猜是因为我刚加入(新手)
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