通过从文件中读取多项式来评估多项式

时间:2017-10-30 09:10:00

标签: python numpy polynomials

我想阅读并评估以下列格式提供的txt文件中的多项式,

3×^ 3-4倍^ 1 + 5

  • 因此,上述等式应由程序评估如下,

系数: [3,0,-4,5]

到目前为止,我能够解析字符串并创建两个不同的列表来存储系数和度数,如下所示:

系数: [3,-4,5] - >它们是x ^ 3,x ^ 1和x ^ 0

的系数

学位: [3,1]

然而,我无法评估( P(1)= 3(1 ^ 3)-4(1 ^ 1)+5 = 4)具有这些提取值的多项式。我想使用numpy,但格式不匹配。

任何人都可以帮助我如何获得利用numpy所需的格式?

感谢。

3 个答案:

答案 0 :(得分:1)

不是将文件解析为两个单独的列表,而是将它们合并为一个列表。然后使用来自numpy的polyval

import numpy as np

p = [3,0,-4,5]
np.polyval(p,1)

结果给你4个。

答案 1 :(得分:1)

假设您可以将常数项(x ^ 0的系数)放在deg列表中,那么您可以这样做:

coeffs = [3,-4,5]
degs = [3,1,0]
_coeffs = [0]*(max(degs)+1)
for i,deg in enumerate(degs):
    _coeffs[deg] = coeffs[i]

p = np.poly1d(_coeffs[::-1])

然后:

p(1)
4

也就是说,你只需要创建一个系数列表,其中系数出现在度数的索引处。

答案 2 :(得分:0)

这不使用numpy: -

function eval_poly(coef,degree,value_of_x):
    num = 0
    while num < len(coef)-1:
        answer = coef[num]*value_of_x^degree[num]
        num += 1
    answer += coef[-1]
    return answer