2次插值
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*
(5) 缩小区间: 缩小区间: 以得到新的单峰区间 然后转第(3)步 继续迭代,直到满足精度要求为止。 新的单峰区间, 满足精度要求为止 以得到新的单峰区间,然后转第 步,继续迭代,直到满足精度要求为止。
缩短搜索区间的原则是: ),取其小者 缩短搜索区间的原则是:比较函数值 f 2 、f 4 其中 f 4 = f (α ) ),取其小者 ( 所对应的点作为新的α 2 点,并以此点左右两邻点分别取作新的 α1 和 α 3 ,构成缩短 α 其具体方法则如图2-25所示,根据原区间中 4 和α2 的相 所示, 后的新搜索区间 [α1 , α3 ] 。其具体方法则如图 所示 之比较有a、 、 、 四种情况 四种情况, 对位置以及函数值 f 4 和 f 2 之比较有 、b、c、d四种情况,图中阴影线部分表示丢 α α 的一般化处理后, 去的区间。 去的区间。在对新区间三个新点的代号作依次 α1 、 2 、3 的一般化处理后,计算其函 数值, 返回步骤(2)。 数值,并令f1 = f (α1 ), f 2 = f (α 2 ), f 3 = f (α 3 ) ,返回步骤 。
图2-24 二次插值法的原理及区间缩小过程
α * 。令其一阶导数等于零,即 此函数可以很容易地求得 可以很容易地求得它的极小点 其一阶导数等于零, 此函数可以很容易地求得它的极小点 p
dp (α ) = B + 2Cα = 0 dα B * α p = − 2 C
解得 * 中的待定系数 为求得α p,应设法求得式(2-32)中的待定系数 B 和C。 应设法求得式 中的 。 由于所构造的二次插值函数曲线通过原函数上的三个点 因此将三个点 二次插值函数曲线通过原函数上的三个点, 由于所构造的二次插值函数曲线通过原函数上的三个点,因此将三个点 代人方程(2-31)可得 可得 (α1 , f1 ), (α 2 , f 2 ) 及 (α3, f3 ) 代人方程 方程 p(α1 ) = A + Bα1 + Cα12 = f1 p(α 2 ) = A + Bα 2 + Cα 2 2 = f 2 p(α ) = A + Bα + Cα 2 = f 3 3 3 3
解得系数 解得系数
2 2 (α 2 − α 32 ) f1 + (α 32 − α12 ) f 2 + (α12 − α 2 ) f3 B= (α1 − α 2 )(α 2 − α 3 )(α 3 − α1 )
(2-33)
C=−
(α 2 − α 3 ) f1 + (α 3 − α1 ) f 2 + (α1 − α 2 ) f3 (α1 − α 2 )(α 2 − α 3 )(α 3 − α1 )
α 3.在初始搜索区间第一次插值或α 2 仍为初始给定点时,2 和 α 4 并不代表前后二 在初始搜索区间第一次插值或 仍为初始给定点时, 次插值函数极小点, 次插值函数极小点,因而判别式 | α 4 − α 2 |≤ ε 并不能确切地反映该不该终止迭 这时应进行步骤(3)缩短搜索区间 缩短搜索区间, 代替, 代,这时应进行步骤 缩短搜索区间,直至初始点α 2 第一次由α 4 代替,使用判 进行终止判别才具意义。 别式| α 4 − α 2 |≤ ε ?进行终止判别才具意义。为此,算法框图中设置开关 进行终止判别才具意义 为此,算法框图中设置开关K=0和 和 K=1分别表示初始点 第一次由 代替前和后的状态。 代替前和后的状态。 分别表示初始点 α2 α4
∗
图2-25(a) ( )
图2-25 (b) )
图2-25(c) ( )
图2-25(d) ( )
判断迭代终止条件
α 在一般情况下,因α 2 是前一次插值函数的极小值点, * 是本次插值函数的极 在一般情况下, 是前一次插值函数的极小值点, p * * * α 小值点, 的距离足够小时, 小值点,若α p 和α 2 的距离足够小时,即满足 α p − α 2 ≤ ε ,或 α p 和 2 两者原函数 值已很接近, 则停止迭代,这时, 值已很接近,即满足 | f 4 − f 2 |≤ ε ,则停止迭代,这时,若 f 4 < f 2 ,输出极小 值点 4 = α ∗ ,极小值 = f (α ∗ ) ; α f4 ∗ 否则, 否则,即 f 4 ≥ f 2 时,输出极小值点α 2 = α ,极小值 f 2 = f (α ∗ ) 。如不 满足上述迭代终止条件,则返回步骤(3),再次缩短搜索区间,直至最后满足终止 满足上述迭代终止条件,则返回步骤 ,再次缩短搜索区间, 条件。 条件。
α2 =
α1 + α 3
2 2α 1 + α 3 3
(等距原则取点) 等距原则取点) (不等距原则取点) 不等距原则取点)
αFra Baidu bibliotek =
计算三点的函数值 计算三点的函数值
f1 = f (α1 ),
f 2 = f (α 2 ),
f 3 = f (α 3 )
* * (3) 计算二次插值多项式 p (α ) 的极小点α p 与极小值 f (α p ) ;
f 2 − f1 f −f = c2 = 3 1 α 2 − α1 α 3 − α1
二次插值法的C语言程序应用 二次插值法的 语言程序应用 #include<stdio.h> #include <math.h> double f(double x) { return x*x*x-3*x+2; } void main(void) { double a1,a2,a3,a0; double f1,f2,f3,f0; double q=0.000005; (给定计算精度 给定计算精度q=0.000005) ) int k=1; a1=0; (给定初始搜索区间 给定初始搜索区间【a1,a3】) 给定初始搜索区间 a3=3; a2= 0.5*(a1+a3); (采用等距原则取点 采用等距原则取点) 采用等距原则取点 f1=f(a1); (计算三点的函数值) 计算三点的函数值) f2=f(a2); f3=f(a3);
在一条直线上; 说明三个插值结点 p 1 (α 1 , f 1 ), p 2 (α 2 , f 2 ), p 3 (α 3 , f 3 ) 在一条直线上 2.判别框 (α 4 − α1 )(α 3 − α 4 ) > 0 ?若不成立,说明 α 4 落在区间之外。 判别框 若不成立, 落在区间之外。 若不成立 上述两种情况只是在区间已缩得很小,由于三个插值结点已十分接近, 上述两种情况只是在区间已缩得很小,由于三个插值结点已十分接近,计算机 的舍入误差才可能使其发生。 作为最优解应是合理的。 的舍入误差才可能使其发生。此时取α 2 和 f 2 作为最优解应是合理的。
f 1 = f (α 1 ) ,
f 2 = f (α 2 ) ,
f 3 = f (α 3 )
于是通过原函数曲线上的三个点 (α1, f1 ),(α2 , f2 ) 和 (α 3 , f3 ) 可以构成一个二 所示。 次插值函数,如图2-24所示。设该二次插值函数为
p (α ) = A + Bα + Cα 2
*
择新的三个点,得到一个缩小了的单峰区间,并利用此单峰区间的三个 新的三个点,得到一个缩小了的单峰区间,并利用此单峰区间的三个 单峰区间 单峰区间 点,再一次进行插值。如此进行下去,直至达到给定的精度为止。 再一次进行插值。如此进行下去,直至达到给定的精度为止。
二次插值法的计算步骤如下: 二次插值法的计算步骤如下: 如下 ] (1) 给定初始搜索区间 [α 1 , α 3 和计算精度 ; 给定初始搜索区间 和计算精度ε; (2) 在区间 [α 1 , α 3 ] 内取一内点 α 2 ,有下面两种取法: 内取一内点 有下面两种取法 两种取法:
之值代入式 将B,C之值代入式(2-32),可求得 , 之值代入 ,
α2 2 2 B 1 (α 2 − α32 ) f1 + (α32 − α12 ) f 2 + (α12 − α 2 ) f3 α =− = 2C 2 (α 2 − α3 ) f1 + (α3 − α1 ) f 2 + (α1 − α 2 ) f3
为二次或三次多项式, 常用的插值多项式 p (α ) 为二次或三次多项式,分别称为二次插 和三次插值法。 二次插值法。 值法和三次插值法。这里主要介绍二次插值法。
该法的基本思想是:
在给定的单峰区间中,利用目标函数上的三个点来构造一个二次插值
函数 f (α ) ,以近似地表达原目标函数p (α) 极小点。 的极小点近似作为原目标函数的极小点。
,并求这个插值函数
该法是以目标函数的二次插值函数的极小点作为新的中间插入点,进行区 是以目标函数的二次插值函数的极小点作为新的中间插入点, 的一维搜索方法。 间缩小的一维搜索方法。 α 设一元函数 f (α ) ,在单峰区间 [ α 1 , α 3 ] 内取一点 2 且 α 1 < α 2 < α 3 这三点对应的函数值分别为
* p
(2-34)
内的另一个计算点, 把 α p 取作区间 [ α 1 , α 3 ] 内的另一个计算点,比较α * 与 α 2 两点函数值的大 p f (α ) 小 , 在 保 持 两 头 大 中 间 小 的 前 提 下 缩 短 搜 索 区 间 , 从 而 构 成 新 的 三 点 搜 索 区 间 , 再 继 续 按 上 述 方 法 进 行 三 点 二 次 插 值 运 算 , 直 到 满 足 规 定 的 精 度 要 求 为 止 , 把 得 到 的 最 后 的 α 的近似极小值点。 α * 作为 f ( ) 的近似极小值点。 p
二次插值法的程序计算框图, 二次插值法的程序计算框图,如图2-26所示。 所示。 所示
图2—26 二次插值法程序框图
算法框图中有几点需作些说明。 算法框图中有几点需作些说明。 1.判别框 c2 = 0 ?若成立,按式 判别框 若成立, 和式(2-37)则有 若成立 按式(2-36)和式 和式 则有
(4) 进行收敛判断: 进行收敛判断 收敛判断: 则转(6),停止迭代, 若满足 α p − α 2 ≤ ε ,则转 ,停止迭代,并将点α * 与α 2 中函数值较 p 小的点作为极小点输出 结束一维搜索; 作为极小点输出, 小的点作为极小点输出,结束一维搜索; 否则,转下步(5); 否则,转下步 ;
*
为便于计算,可将式(2-34)改写为 为便于计算,可将式 改写为
(2-35)
式中: 式中:
(2-36)
(2-37)
由上可知,在已知一个单峰搜索区间内的 α1 , α 2 , α 3 三点值后,便可通过 由上可知,在已知一个单峰搜索区间内的 三点值后, 单峰搜索区间 二次搜值方法求得 求得极小点的近似值 是采用原 二次搜值方法求得极小点的近似值 X = α * 。由于在求 α * 时,是采用原 p p * 函数的近似函数 的近似函数, 不一定与原函数 原函数的 重合, 函数的近似函数,因而求得的 α p 不一定与原函数的极值点 X * 重合,见 图2-24。 。 为了求得满足预定精度要求的原函数的近似极小点,一般要进行多次迭代。 为了求得满足预定精度要求的原函数的近似极小点,一般要进行多次迭代。 原函数的近似极小点 为此,可根据前述的序列消去原理, 为此,可根据前述的序列消去原理,在已有的四个点α1 , α2 , α3 及α p 中选
概念
二次插值法又称近似抛物线法,亦是用于一元函数 近似抛物线法,
f( ) α
的一种方法。 在确定的初始区间内搜索极小点的一种方法。它属于曲线拟
合方法的范畴。 方法的范畴。
基本原理
α 在求解一元函数 f (α) 的极小点时,常常利用一个低次插值多项式 p( )
α 来逼近原目标函数,然后求该多项式的极小点, 来逼近原目标函数,然后求该多项式的极小点,并以此作为目标函数 f ( ) 极小点。如果其近似的程度尚未达到所要求的精度时, 的近似极小点。如果其近似的程度尚未达到所要求的精度时,可以反复使用 此法, 拟合,直到满足给定的精度时为止。 此法,逐次拟合,直到满足给定的精度时为止。
while(1) { a0=0.5*((a2*a2-a3*a3)*f1+(a3*a3-a1*a1)*f2 +(a1*a1-a2*a2)*f3)/((a2-a3)*f1+ (a3-a1)*f2+(a1-a2)*f3); (计算插值函数的极小点 ) 计算插值函数的极小点a0) f0=f(a0); (计算极小值 计算极小值f0) 计算极小值 if(fabs(a0-a2)<q) (fabs是一个用来求 的绝对值的函数) 是一个用来求x的绝对值的函数 是一个用来求 的绝对值的函数) { printf("The number of the loops is %f and the minpoint is %f",k,a0); printf("\n the min is %f",f0) break; } if(a0>a2) 用进退法确定搜索区间) (用进退法确定搜索区间) { if(f0<=f2) (进一步缩小区间,以得到新的单峰区间 进一步缩小区间, 进一步缩小区间 以得到新的单峰区间)
(5) 缩小区间: 缩小区间: 以得到新的单峰区间 然后转第(3)步 继续迭代,直到满足精度要求为止。 新的单峰区间, 满足精度要求为止 以得到新的单峰区间,然后转第 步,继续迭代,直到满足精度要求为止。
缩短搜索区间的原则是: ),取其小者 缩短搜索区间的原则是:比较函数值 f 2 、f 4 其中 f 4 = f (α ) ),取其小者 ( 所对应的点作为新的α 2 点,并以此点左右两邻点分别取作新的 α1 和 α 3 ,构成缩短 α 其具体方法则如图2-25所示,根据原区间中 4 和α2 的相 所示, 后的新搜索区间 [α1 , α3 ] 。其具体方法则如图 所示 之比较有a、 、 、 四种情况 四种情况, 对位置以及函数值 f 4 和 f 2 之比较有 、b、c、d四种情况,图中阴影线部分表示丢 α α 的一般化处理后, 去的区间。 去的区间。在对新区间三个新点的代号作依次 α1 、 2 、3 的一般化处理后,计算其函 数值, 返回步骤(2)。 数值,并令f1 = f (α1 ), f 2 = f (α 2 ), f 3 = f (α 3 ) ,返回步骤 。
图2-24 二次插值法的原理及区间缩小过程
α * 。令其一阶导数等于零,即 此函数可以很容易地求得 可以很容易地求得它的极小点 其一阶导数等于零, 此函数可以很容易地求得它的极小点 p
dp (α ) = B + 2Cα = 0 dα B * α p = − 2 C
解得 * 中的待定系数 为求得α p,应设法求得式(2-32)中的待定系数 B 和C。 应设法求得式 中的 。 由于所构造的二次插值函数曲线通过原函数上的三个点 因此将三个点 二次插值函数曲线通过原函数上的三个点, 由于所构造的二次插值函数曲线通过原函数上的三个点,因此将三个点 代人方程(2-31)可得 可得 (α1 , f1 ), (α 2 , f 2 ) 及 (α3, f3 ) 代人方程 方程 p(α1 ) = A + Bα1 + Cα12 = f1 p(α 2 ) = A + Bα 2 + Cα 2 2 = f 2 p(α ) = A + Bα + Cα 2 = f 3 3 3 3
解得系数 解得系数
2 2 (α 2 − α 32 ) f1 + (α 32 − α12 ) f 2 + (α12 − α 2 ) f3 B= (α1 − α 2 )(α 2 − α 3 )(α 3 − α1 )
(2-33)
C=−
(α 2 − α 3 ) f1 + (α 3 − α1 ) f 2 + (α1 − α 2 ) f3 (α1 − α 2 )(α 2 − α 3 )(α 3 − α1 )
α 3.在初始搜索区间第一次插值或α 2 仍为初始给定点时,2 和 α 4 并不代表前后二 在初始搜索区间第一次插值或 仍为初始给定点时, 次插值函数极小点, 次插值函数极小点,因而判别式 | α 4 − α 2 |≤ ε 并不能确切地反映该不该终止迭 这时应进行步骤(3)缩短搜索区间 缩短搜索区间, 代替, 代,这时应进行步骤 缩短搜索区间,直至初始点α 2 第一次由α 4 代替,使用判 进行终止判别才具意义。 别式| α 4 − α 2 |≤ ε ?进行终止判别才具意义。为此,算法框图中设置开关 进行终止判别才具意义 为此,算法框图中设置开关K=0和 和 K=1分别表示初始点 第一次由 代替前和后的状态。 代替前和后的状态。 分别表示初始点 α2 α4
∗
图2-25(a) ( )
图2-25 (b) )
图2-25(c) ( )
图2-25(d) ( )
判断迭代终止条件
α 在一般情况下,因α 2 是前一次插值函数的极小值点, * 是本次插值函数的极 在一般情况下, 是前一次插值函数的极小值点, p * * * α 小值点, 的距离足够小时, 小值点,若α p 和α 2 的距离足够小时,即满足 α p − α 2 ≤ ε ,或 α p 和 2 两者原函数 值已很接近, 则停止迭代,这时, 值已很接近,即满足 | f 4 − f 2 |≤ ε ,则停止迭代,这时,若 f 4 < f 2 ,输出极小 值点 4 = α ∗ ,极小值 = f (α ∗ ) ; α f4 ∗ 否则, 否则,即 f 4 ≥ f 2 时,输出极小值点α 2 = α ,极小值 f 2 = f (α ∗ ) 。如不 满足上述迭代终止条件,则返回步骤(3),再次缩短搜索区间,直至最后满足终止 满足上述迭代终止条件,则返回步骤 ,再次缩短搜索区间, 条件。 条件。
α2 =
α1 + α 3
2 2α 1 + α 3 3
(等距原则取点) 等距原则取点) (不等距原则取点) 不等距原则取点)
αFra Baidu bibliotek =
计算三点的函数值 计算三点的函数值
f1 = f (α1 ),
f 2 = f (α 2 ),
f 3 = f (α 3 )
* * (3) 计算二次插值多项式 p (α ) 的极小点α p 与极小值 f (α p ) ;
f 2 − f1 f −f = c2 = 3 1 α 2 − α1 α 3 − α1
二次插值法的C语言程序应用 二次插值法的 语言程序应用 #include<stdio.h> #include <math.h> double f(double x) { return x*x*x-3*x+2; } void main(void) { double a1,a2,a3,a0; double f1,f2,f3,f0; double q=0.000005; (给定计算精度 给定计算精度q=0.000005) ) int k=1; a1=0; (给定初始搜索区间 给定初始搜索区间【a1,a3】) 给定初始搜索区间 a3=3; a2= 0.5*(a1+a3); (采用等距原则取点 采用等距原则取点) 采用等距原则取点 f1=f(a1); (计算三点的函数值) 计算三点的函数值) f2=f(a2); f3=f(a3);
在一条直线上; 说明三个插值结点 p 1 (α 1 , f 1 ), p 2 (α 2 , f 2 ), p 3 (α 3 , f 3 ) 在一条直线上 2.判别框 (α 4 − α1 )(α 3 − α 4 ) > 0 ?若不成立,说明 α 4 落在区间之外。 判别框 若不成立, 落在区间之外。 若不成立 上述两种情况只是在区间已缩得很小,由于三个插值结点已十分接近, 上述两种情况只是在区间已缩得很小,由于三个插值结点已十分接近,计算机 的舍入误差才可能使其发生。 作为最优解应是合理的。 的舍入误差才可能使其发生。此时取α 2 和 f 2 作为最优解应是合理的。
f 1 = f (α 1 ) ,
f 2 = f (α 2 ) ,
f 3 = f (α 3 )
于是通过原函数曲线上的三个点 (α1, f1 ),(α2 , f2 ) 和 (α 3 , f3 ) 可以构成一个二 所示。 次插值函数,如图2-24所示。设该二次插值函数为
p (α ) = A + Bα + Cα 2
*
择新的三个点,得到一个缩小了的单峰区间,并利用此单峰区间的三个 新的三个点,得到一个缩小了的单峰区间,并利用此单峰区间的三个 单峰区间 单峰区间 点,再一次进行插值。如此进行下去,直至达到给定的精度为止。 再一次进行插值。如此进行下去,直至达到给定的精度为止。
二次插值法的计算步骤如下: 二次插值法的计算步骤如下: 如下 ] (1) 给定初始搜索区间 [α 1 , α 3 和计算精度 ; 给定初始搜索区间 和计算精度ε; (2) 在区间 [α 1 , α 3 ] 内取一内点 α 2 ,有下面两种取法: 内取一内点 有下面两种取法 两种取法:
之值代入式 将B,C之值代入式(2-32),可求得 , 之值代入 ,
α2 2 2 B 1 (α 2 − α32 ) f1 + (α32 − α12 ) f 2 + (α12 − α 2 ) f3 α =− = 2C 2 (α 2 − α3 ) f1 + (α3 − α1 ) f 2 + (α1 − α 2 ) f3
为二次或三次多项式, 常用的插值多项式 p (α ) 为二次或三次多项式,分别称为二次插 和三次插值法。 二次插值法。 值法和三次插值法。这里主要介绍二次插值法。
该法的基本思想是:
在给定的单峰区间中,利用目标函数上的三个点来构造一个二次插值
函数 f (α ) ,以近似地表达原目标函数p (α) 极小点。 的极小点近似作为原目标函数的极小点。
,并求这个插值函数
该法是以目标函数的二次插值函数的极小点作为新的中间插入点,进行区 是以目标函数的二次插值函数的极小点作为新的中间插入点, 的一维搜索方法。 间缩小的一维搜索方法。 α 设一元函数 f (α ) ,在单峰区间 [ α 1 , α 3 ] 内取一点 2 且 α 1 < α 2 < α 3 这三点对应的函数值分别为
* p
(2-34)
内的另一个计算点, 把 α p 取作区间 [ α 1 , α 3 ] 内的另一个计算点,比较α * 与 α 2 两点函数值的大 p f (α ) 小 , 在 保 持 两 头 大 中 间 小 的 前 提 下 缩 短 搜 索 区 间 , 从 而 构 成 新 的 三 点 搜 索 区 间 , 再 继 续 按 上 述 方 法 进 行 三 点 二 次 插 值 运 算 , 直 到 满 足 规 定 的 精 度 要 求 为 止 , 把 得 到 的 最 后 的 α 的近似极小值点。 α * 作为 f ( ) 的近似极小值点。 p
二次插值法的程序计算框图, 二次插值法的程序计算框图,如图2-26所示。 所示。 所示
图2—26 二次插值法程序框图
算法框图中有几点需作些说明。 算法框图中有几点需作些说明。 1.判别框 c2 = 0 ?若成立,按式 判别框 若成立, 和式(2-37)则有 若成立 按式(2-36)和式 和式 则有
(4) 进行收敛判断: 进行收敛判断 收敛判断: 则转(6),停止迭代, 若满足 α p − α 2 ≤ ε ,则转 ,停止迭代,并将点α * 与α 2 中函数值较 p 小的点作为极小点输出 结束一维搜索; 作为极小点输出, 小的点作为极小点输出,结束一维搜索; 否则,转下步(5); 否则,转下步 ;
*
为便于计算,可将式(2-34)改写为 为便于计算,可将式 改写为
(2-35)
式中: 式中:
(2-36)
(2-37)
由上可知,在已知一个单峰搜索区间内的 α1 , α 2 , α 3 三点值后,便可通过 由上可知,在已知一个单峰搜索区间内的 三点值后, 单峰搜索区间 二次搜值方法求得 求得极小点的近似值 是采用原 二次搜值方法求得极小点的近似值 X = α * 。由于在求 α * 时,是采用原 p p * 函数的近似函数 的近似函数, 不一定与原函数 原函数的 重合, 函数的近似函数,因而求得的 α p 不一定与原函数的极值点 X * 重合,见 图2-24。 。 为了求得满足预定精度要求的原函数的近似极小点,一般要进行多次迭代。 为了求得满足预定精度要求的原函数的近似极小点,一般要进行多次迭代。 原函数的近似极小点 为此,可根据前述的序列消去原理, 为此,可根据前述的序列消去原理,在已有的四个点α1 , α2 , α3 及α p 中选
概念
二次插值法又称近似抛物线法,亦是用于一元函数 近似抛物线法,
f( ) α
的一种方法。 在确定的初始区间内搜索极小点的一种方法。它属于曲线拟
合方法的范畴。 方法的范畴。
基本原理
α 在求解一元函数 f (α) 的极小点时,常常利用一个低次插值多项式 p( )
α 来逼近原目标函数,然后求该多项式的极小点, 来逼近原目标函数,然后求该多项式的极小点,并以此作为目标函数 f ( ) 极小点。如果其近似的程度尚未达到所要求的精度时, 的近似极小点。如果其近似的程度尚未达到所要求的精度时,可以反复使用 此法, 拟合,直到满足给定的精度时为止。 此法,逐次拟合,直到满足给定的精度时为止。
while(1) { a0=0.5*((a2*a2-a3*a3)*f1+(a3*a3-a1*a1)*f2 +(a1*a1-a2*a2)*f3)/((a2-a3)*f1+ (a3-a1)*f2+(a1-a2)*f3); (计算插值函数的极小点 ) 计算插值函数的极小点a0) f0=f(a0); (计算极小值 计算极小值f0) 计算极小值 if(fabs(a0-a2)<q) (fabs是一个用来求 的绝对值的函数) 是一个用来求x的绝对值的函数 是一个用来求 的绝对值的函数) { printf("The number of the loops is %f and the minpoint is %f",k,a0); printf("\n the min is %f",f0) break; } if(a0>a2) 用进退法确定搜索区间) (用进退法确定搜索区间) { if(f0<=f2) (进一步缩小区间,以得到新的单峰区间 进一步缩小区间, 进一步缩小区间 以得到新的单峰区间)