簡體   English   中英

如何從我的方程中提取系數:x^3 - 60x^2 + 1100x - 6000 / -6000?

[英]How to extract coefficients from my equation of: x^3 - 60x^2 + 1100x - 6000 / -6000?

給定一個整數數組,我試圖提取每個"x^i" 、 ....、 "x^3""x^2""x"前面的系數。

給定方程v(x) = (x-x0)(x-x1)...(xx(i-1)) / (xi-x0)(xi-x1)...(xi-x(i-1))

例如,如果給定數組是 [30, 20, 10, 0],那么預期結果將是:

x^3 - 60x^2 + 1100x - 6000 / -6000

我快到了,我只需要找到一種方法從分子中獲得1, -60, 1100, -6000

我一直在嘗試各種拆分方法,但似乎沒有奏效。

我當前的代碼:

from sympy import *

def extract_coeff(array):
    coeff = []

    x=Symbol('x')
    count = 0
    for item in array:
        if item != 0:
            count = count + 1

    total = len(array)
    list = []

    numerator_list = []
    numerator = 1
    denom_list = []
    denom = 1

    for i in range(total):
        list.append(array[i])

    for item in list:
        denom_list.append((list[-1] - item))

    denom_list.pop()

    for item in denom_list:
        denom = denom * item

    # numerator
    for item in array:
        if item != 0:
            numerator = numerator * (x-item)

    numerator = expand(numerator)

    print(numerator)
    numerator = str(numerator)

    # store coefficient
    if numerator[0] == 'x':
        coeff.append(1)

    # trying to split (PLEASE HELP)
    numerator = numerator.replace('+ ', ', ')
    print(numerator.split(', '))

extract_coeff([30,20,10,0])

假設你有一個方程

>>> from sympy.abc import x
>>> eq = (x**3 - 60*x**2 + 1100*x - 6000) / -6000

你想看看分子。 如果您確定沒有復合分數,那么numer(eq)將起作用。 如果x/3 + x中可能有多個術語,則使用as_numer_denom()

>>> n, d = eq.as_numer_denom()

現在將分子n轉換為 Poly 並詢問所有系數:

>>> Poly(n).all_coeffs()
[-1, 60, -1100, 6000]

由於分母為負數,因此該負號現在位於分子中。

暫無
暫無

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

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