[英]Write numpy's polyval() function
我正在嘗試編寫一個 function 可以復制 numpy function, 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 function 格式化的列表
但是這段代碼的問題是當x
等於負數時
有人可以幫我處理這段代碼嗎?
嘿,我發現這段代碼的工作方式類似於 np.polyval() function:
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]
th 索引相乘。 (當 i=0 時為-1;當 i=1 時為-2,當 i=2 時為-3)。
最后,它將所有這些加在一起並返回一個值。
你試過math.pow
function 嗎?
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,則此 function 返回值:
p[0]*x**(N-1) + p[1]*x**(N-2) +... + p[N-2]*x + p[N-1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.