任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~
由于实际运算只能完成有限项或有限步运算,因此要将有些需用极限或无穷过程进行的运算有限化,对无穷过程进行截断,这样产生的误差成为截断误差。
在不少数值运算中常遇到超越计算,如微分、积分和无穷级数求和等,它们需用极限或无穷过程来求得。然而计算机却只能完成有限次算术运算和逻辑运算,因此需将解题过程化为一系列有限的算术运算和逻辑运算。这样就要对某种无穷过程进行“截断”,即仅保留无穷过程的前段有限序列而舍弃它的后段。这就带来了误差,称它为截断误差,因为截断误差是数值计算方法固有的,因此又称方法误差。
例如,函数 可展开为无穷幂级数:
若取级数的起始若干项的部分和作为 时函数的近似计算公式,例如取 则由于它的第四项和之后的各项都舍弃了,自然就产生了误差。这就是由于阶段了无穷级数自第四项起的后段而产生的截断误差。作近似计算时,截断误差
又比如,我们在用不动点迭代或是牛顿迭代法求方程根时,要限定一个迭代次数,这个约束就是用截断误差来体现的:
def dx(f, x):return abs(0-f(x))def newtons_method(f, df, x0, e):delta = dx(f, x0)while delta > e:x0 = x0 - f(x0)/df(x0)delta = dx(f, x0)print 'Root is at: ', x0print 'f(x) at root is: ', f(x0)x0s = [0, .5, 1]for x0 in x0s:newtons_method(f, df, x0, 1e-5)
显然地,1e-5(科学计数法)就是在余项误差小于等于时,返回迭代获得值