编写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 一个值。
我正在尝试编写一个可以复制 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 一个值。