我很难理解为什么在编程时使用函数的泰勒级数来获得函数的近似值而不是仅使用函数本身会很有用。如果我可以告诉我的计算机计算 e^(.1) 并且它会给我一个精确值,为什么我要取近似值呢?

有帮助吗?

解决方案

泰勒级数一般不用于逼近函数。通常,使用某种形式的极小极大多项式。

泰勒级数收敛缓慢(需要很多项才能获得所需的精度)并且效率低下(它们在中心点附近更准确,而远离中心点则不太准确)。泰勒级数的最大用途可能是在数学课程和论文中,它们可用于检查函数的属性和学习微积分。

为了逼近函数,经常使用极小极大多项式。极小极大多项式对于特定情况(函数近似的间隔、多项式可用的次数)具有最小可能的最大误差。通常没有解析解来寻找极小极大多项式。它们是通过数字找到的,使用 雷梅兹算法. 。可以定制极大极小多项式以满足特定需求,例如最小化相对误差或绝对误差、在特定区间内逼近函数等。极小极大多项式需要比泰勒级数更少的项才能获得可接受的结果,并且它们将误差“分散”在整个区间上,而不是在中心更好而在末端更差。

当您致电 exp 计算 e 的函数X, ,您可能正在使用极小极大多项式,因为有人已经为您完成了这项工作并构建了一个评估多项式的​​库例程。在大多数情况下,算术计算机处理器唯一能做的就是加法、减法、乘法和除法。因此必须根据这些操作构造其他函数。前三个给出多项式,多项式足以近似许多函数,例如正弦、余弦、对数和指数(还有一些将事物移入和移出浮点值的指数域的附加操作)。除法添加了有理函数,这对于反正切等函数很有用。

其他提示

有两个原因。首先是最重要的 - 大多数处理器没有像指数,对数等的复杂操作的硬件实现......编程语言可以提供用于计算那些的库功能 - 换句话说,有人使用泰勒序列或其他近似给你。

第二,您可能有一个甚至没有语言支持的函数。

我最近想使用带插值的查找表来获得一个角度,然后计算该角度的SIN()和COS()。麻烦的是,它是一个没有浮点的DSP,没有三角函数,所以这两个功能真的很慢(软件实现)。相反,我将SIN(x)放在表中而不是x中,然后使用y= sqrt(1-x * x)的泰勒系列来计算COS(x)。这款泰勒系列在我需要的范围内准确,只有5个术语(分母是两个的所有权!),可以使用普通C在固定点中实现,并生成比我想到的任何其他方法更快的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top