编写numpy的polyval()函数

Write numpy's polyval() function

我正在尝试编写一个可以复制 numpy 函数的函数,np.polyval()

这是我当前的代码:

def eval(poly, x):
    result = 0  
    for i in poly:
      y = (x ** (len(poly) - poly.index(i)-1))
      result += y
  return result

poly 应该是为 numpy.poly1d 函数

格式化的列表

但是这段代码的问题是,当 x 等于负数时

有人可以帮我处理这段代码吗?

你试过math.pow函数了吗?

import math
def func(poly, x):
  result=0
  i=1
  for p in poly:
    result += p*math.pow(x, len(poly)-i)
    i+=1
  return result

这来自 numpy.polyval 页面:

If p is of length N, this function returns the value:

p[0]*x**(N-1) + p[1]*x**(N-2) + ... + p[N-2]*x + p[N-1]

嘿,我发现这段代码的工作方式类似于 np.polyval() 函数:

def poly(polynomial: list,value: int):
    final = 0
    for i in range(len(polynomial)):
        final += (value**i)*polynomial[(-1*i)-1]
    return final

举例说明:poly([1,-5,5],-3)

range(len(polynomial)) returns 每次迭代 0,1,2。这些也是二次方程式所需的幂。 (value**i)*polynomial[(-1*i)-1] 表达式获取我们的值(在本例中为 -3)并赋予它 i 的值(即 (-3)^0,(-3)^1,(-3)^2)。然后将其与所提供列表的第 polynomial[(-1*i)-1] 个索引相乘。 (当 i=0 时为 -1;当 i=1 时为 -2,当 i=2 时为 -3)。

最后,它将所有这些加在一起,returns 一个值。