在数学中,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