在数学中,泰勒级数对于获得函数的近似值很重要,具有小次数的多项式。
我想看看这样的近似是如何有帮助的,例如为了加快计算速度。让我们使用著名的泰勒级数:
log(1+x) = x + 0.5 * x^2 + (error term)
从道德上讲,计算 2 次多项式的值应该比计算 a 快得多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和math.SE中间。