我想阅读并评估以下列格式提供的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所需的格式?
感谢。
答案 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