如何解决编写 numpy 的 polyval() 函数
我正在尝试编写一个可以复制 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
等于负数时
有人可以帮我处理这个代码吗?
解决方法
嘿,我发现这段代码与 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))
每次迭代返回 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)。
最后将所有这些加在一起并返回一个值。
,您是否尝试过 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
页:
如果 p 的长度为 N,则此函数返回值:
p[0]*x**(N-1) + p[1]*x**(N-2) + ... + p[N-2]*x + p[N-1]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。