第2章:求函数的零点问题 第2章求函数的零点问题 设f(刈)是定义在区间[a,b止上的连麵函数,果X∈[a,b]使 得f(x9)=0则称x是fx)的一个零点。 从几何图形看,函数f(X)的零点就是曲线y=f(x)与x轴的交 点。这个事实对我们求数值解很有启发作用。 提示:函数f(x)的零点其实也就是(非线性)方程f(x)=0的 解,所以求函数的零点问题也就是非线性方程求解的问题。 结论:由高等数学中的界值定理可知,若fa)f(b)<0,方程 f(x)=0在ab]内一定有解。 求函数零点的方法有:对分法,牛顿法和不动点算法 2.1对分法 1.算法原理 直接取区间ab]的中点x=(a+b)/2作为问题的近似解,那么我们可 以估计出绝对误差限仅为区间长的一半,即e=(b-a)/2 如果这个结果能满足精度要求,我们就停止进一步的计算 如果不能,就求出f(刈)结果只能是下面三种情况之 (1)f(a)f(x)<0,此时我们有x∈[a,x]; (2)fx)f(a)<0,此时我们有x∈x,b]
第 2 章:求函数的零点问题 1 第 2 章 求函数的零点问题 设 f(x)是定义在闭区间[a,b]上的连续函数,如果 x *∈[a,b]使 得 f(x0 )=0,则称 x *是 f(x)的一个零点。 从几何图形看,函数 f(x)的零点就是曲线 y=f(x)与 x 轴的交 点。这个事实对我们求数值解很有启发作用。 提示:函数 f(x)的零点其实也就是(非线性)方程 f(x)=0 的 解,所以求函数的零点问题也就是非线性方程求解的问题。 结论:由高等数学中的界值定理可知,若 f(a)·f(b)<0, 方程 f(x)=0 在[a,b]内一定有解。 求函数零点的方法有:对分法,牛顿法和不动点算法。 2.1 对分法 1. 算法原理 直接取区间[a,b]的中点 x=(a+b)/2 作为问题的近似解,那么我们可 以估计出绝对误差限仅为区间长的一半,即 e=(b-a)/2。 如果这个结果能满足精度要求,我们就停止进一步的计算; 如果不能,就求出 f(x),结果只能是下面三种情况之一: (1) f(a)·f(x)<0,此时我们有 x *∈[a,x]; (2) f(x)·f(a)<0,此时我们有 x *∈[x,b];
第2章:求函数的零点问题 2 (3)f(x)=0,此时ⅹ即为问题的精确解。 上面第三种情况般不会发生可以不予考虑,在前两种情况 下,我们可以用ⅹ分别替换原问题中的b或a,从而把求解的区间 减小了一半。这样我们又可以取新区间[a,b]的中点。 反复进行上述操作即可得到滿任意精度要求的近似解。事 实上,经过N次迭代后,剩下的区间长为ba)2N这也是结果的 绝对误差限 2.算法说明 STEP 0|输入ab, det, eps yO=f(a) STEP1 x=a+b)/2,y=f(x) STEP2判断:(b-a)2<det否 若是, goto step4 否则,执行下一步 sTEP3若yy0>0则a=x 否则b=x goto step 1 sTFP4输出xy停机 3算法评价
第 2 章:求函数的零点问题 2 (3) f(x)=0,此时 x 即为问题的精确解。 上面第三种情况一般不会发生,可以不予考虑,在前两种情况 下,我们可以用 x 分别替换原问题中的 b 或 a,从而把求解的区间 减小了一半。这样我们又可以取新区间[a,b]的中点。 反复进行上述操作即可得到满足任意精度要求的近似解。事 实上,经过 N 次迭代后,剩下的区间长为(b-a)/2N.这也是结果的 绝对误差限。 2. 算法说明 STEP 0 输入 a,b,det,eps y0=f(a) STEP 1 x=(a+b)/2 ,y=f(x) STEP 2 判断:(b-a)/2<det 否 若是,goto step 4 否则,执行下一步 STEP 3 若 y.y0>0,则 a=x, 否则 b=x. goto step 1 STEP 4 输出 x,y,停机 3.算法评价
第2章:求函数的零点问题 算法简单,使用范围很 如果不考虑求函数值f(x)的计算,数值稳定性很好 应该说,收敛速度还是很快的。 如果用计算器来计算,会感觉的收敛速度较慢; 4利用计算器计算的表格形式 如果我们在计算器上利用对分法来求函数的零点,我们建议采用 如下的表格形式来计算 A[k] B[k] X[k] y(k)I RIk k01N §2牛顿法 牛顿法对问题的条件有较高的要求:如果是求f(x)的零点 那么要求f(x)是连续,单调,可微的凸函数。 1.凸函数的定义 定义:设f(x是定义在[ab]上的实函数,如果对任意x,X∈ [a,b]以及任意0≤λ≤1,均有
第 2 章:求函数的零点问题 3 算法简单,使用范围很广; 如果不考虑求函数值 f(x)的计算,数值稳定性很好; 应该说,收敛速度还是很快的。 如果用计算器来计算,会感觉的收敛速度较慢; 4.利用计算器计算的表格形式 如果我们在计算器上利用对分法来求函数的零点,我们建议采用 如下的表格形式来计算: k A[k] B[k] X[k] y(k) R[k] 0 1 … … … … … … N §2 牛顿法 牛顿法对问题的条件有较高的要求:如果是求 f(x)的零点, 那么要求 f(x)是连续,单调,可微的凸函数。 1. 凸函数的定义 定义:设 f(x)是定义在 [a,b]上的实函数,如果对任意 x1,x2∈ [a,b]以及任意 0≤ λ ≤ 1,均有
第2章:求函数的零点问题 fx1+(1-A)x]≤λfx1)+(1-A)f(x2) 则称f(x)是[ab]上的凸函数 提示:如果f(×)是[a,b]上的凸函数,则曲线y=f(x)上任意两 点间的连线上的点都在曲线的上方,也就是“弓在弦下"。 提示:凸函数的另一个重要的几何特征是:过任意点作切线 曲线上的点都在切线的上方。 结论设f(刈)是[a,b]上二次连续可微的实函数如果恒有f"(∞x) ≥0,则f(×)是[ab]上的凸函数。 2.问题的提法 设f()是定义在闭区间[a,b上的二次连续可微函数,且 (1)f(a),f(b)<0 (2)f(x)≠0,对所有的x∈(ab) 3)f"(x)≥0,对所有的X∈(a,b) 试求f(x)=0在ab上的解。 提示:在上述的假设下,条件(1)保证了f(x)=0在[ab]上一定有 解;利用连续性,条件(2)保证了f(×)在[ab]上不变号,从而 得到f(x)是[ab上的单调函数;条件(3)保证了fx×)是ab上的 凸函
第 2 章:求函数的零点问题 4 f[λ x1+(1-λ )x2]≤ λ f(x1)+(1-λ )f(x2) 则称 f(x)是[a,b]上的凸函数。 提示:如果 f(x)是[a,b]上的凸函数,则曲线 y=f(x)上任意两 点间的连线上的点都在曲线的上方,也就是“弓在弦下”。 提示:凸函数的另一个重要的几何特征是:过任意点作切线, 曲线上的点都在切线的上方。 结论:设f(x)是[a,b]上二次连续可微的实函数,如果恒有 f"(x) ≥ 0, 则 f(x)是[a,b]上的凸函数。 2. 问题的提法 设 f(x)是定义在闭区间[a,b]上的二次连续可微函数,且 (1) f(a)·f(b)<0 (2) f'(x)≠ 0 ,对所有的 x∈(a,b) (3) f"(x)≥ 0,对所有的 x∈(a,b) 试求 f(x)=0 在[a,b]上的解。 提示:在上述的假设下,条件(1)保证了 f(x)=0 在[a,b]上一定有 解;利用连续性,条件(2)保证了 f'(x)在[a,b]上不变号,从而 得到 f(x)是[a,b]上的单调函数;条件(3)保证了 f(x)是[a,b]上的 凸函
第2章:求函数的零点问题 3算法原理分析 牛顿法的核心思想是利用曲线上某个初始点X0处的切线与Ⅹ 轴的交点作为曲线与X轴的交点的近似值。在一般情况下这样处 理会产生一些问题,如果f()是单调凸函数,而且f(xo)>0,刘果 非常好 假如x为f(x)的零点,x为任意初始点,满足f(Xo)>0,X 为Ⅺo处的切线与ⅹ轴的交点,它们之间有什么关系呢 通过画草图我们可以看出,无论是Xo>X还是X<x,只要 f(xo)>0,X处切线的零点X1总是比更靠近X从而可以形成 个算法 4.点斜式方程的解(复习) 问题:设f(x)为任意的连续可为函数,对任意给定的X0试求 曲线y=f(x)在xo处的切线与X轴的交点 只要大家稍微动动手,即可求得切线与ⅹ轴的交点Ⅺ1为 1=X0-f(×0)/f(xo) 当然,我么也可以把f(x在Ⅺ处阶泰勒展开,从而得到fX)在 X0处的线性近似函数,x1也就是这个线性函数的零点。 5.算法说明
第 2 章:求函数的零点问题 5 3.算法原理分析 牛顿法的核心思想是利用曲线上某个初始点x0处的切线与X 轴的交点作为曲线与 X 轴的交点的近似值。在一般情况下这样处 理会产生一些问题,如果 f(x)是单调凸函数,而且 f(x0)>0,效果 非常好。 假如 x *为 f(x)的零点,x0为任意初始点,满足 f(x0)>0,x1 为 x0处的切线与 x 轴的交点,它们之间有什么关系呢? 通过画草图我们可以看出,无论是 x0>x* ,还是 x0<x* , 只要 f(x0)>0,x0处切线的零点 x1总是比 x0更靠近 x * ,从而可以形成一 个算法。 4. 点斜式方程的解(复习) 问题:设 f(x)为任意的连续可为函数,对任意给定的 x0,试求 曲线 y=f(x)在 x0处的切线与 x 轴的交点。 只要大家稍微动动手,即可求得切线与 x 轴的交点 x1为 x1=x0-f(x0)/f / (x0) 当然,我么也可以把 f(x)在 x0处一阶泰勒展开,从而得到 f(x)在 x0处的线性近似函数,x1也就是这个线性函数的零点。 5. 算法说明