繁体   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