二次插值法又称为抛物线法,它是以目标函数的二次插值函数的极小点作为新的中间插入点,进行区间缩小的一维搜索算法。二次插值法的基本原理如下:
在一元函数的初始区间[a,b]内,取三个点:x1=a,(a+b),x3=b,计算函数值f1=f(x1),f2=f(x2),f3=f(x3)。在二维坐标平面内,过(x1,f1)、(x2,f2)和(x3,f3)三点可以构成一个二次插值函数。设该插值函数为
p(x)=a0+a1x+a2x2
将该函数对x求导,得极小点
将区间内的三点及其函数值代入插值函数p(x),可以得到如下方程组
联立求解以上方程组,可得系数a0、a1和a2,将它们代入插值函数p(x)并求得其极值
为了便于计算,可将上式改写成
式中
由式(3-2)求出的xp是插值函数xp的极小点,也是原目标函数的一个近似极小点。以此点作为下一次缩小区间的一个中间插入点,无疑将使新的插入点向极小点逼近的过程加快,如图3-7所示。
图3-7 二次插值法的区间缩小和逼近过程
需要指出的是,二次插值法每次插入的点比较接近函数的极小点,因此其收敛速度较黄金分割法快。二次插值法以两个中间插入点的距离充分小作为收敛准则,即当|xp-x2|≤ε成立时,把xp作为此次一维搜索的极小点。
二次插值法的计算过程如下:
1)给定初始搜索区间[a,b],收敛精度ε,以及区间的另外一个点c(一般情况下,取点)。
2)取x1=a,x2=c,x3=b,分别求出f1=f(x1),f2=f(x2),f3=f(x3),构成三个插值点。
3)按照式(3-1)计算中间插入点xp及其函数值fp=f(xp)。
4)缩短搜索区间。缩短搜索区间的原则是:比较f2与fp的大小,取其小者所对应的点作新的x2点,并以此点左右邻点分别取作为新的x1和x3点,这样构成了缩短后的新搜索区间[x1,x3]。根据原区间中x2与xp、f2与fp的大小关系,区间缩短有四种情况,如图3-8所示,相应得到新的三个区间插入点。
①若fp≤f2,xp≤x2时,令x3=x2,x2=xp,f3=f2,f2=fp。
②若fp≤f2,xp>x2时,令x1=x2,x2=xp,f1=f2,f2=fp。(www.xing528.com)
③若fp>f2,xp≤x2时,令x1=xp,f1=fp。
④若fp>f2,xp>x2时,令x3=xp,f3=fp。
得到新的区间插入点以后,返回第三步进行插值计算。
图3-8 二次插值法的区间取舍及替换
5)当满足|xp-x2|≤ε时,停止迭代,把xp与x2中原函数值较小的点作为极小点。二次插值法的计算框图如图3-9所示。
例3-2 用二次插值法求解例3-1。
解:1)根据例3-1可知,初始搜索区间为[0,2],另外取一个中间点。
2)用二次插值法逼近极小点。
①根据x1=0,x2=1,x3=2,求得f1=2,f2=1,f3=18。将它们代入式(3-1)得
图3-9 二次插值法的计算框图
fp=0.292
由于fp<f2,xp<x2,故新区间[a,b]=[a,x2]=[0,1]。
由于x2-xp=1-0.555=0.445>0.2,故应继续做第二次插值计算。
②在新的区间内,相邻三点及其函数值依次为:x1=0,x2=0.555,x3=1,f1=2,f2=0.292,f3=1。同样代入式(3-1)得
fp=0.243
根据fp<f2,xp>x2,故新区间[a,b]=[x2,b]=[0.555,1]。
由于x2-xp=0.555-0.607=0.052<0.2,则迭代结束,得到的极小点和极小值分别为
x∗=0.607,f∗=0.243
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。