簡體   English   中英

編寫numpy的polyval() function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM