簡體   English   中英

用組合評估代數表達式

[英]Evaluating algebraic expressions with combinations

我需要評估表達式的幫助。 我剛開始它,但是茫然地知道接下來要使用的內容以及我正在使用的所有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函數,可用於生成器表達式(以及list和set生成器以及其他可迭代對象)。 如果您知道如何設置這樣的表達式,則從數學到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的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM