通过从文件中读取多项式来计算多项式

Evaluate polynomials by reading it from a file

我想从以下列格式给出的 txt 文件中读取和评估多项式,

3x^3-4x^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 所需的格式?

谢谢。

这没有使用 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

与其将文件解析为两个单独的列表,不如将它们合并为一个列表。然后使用 numpy 中的 polyval

import numpy as np

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

结果给你 4 个。

假设您可以将常数项(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

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