逼近理论
数学中的逼近理论是如何将一函数用较简单的函数来找到最佳逼近,且所产生的误差可以有量化的表征,以上提及的“最佳”及“较简单”的实际意义都会随着应用而不同。
数学中有一个相关性很高的主题,是用广义傅里叶级数进行函数逼近,也就是用以正交多项式为基础的级数来进行逼近。
计算机科学中有一个问题和逼近理论有关,就是在数学函式库中如何用计算机或计算器可以执行的功能(例如乘法和加法)尽可能的逼近某一数学函数[1],一般会用多项式或有理函数(二多项式的商)来进行。
逼近理论的目标是尽可能地逼近实际的函数,一般精度会接近电脑浮点运算的精度,一般会用高次的多项式,以及(或者)缩小多项式逼近函数的区间。缩小区间可以针对要逼近的函数,利用许多不同的系数及增益来达到。现在的数学函式库会将区间划分为许多的小区间,每个区间搭配一个次数不高的多项式。
最佳多项式
只要选定了多项式的次数及逼近的范围,就可以用以使最坏情形误差最小化的原则,来选择逼近多项式,其目的为最小化的绝对值,其中P(x)为逼近多项式,而f(x)为实际的函数。对于一个良态的函数,存在一个N次的多项式,使误差曲线的大小在和之间震荡至多N+2次,其最坏情形的误差为。一个N次的多项式可以内插曲线中的N+1个点。当然也有可能制造一些极端的函数,使得满足上述条件的多项式不存在,但在实务上很少需要为这様的函数进行逼近。
例如右图中的红线就是用N = 4情形下用多项式逼近log(x)及exp(x)的误差。误差在和之间震荡。每一个例子中的极端有N+2个,也就是6个。极值出现在区间的端点,也就是图的最左边及最右边。
切比雪夫近似
切比雪夫近似是利用将函数展开为由切比雪夫多项式组成的各项,依需要的逼近程度决定展开的项次,可以得到很接近多项式的结果。此作法类似进行函数的傅里叶分析,只是用切比雪夫多项式代替分析中用到的三角函数。
若计算一函数切比雪夫展开的系数:
只展开到项为止,可以得到一个逼近f(x)的N次多项式。
对于一个有快速收敛幂级数的函数而言,若展开到一定项次后截止不再展开,截止产生的误差接近截止后的第一项,因此误差可以由截止后的第一项代表。若是用切比雪夫多项式展开,也会有一様的结果。若切比雪夫展开只展开到,后面截止,其误差会接近的整数倍。切比雪夫多项式的特点是在[−1, 1]区间以内.其数值会在+1和−1之间震荡。有N+2个极点。因此f(x)和切比雪夫展开的误差接近一个有N+2个极点的函数,因此为近似最佳的N次多项式[2]。
在上面中,可以看到蓝色线(切比雪夫近似的误差)有时比红色线(最佳多项式的误差)接近x轴,但有时蓝色线反而离x轴较远,因此切比雪夫近似和最佳多项式毕竟还是有差异。不过exp函数是快速收敛的函数,切比雪夫近似的误差会比log函数要好。
切比雪夫近似是数值积分方法Clenshaw–Curtis正交法的基础。
雷米兹算法
雷米兹算法是在1934年由苏俄数学家雷米兹提出的算法[3]。可用来产生在一定区间内逼近函数f(x)的最佳多项式P(x)。雷米兹算法是一种迭代式的算法,最后会收敛到使误差函数N+2个极值的多项式。
雷米兹算法是用以下的事实为基础:可以在有N+2个测试点的情形下,创建一个N次多项式,其误差函数在0附近震荡。
假设N+2个测试点, , ... (其中和假设是区间的二个端点),需求解以下的多项式:
等式右侧的正负号交替出现。因此可以得到下式:
既然, ..., 给定,其各次方的幂次也是已知,而, ..., 也是已知。上式就变成由N+2的线性方程组成的联立方程.有N+2个变数,分别是, , ..., 及。可以解出上式的多项式P及误差。
下图产生一个在[−1, 1]区间内逼近的四阶多项式,六个测试点为 −1, −0.7, −0.1, +0.4, +0.9和1。在图中将二端点以外的测试点标示绿色,其误差为 is 4.43 x 10−4。
注意到上图在六个测试点上的误差的确是,但极值不是在测试点上。若极值在测试点上(P(x)-f(x)在测试点上有最大值或最小值),在此这个区间的误差都不会超过,此多项式即为最佳多项式。
雷米兹算法的第二步就是将测试点移到误差函数有最大值或最小值,例如上图中−0.1的测试点需移到−0.28。移动的方式可以进行一轮牛顿法,来取新的测试点位置,由于知道P(x)−f(x)的一阶及二阶导数,因此可以大略计算测试点要移到哪里才能使误差函数的微分为零。计算多项式P(x)的一阶及二阶导数并不困难,但雷米兹算法需要可以计算f(x)的一阶及二阶导数,而且需要很高的精度,其精度需求要比雷米兹算法输出期望的精度要高。
在移动测试点后,会产生新的线性联立方程,求解后得到新的多项式,再利用牛顿法去找下一组测试点……,一直到结果收敛到需要的精度为止。雷米兹算法收敛速度很快,对于良态的函数,雷米兹算法是二次收敛,若测试点是在正确位置的误差范围内,下次测试点是在正确位置的误差范围内。
使用雷米兹算法时,一般会选切比雪夫多项式的零点为初始测试点,因为最后的误差函数会类似切比雪夫多项式。
相关条目
参考文献
- ^ M. J. D. Powell. Approximation Theory and Methods. Cambridge University Press. 1981: p.3 [2013-07-22]. ISBN 0521295149. (原始内容存档于2016-03-10).
- ^ 冯有前. 数值分析. 清华大学出版社有限公司. 2005: p.89. ISBN 9787810824958.
- ^ E. Ya. Remez, "Sur la détermination des polynômes d'approximation de degré donnée", Comm. Soc. Math. Kharkov 10, 41 (1934);
"Sur un procédé convergent d'approximations successives pour déterminer les polynômes d'approximation, Compt. Rend. Acad. Sc. 198, 2063 (1934);
"Sur le calcul effectiv des polynômes d'approximation des Tschebyscheff", Compt. Rend. Acade. Sc. 199, 337 (1934).