通过从文件中读取多项式来计算多项式
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
也就是说,您只需要创建一个系数列表,其中系数出现在度数的索引处。
我想从以下列格式给出的 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
也就是说,您只需要创建一个系数列表,其中系数出现在度数的索引处。