在數學中,Taylor series對於使用小函數多項式來近似函數是很重要的。使用泰勒級數來加速計算
我想知道這樣的近似如何有用,例如爲了加速計算。讓我們用著名的泰勒級數:
log(1+x) = x + 0.5 * x^2 + (error term)
道義上,計算等級2的多項式的值應比計算log
快得多。
因此,一個碼來測試此:
import numpy, time
def f(t):
return t + 0.5 * t ** 2
f = numpy.vectorize(f)
s = time.time()
for i in range(100):
x = numpy.random.rand(100000)
numpy.log(1 + x)
print time.time() - s # 0.556999921799 seconds
s = time.time()
for i in range(100):
x = numpy.random.rand(100000)
f(x)
print time.time() - s # arghh! 4.81500005722 seconds
爲什麼是多項式方法比實際慢日誌10次?我預計相反。
PS:這個問題可能是在SO和數學中間。
你有沒有一起來看看怎麼單位計算日誌numpy的?機會是numpy的log()本身已經非常優化 –
使用'numpy.log(1 + x)'您使用的NumPy的數組編程以實際的矢量化方式運行,而np.vectorize作爲[doc](https:/ /docs.scipy.org/doc/numpy/reference/generated/numpy.vectorize.html)指出:「向量化函數主要是爲了方便,而不是爲了性能」。所以,等價的方法是直接使用'x':'x + 0.5 * x ** 2'代替'f(x)'。 – Divakar
泰勒級數將會對遠離擴展點的參數產生收斂問題。對於所有的推斷都是如此。 – duffymo