方程求根的迭代法
计算方法4方程求根的迭代法
计算方法4方程求根的迭代法四方程求根的迭代法是一种用于解决非线性方程的数值方法。
在计算方法中,非线性方程指的是形如f(x)=0的方程,其中f(x)包含x的非线性项。
在实际中,非线性方程的求解是非常常见的问题,因此有很多不同的迭代法可以用于解决这些问题。
以牛顿迭代法为例,它是一种基于线性近似的迭代方法。
该方法的基本思想是将非线性方程转化为线性方程,通过不断迭代来逼近方程的根。
具体而言,牛顿迭代法的步骤如下:1.选择初始估计值x0作为方程的根,并计算f(x0)的值。
2.计算f(x)的导数f'(x),并计算方程的线性近似式x-x0=-f(x0)/f'(x0)。
3.计算下一个近似值x1,即x1=x0-f(x0)/f'(x0)。
4.判断,x1-x0,是否小于给定的收敛条件,如果是则停止迭代,否则转到步骤55.将x1作为新的近似值x0,转到步骤2牛顿迭代法具有快速收敛的特点,尤其适用于具有单根的方程。
然而,该方法也存在一些限制,如在计算f'(x)时需要知道方程的导数,当方程的导数不易计算时,该方法可能不适用。
除了牛顿迭代法,还有其他一些常用的四方程迭代方法,如割线法、弦截法等。
每种方法都有其特点和适用范围,选择合适的方法对于求根问题的解决至关重要。
总结起来,四方程求根的迭代法是一种用于解决非线性方程的数值方法。
牛顿迭代法是其中一种常用的方法,通过不断迭代来逼近方程的根。
根据方程的特点和计算条件,选择合适的迭代方法是解决求根问题的关键。
希望以上的介绍可以帮助您更好地理解和应用这一方法。
迭代法求方程根
迭代法是求解方程根的一种重要方法,它是以某种特定的搜索路径,通过不断迭代更新搜索解的值,最终求得方程的根的一种方法。
迭代法的核心思想是迭代的方法,通俗理解就是不断重复,不断迭代,不断改变,最终找到满足条件的解。
迭代法求解方程根的步骤大致如下:
首先,选定迭代法求解方程的初始值和迭代步长,然后设定迭代次数,并进行初始化。
其次,开始对迭代解进行更新。
在这一步中,根据方程的性质,以及初始值和迭代步长,通过计算求出新的迭代解,然后将新的迭代解更新到原来的迭代解中。
接着,计算迭代解的误差,并根据误差的大小,来判断迭代解是否收敛。
如果迭代解收敛,则将其作为方程的根;如果迭代解不收敛,则重复前面的步骤,继续迭代,直到解收敛为止。
最后,根据迭代解的误差,判断迭代解是否准确,即判断迭代解是否符合方程的性质。
如果误差满足要求,则将迭代解作为方程的根;如果误差过大,则需要重新调整迭代步长,并重复迭代,直到误差满足要求为止。
总之,迭代法求解方程根是一种重要的方法,它可以解决复杂的方程,在求解方程根方面有很大的帮助。
它的基本思想是:以某一特定搜索路径,通过迭代不断改变搜索解,最终得到解。
迭代法求解方程(组)的根
迭代法求解⽅程(组)的根⾸先,迭代法解⽅程的实质是按照下列步骤构造⼀个序列x0,x1,…,xn,来逐步逼近⽅程f(x)=0的解:1)选取适当的初值x0;2)确定迭代格式,即建⽴迭代关系,需要将⽅程f(x)=0改写为x=φ(x)的等价形式;3) 构造序列x0,x1,……,xn,即先求得x1=φ(x0),再求x2=φ(x1),……如此反复迭代,就得到⼀个数列x0, x1,……,xn,若这个数列收敛,即存在极值,且函数φ(x)连续,则很容易得到这个极限值,x*就是⽅程f(x)=0的根。
举个例⼦:求解⽅程: f(x) =x^3-x-1=0 在区间(1,1.5)内的根。
⾸先我们将⽅程写成这种形式:⽤初始根x0=1.5带⼊右端,可以得到这时,x0和x1的值相差⽐较⼤,所以我们要继续迭代求解,将x1再带⼊公式得直到我们我们得到的解的序列收敛,即存在极值的时候,迭代结束。
下⾯是这个⽅程迭代的次数以及每次xi的解(i=0,1,2....)我们发现当k=7和8的时候,⽅程的解已经不再发⽣变化了,这时候我们就得到了此⽅程的近似解。
1#define eps 1e-82int main()3 {4 x0=初始近似根;5do{6 x1=x0;7 x0=g(x1); //按特定的⽅程计算新的近似根8 }while(fabs(x0-x1)>eps);9 printf("⽅程的近似根是%f\n",x0);10 }注意:如果⽅程⽆解,算法求出的近似根序列就不会收敛,那么迭代过程就会变成死循环。
因此,在使⽤迭代算法前应先考察⽅程是否有解,并在算法中对迭代次数给予限制。
下⾯再写⼀个求解⽅程组的例⼦加深⼀下理解:算法说明:⽅程组解的初值X=(x0,x1,…,xn-1),迭代关系⽅程组为:xi=gi(X)(i=0,1,…,n-1),w为解的精度,maxn为迭代次数。
算法如下:算法核⼼:1int main()2 {3for (i=0; i<n; i++)4 x[i]=初始近似根;5do6 {7 k=k+1;8for(i=0; i<n; i++)9 y[i]=x[i];10for(i=0; i<n; i++)11 x[i]=gi(X); //按特定的⽅程计算新的近似根12 c=0;13for(i=0; i<n; i++)14 c=c+fabs(y[i]-x[i]);//c要每次重新设初值为015 }while(c>eps and k<maxn );16for(i=0; i<n; i++)17 print("变量的近似根是",x[i]);18 }选取初始向量精确度为1e-8,迭代次数为100求解代码如下:1 #include<iostream>2 #include<cstdio>3 #include<cstring>4 #include<cmath>5#define eps 1e-86using namespace std;7const int maxn=100;8double x[10],y[10];9int main()10 {11for(int i=1;i<=4;i++)12 x[i]=0;13int cnt=0;14double c=0;15do{16for(int i=1;i<=4;i++)17 y[i]=x[i];18for(int i=1;i<=4;i++)19 {20 x[1]=(6+x[2]-2*x[3])/10;21 x[2]=(25+x[1]+x[3]-3*x[4])/11;22 x[3]=(-11-2*x[1]+x[2]+x[4])/10;23 x[4]=(15-3*x[2]+x[3])/8;24 }25 c=0;26for(int i=1;i<=4;i++)27 c+=(fabs(y[i]-x[i]));28 }while(c>eps&&cnt<maxn);29for(int i=1;i<=4;i++)30 printf("x%d = %.4lf\n",i,x[i]);31 }运⾏结果如下:迭代法求解⽅程的过程是多样化的,⽐如⼆分逼近法求解,⽜顿迭代法等。
第4章方程求根的迭代法.ppt.ppt
相应地可得到两个迭代公式
3 x x ( x ) k 1 1 k k 1 3 x ( x ) x 1 k 1 2 k k
如果取初始值 x 0 =1.5,用上述两个迭代公 式分别迭代,计算结果
3 ( 1 ) x 1 . 5 , x , ( k 0 , 1 , 2 ,) . 0 k 1 x k1
仍平方收敛可将迭代法改为牛顿法不是平方收敛重根情形仍平方收敛用牛顿法得用上述三种方法求的二重根151458333333143660714314254976191514166666671414215686141421356215141176470614142114381414213562牛顿迭代法虽然具有收敛速度快的优点但每迭代一次都要计算导数比较复杂时不仅每次计算带来很多不便而且还可能十分麻烦如果用不计算导数的迭代方法往往只有线性收敛的速度
条件
* ( x) 1 2 a 5 1
1 1 2 a5 1
2 2 a5 0
所以
1 5
a0
(x ) 已知方程 x 在 a, b内有根 x *,且在 a, b 上满足 ,利用 ( x) 构造一个迭代函数 g ( x) (x )31
*
* * ( x ) x 当
* (x ) L 1
x x*
,使成立
( x ) ( x ) ( )( x x )
*
故有
( x ) x L x x x x
* * *
x
( x k 1 k) 对于任意的 x 都收敛 由定理1知 x 0
k 0 1 2 3 4 5 6 7
xk 1.5 1.35721 1.33086 1.32588 1.32494 1.32476 1.32473 1.32472
第04章 方程求根的迭代法
定理2:n
次代数方程有 n 个根。
10/74
计算方法——
§4.0 引言
2.
根的分布(有根区间)
求根的隔离区间,定一个[a, b],使[a, b]内有 且只有一个x*使f(x*)=0 定理3:设函数f(x)在[a, b]内连续,严格单调, 且f(a)*f(b)<0,则在[a, b]内f(x)=0有且仅有一 个实根。 通常有两种做法来确定隔离区间: (1)作y = f(x)的草图,看f(x)在x轴的交点位 臵来定区间[a, b] (2)逐步搜索,在连续区间[a, b]内,选取适 当的x1,x2(a, b),若f(x1)*f(x2)<0,则[x1, x2] 内有根。
3 2 1 1 3 2 (c ) x g 3 ( x ) 10 x ; 2 1 2
10 (d ) x g4 ( x ) ; 4 x
1 2
x 3 4 x 2 10 (e ) x g5 ( x ) x 3x2 8x
计算方法——
计算方法——
7/74
(3)若f (x)=(x-x*)m
§4.0 引言
例: 代数方程 f ( x ) a n x n a n 1 x n 1 ... a1 x a0 0, n1 超越方程 f ( x ) e x sin x 0
计算方法——
8/74
§4.0 引言
线性的(一次解)
单个方程 代数方程 非线性 多项式(n个解)
超越的(解的数目不定)
线性(一组解) 方程组
非线性(多组解)
f (x)=0根或 f (x)零点,当 f (x)复杂时,很难求
方程求根的迭代法1
方程求根的迭代法--------------牛顿法和弦截法实验目的:实际问题中碰到的函数f(x)是各种各样的,有的表达是很复杂,这时求解函数方程f(x)=0的根就会变得很困难,而工程应用中,对计算的结果只要保证在某个误差范围之内就足够了,这就要求我们设计一种方法能够求解复杂函数方程的根,迭代法就是这样一种求解复杂函数方程的根的方法。
又由于通常对某些函数方程的根要求比较精确,误差要控制在一定的范围之内,所以计算过程比较复杂,这就要求这种算法能够便于利用计算机编程实现,牛顿法和弦截法为我们提供了一种既能够利用迭代法求解复杂方程的根,又能够便于利用计算机实现,从而方便我们求解,节省我们时间的求解方法。
本实验的目的就在于熟练掌握利用牛顿法和弦截法编程求解方程根,并且比较牛顿法和弦截法的收敛速度,比较两者的不同之处,进而加深对牛顿法和弦截法这两种方法的数学原理的理解。
实验编程实现方程f=@(x)x-exp(-x)及f=@(x)x*exp(x)-1分别利用牛顿法和弦截法求解,并且比较牛顿法和弦截法各自迭代多少次才能达到要求的某一精度,并且理解二者的差别和各自的优缺点。
本实验中要注意在牛顿法的迭代过程中,分母上会出现f(x)的导数项,所以在编程过程中,一定要在程序的一开始就先判断f'(x)是否等于0,如果等于0,则直接跳出,只有在其不为0的情况下才继续执行程序。
另外某些函数可能会发散或者是迭代过程收敛的非常慢,这时用牛顿法就是不合适的,所以这就要求我们另取其他方法。
所以在用牛顿法求解方程根的过程中,要设置一个最大的迭代次数,以免造成电脑资源不足,系统崩溃。
在弦截法的迭代过程中,除了与牛顿法相同的一些注意事项之外,还要注意在计算之前必须要先提供两个开始的值x0,x1。
实验原理: 迭代法的设计思想:迭代法是一种逐次逼近法,这种方法使用某个固定公式,即所谓的迭代公式,反复校正根的近似值,使之逐步精确化,直到得出满足精度要求的结果。
第四章 方程求根的迭代法
牛顿迭代法求 的根,ε=10-5 例 用牛顿迭代法求 x=e-x的根 解:因 f (x)= x ex –1 , f ´(x)=ex ( x+1) 建立迭代公式
xnexn −1 xn − e− xn xn+1 = xn − xn = xn − e (1+ xn ) 1+ xn 取x0=0.5,逐次计算得 逐次计算得 x1=0.571021, Q x3 − x4 = 0 x2=0.567156, x3=0.567143, * ∴ x = 0.56714 x4=0.567143
k 3 用下列迭代法求 x 2 − 2 = 0 的正根 x * ∈ [1, 2 ]的近 2 3 4 5 例0 1 Xk 1 1.5 1.466667 1.414216 1.414214 1.414214 似值,试判断其敛散性. 1 2 2 (1) x n + 1 = x ;(2) xn+1 = 2 ( xn + x ) . n n
*
xk+2
xk+1
xk
x
Newton法又称为Newton切线法或切线法
从几何的角度探讨牛顿迭代法的收敛性 从几何的角度探讨牛顿迭代法的收敛性
y
f´´(x)>0
y
f´´(x)<0
x0
0 y
x0 f´´(x
x0
0 0
X*
x
x0
x
从几何角度探讨牛顿迭代法的收敛性 不满足迭代条件时, 不满足迭代条件时,可能导致迭代值远离 根的情况而找不到根或死循环的情况
求倒数
1 a
,就是求解方程
1 f (x) = − a = 0 x 1 f ′( x) = − 2 ,其 Newton 法的迭代函数为 其
迭代法举例
迭代法举例
迭代法是指通过反复迭代,逐步逼近求解方程的一种方法。
下面我们来举几个例子。
1.牛顿迭代法求解方程根
牛顿迭代法是一种求解方程根的迭代方法,假设需要求解的方程为f(x)=0,初始点为
x0,则可以通过以下迭代公式求解:
xn+1=xn-f(xn)/f'(xn)
其中f'(xn)表示f(x)在点xn处的导数。
通过不断的迭代求解,当f(xn+1)足够小的时候,就可以认为xn+1是方程f(x)=0的解。
这可以用来求解很多实际问题,例如求解非线
性方程、求解微积分中的最大值和最小值等。
2.雅可比迭代法求解线性方程组
x(k+1)=D^{-1}(b-(L+U)x(k))
其中D是A的对角线元素构成的对角矩阵,L和U分别是A的下三角和上三角部分矩阵。
这个迭代公式是通过将原方程组的系数矩阵A分解为D-(L+U)的形式而得到的。
使用雅可比迭代法求解线性方程组时,需要保证矩阵A是对称正定的,否则该方法可
能会失效。
此外,这个方法的收敛速度通常较慢。
3.梯度下降法求解函数最小值
其中α为步长,∇f(xn)表示f(x)在点xn处的梯度。
通过不断的迭代求解,可以逐步逼近函数f(x)的最小值。
但是需要注意的是,当该函数的梯度存在很大的方向差异时,梯度下降法的收敛速度
可能较慢,因此需要改进方法,例如Adagrad和Adam等算法,使得每个变量的更新步长可以根据过去的梯度值自适应地调整。
数值分析E
牛顿迭代公式的收敛速度
从xk+1= xk-f(xk)/f '(xk)得牛顿法的迭代函数为 f(x) ϕ(x)=xf ′(x) 经计算有 f(x*)f ′′(x*)
ϕ′(x*)=
{f ′(x*)}
2
结论 当x*是f(x)的单根, 即 f(x*)=0, f'(x*) 0,有 ϕ'(x*)=0<1, 因此 (1) 牛顿公式具有局部收敛性, (2) 对单根是二阶收敛的 注 对于重根, 牛顿公式的收敛速度会减低.
p的大小是衡量迭代公式优劣的标准
定理 设ϕ(x)在x=ϕ(x)根x*邻近有p阶连续导数,且 (p)(x*) (p-1) ϕ 0, ϕ'(x*)=ϕ''(x*)=…=ϕ (x*)=0, 则迭代公式xk+1=ϕ(xk)具有p阶收敛速度 证明 首先计算ek+1=xk+1-x*=ϕ(xk)-ϕ(x*) 将ϕ(xk)在x*处泰勒展开 等于0 * ϕ(xk)=ϕ(x )+ϕ'(x*)(xk-x)+... +ϕ(p-1)(x*)(xk-x*)p-1/(p-1)!+ϕ(p)(ξ) (xk-x*)p/p! =ϕ(x*)+ϕ(p)(ξ) (xk-x*)p/p! : 其中ξ介于xk,x*之间 令k
迭代过程的收敛速度
Lk|x1-x0|/(1-L)知, L越小,收敛速度越快 但L的计算不容易 用误差减小的幅度表示收敛速度的快慢 定义 假设xk+1=ϕ(xk)收敛到x*, 记误差ek=x*-xk,若 由 |xk-x*|
e k+1 lim p =c ≠ 0 k →∞ e k
称该公式具有p阶收敛速度 特别地, p=1 称为线性收敛 p=2 称为平方收敛 p 注 按极限定义, 当k较大时, 有 e k+1 ≈ ce k 当|ek|<1时, p越大,ek+1减小越快, 即敛速越快
方程求根的迭代法原理与对比
方程求根的迭代法原理与对比方程求根是数学中常见的问题之一,迭代法是解决方程求根的一种常用方法。
本文将介绍迭代法的原理,并对比几种常见的迭代法,以帮助读者更好地理解和应用于实际问题中。
一、迭代法的原理迭代法是一种通过反复逼近来求解方程根的方法。
其基本思想是从一个初始值开始,通过不断迭代,逐步逼近方程的根。
具体的迭代公式可以表示为:x_(n+1) = f(x_n)其中,x_n 表示第 n 次迭代的值,x_(n+1) 表示第 n+1 次迭代的值,f(x) 表示方程的函数表达式。
通过不断迭代,当 x_n 逐渐接近方程的根时,x_(n+1) 也会越来越接近方程的根。
当两者的差值小于预设的精度要求时,即可认为找到了方程的近似根。
二、常见的迭代法1. 不动点迭代法不动点迭代法是最简单且常见的迭代法之一。
它的迭代公式为:x_(n+1) = g(x_n)其中,g(x) 是一个满足条件的函数,通常通过选取合适的 g(x) 来使得迭代收敛。
例如,对于方程 x^2 - 2 = 0,可以选择 g(x) = sqrt(2 + x)。
2. 牛顿迭代法牛顿迭代法是一种较为高效的迭代法,其迭代公式为:x_(n+1) = x_n - f(x_n)/f'(x_n)其中,f(x) 和 f'(x) 分别表示方程的函数和导数。
牛顿迭代法的关键在于利用函数的切线来逼近方程的根,通过不断迭代,可以快速地找到根的近似值。
3. 弦截法弦截法是一种基于线性插值的迭代法。
其迭代公式为:x_(n+1) = x_n - f(x_n)(x_n - x_(n-1))/(f(x_n) - f(x_(n-1)))弦截法通过连接两个迭代点的直线与 x 轴的交点来逼近方程的根。
相比于牛顿迭代法,弦截法不需要计算导数,适用于一些无法直接求导的函数。
三、迭代法的对比不同的迭代法在收敛速度、稳定性和适用范围上有所差异。
牛顿迭代法通常收敛速度较快,但对于某些特殊情况可能发散;弦截法相对稳定,但收敛速度较慢;不动点迭代法则是最简单但收敛速度相对较慢的方法。
第4章方程求根的迭代方法
引论 2+0
第一章 插值方法
第二章 数值积分
8+4
8+2
第三章 常微分方程的差分解法
第四章 方程求根的迭代法
8+4
8+2
第五章 线性方程组的迭代法
第六章 线性方程组的直接法
6+2
8+2
48+16
基本概念
线性方程:未知数都是一次的方程。 非线性方程:高次代数方程和超越方程。 代数方程:由未知数的代数式所组成的方程。
2x
是方程 f ( x) e 1 2 x 2 x 0 的 3 重根。
2x 2
第四章
方程求根的迭代法
4.1 迭代过程的收敛性 4.2 4.3 4.4 迭代过程的加速 牛顿法 弦截法
4.1
4.1.1
迭代过程的收敛性
迭代法的设计思想
有根区间
介 值 定 理 若 函 数 f ( x) 在 [ a , b ] 连 续 , 且 f ( a ) f ( b ) 0 ,则方程 f ( x ) 0 在 ( a , b ) 内至 少有一个实根。将 [ a , b ] 称为 f ( x ) 的有根区间。
ab )。 2
(4)反复执行第二步与第三步,直到区间长缩小到允许误差范围 之内,此时区间中点即可作为所求的近似解。
例:证明方程 x 3 3 x 2 6 x 1 0 在区间( 0,1)内有唯一的实根,并 用二分法求这个根的近似值,使误差不超过 0.01 。 解 设 f ( x ) x 3 x 6 x 1, x [0,1] 。因为 f ( x ) 在 [0, 1]连续,且
单根和重根
定理 若 f ( x ) 满足 f ( x ) ( x x )
高校工程数学迭代法求方程根教学课件
作迭代格式
xk+1=(2xk3+5)/(3xk2-2) 取x0=2.5,得迭代序 列:x1=2.164179104,x2=2.097135356,x3=2.094555232, X4=2.094551482=x5,故 α x4
补充[例1]
作迭代格式 xk+1=(xk3-5)/2
令x0=2.5,得迭代序列:x1=5.3125,x2=72.46643066,
≤(qp+qp-1+…+q)|xk–xk-1|≤q/(1–q)•|xk–xk-1|
收敛性
令p→∞,由上式可得
|x*–xk|≤q/(1–q)•|xk–xk-1| 这个误差估计式说明,只要迭代值的偏差|xk–xk-1| 相当小,就可以保证迭代误差|x*–xk|足够小,因此 可用条件:
|xk–xk-1|<ε
k
,也就是 x* = g(x* ),即x* 是 g lim x lim g x k 1 k k k
的根,也就是f 的根。若{ xk}发散,则迭代 法失败。
迭代法原理
[例2-3-1] 求方程 f(x0)=x3–x–1=0 在x=1.5附近的一个根。 [解] 将方程(2.3.1)改写成下列形式 (2.3.2) 用所给的初始近似x0=1.5代入(2.3.2)的右端,得到 (2.3.1)
[例2-3-1a]
迭代初值仍取x0=1.5,则有: x1=2.375
x2=12.3976
继续迭代下去已经没有必要,因为结果显然会越 来越大,不可能趋向于某个极限。这种不收敛的 迭代过程称作是发散的。 一个发散的迭代过程,纵使进行了千百次迭代, 其结果也是毫无价值的。
补充[例1]
[例1] 用简单迭代法求区间(2,3)内方程x3-2x-5=0的根
第4章 方程求根的迭代法
' ( x) L
则迭代过程对任意初值x0∈[a,b]均收敛于方程的根x*,且有 下列误差估计式 只要相邻两次 1 x * xk xk 1 xk 迭代值的偏差 1 L 充分小,就能 k L 保证迭代值足 x * xk x1 x0 1 L 够准确。
第4章 方程求根的迭代法
k 2 3 4 5 6 xk 0.54524 0.57970 0.56006 0.57117 0.56486 |xk-xk-1| 0.06129 0.03446 0.01964 0.01111 0.00631 k 7 8 9 10 xk 0.56844 0.56641 0.56756 0.56691 |xk-xk-1| 0.00358 0.00203 0.00115 0.00065
1.89328947 1.89328925 1.89328921 1.89328920 1.89328920 ……
第4章 方程求根的迭代法
2.迭代法收敛的条件 定理1 设 ( x) 在[a,b]上具有连续的一阶导数,且满足下列 两项条件: (1) 对于任意x∈[a,b],总有 ( x)∈[a,b]; (2) 存在0≤L<1,使对于任意x∈[a,b],成立
容易验证,上例迭代18次得到的精度为10-5的结果 为0.56714,本例只要迭代3次即可得到,加速效果明 显.
第4章 方程求根的迭代法
2.埃特金算法 设xk是根x*的某个近似值,用迭代公式校正一次得
xk 1 ( xk )
再迭代一次,得
~ xk 1 ( xk 1 ) x * xk 1 L( x * xk ) x * ~ xk 1 L( x * xk 1 )
1 xk xk 1 (e 0.6 xk ) 1.6
4.1方程求根的迭代法i
取中点 x0 1 .25 ,将区间二等分,
f ( x ) 0 , 令 a x 1 . 25 , b b 1 . 5 , 0 1 0 1
得新的有根区间 [a1 , b1 ]
*
如此二分下去即可。现估计二分次数
x x 0 . 005 n 5 . 64 n
所以二分6次可达到要求。
不难得出:
ln( b a ) ln n 1 ln 2
区间二分法例题
例1
3 内的 求方程 f( x )x x 1 0 在区间 1 , 1 . 5
一个实根 ,要求准确到小数点后 2 位 .
解(二分法) a 1 . 0 , b 1 . 5 , f ( a ) 0 , f ( b ) 0
*
则 迭 代 过 程 x ( x ) 对 于 任 意 初 值 x [ a ,] b 均 k 1 k 0
证明 设 f ( x ) x ( x ) , 则 f ( x ) 在 [ a , b ] 上 连 续 可 导 ,
由 条 件 ( 1 ) f( a ) a ( a ) 0 f( b ) b ( b ) 0
几百年前就已经找到 了代数方程中二次至 五次方程的求解公式 但是,对于更高次数 的代数方程目前仍 无有效的精确解法
对于无规律的非代数方程的求解也无精确解法 因此,研究非线性方程的数值解法成为必然 本章研究对象
本 章 主 要 讨 论 单 变 量 非 线 性 方 程 fx () 0 的 求 根 问 题
区间二分法分析
区间二分法的分析
优点: 对函数要求低,计算简单; 缺点: 收敛慢且对有偶数重根的情况不适合。
简单迭代法
第二节 简单迭代法
迭代法求方程的根
迭代法求方程的根迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。
设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:(1)选一个方程的近似根,赋给变量x0。
(2)将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0。
(3)当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。
若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。
上述算法用C++程序的形式表示为:x0=初始近似根;do {x1=x0;x0=g(x1);// 按特定的方程计算新的近似根} while ( fabs(x0-x1)>Epsilon);cout<<“方程的近似根是”<<x0;例如,采用迭代法求方程x=cos(x)一个根的源程序为:#include <iostream>#include <cmath>using namespace std;int main() {float x0,x1=0.0;while(1){x0=x1;x1=cos(x0);if (fabs(x0-x1)<1e-6)break;}cout<<"The real root is "<<x1<<endl;return 0;}【例3】编写一个程序,用迭代法求方程x3-x-1=0在区间[0,2]中的根。
(1)编程思路1。
用二分迭代法求解。
二分迭代法的原理:先取方程f(x)=0的两个粗略解x1和x2,若f(x1)与f(x2)的正负符号相反,则表明区间(x1,x2)中至少有方程的一个解。
如果f(x)在区间(x1,x2)内单调递增或单调递减,则(x1,x2)内只有方程的一个解。
具体做法:取x1,x2的中点x3,计算f(x3)的值。
在x1,x2中去掉函数值与f(x3)同号者(假设f(x2)和f(x3)同号),得到一个由x1和x3构成的区间,这个区间是原来的一半,并且包含精确解。
数值分析10-方程求根的迭代法
只要二分足够多次(即 k 充分大),便有
x * xk , 这里 为预定的精度.
例3 用二分法求方程 x3 x 1 0 在区间 [1,1.5] 上的根,误差
限为 102,问至少需对分多少次?
解: a 1, b 1.5, 102;
k ln(b a) ln 1
4.1 方程求根与二分法
4.1.1 引言 单变量非线性方程的一般形式
f (x) 0
(1.1)
其中 x R, f (x) C[a, b], [a, b] 也可以是无穷区间.
f(x)是高次多项式函数或超越函数 如果函数 f (x)是多项式函数,即
f ( x) a0 xn a1 xn1 an1 x an (a0 0), (1.2) 其中 a0 0, ai (i 0,1,, n) 为实数,则称方程(1.1)为n 次代数方程.
• 后来卡当的学生弗瑞里(Ferrari)又提出了四次方程的解法。此成果更 激发了数学家们的情绪,但在以后的二个世纪中,求索工作始终没有 成效,导致人们对高次代数方程解的存在性产生了怀疑。
• 1799年,高斯证明了代数方程必有一个实根或复根的定理,称此为代 数基本定理,并由此可以立刻推理n次代数方程必有n个实根或复根。
超越函数 不能表示为多项式的函数
如 (x)=3x5-2x4+8x2-7x+1 (x)=e2x+1-xln(sinx)-2
高次代数方程
超越方程
如果实数 x *满足 f (x*) 0,则称 x *是方程(1.1)的 根,或称 x *是f (x)的零点.
若f ( x)可分解为 f (x) (x x*)m g (x), 其中 m为正整数,且 g (x*) 0. 则称 x *为方程(1.1)的m 重根,或 x *为 f (x) 的 m重零点,m 1 时为单根. 结论 若 x *是 f (x)的 m重零点,且 g ( x) 充分光滑,则
方程求根的迭代法(19-20).
(1)x x 1 1 ( x)
' 1
1 1 1 且 ( x) 2 x 1 2 2.5 3.162 1 1 1 (2) x 1 2 ( x) 因 1.5 1 2 ( x) 1 2 x 2 1.5 1 1 1 ' 且 2 ( x) 2 2 x 1.5 2.25 根据定理,任取x0 [1.5, 2],由这两种等价方程所构造的
定理2 设 x 在 x x 的根 x*邻近有连续导数,且
成立
' x* 1
则迭代过程 xk 1 xk 在 x*邻近具有局部收
敛性。
5、迭代过程的收敛速度
定义:设由某方法确定的序列{xk}收敛于方程的根x*x7 = (x6) =0.3472963
0.3472961 | 106 因为 | x7 x6 || 0.3472963
取近似根为x* = 0.347296
例:用简单迭代法求方程 f ( x) x 2 x 1 0 的根。 解:因 f (1.5) 0.25 0, f (2) 1 0 [1.5, 2] 为有根区间。 因 1.5 1.5 1 1 ( x) 2 1 2
3.判断若f (x1) = 0,则x1即是根,否则检验:
(1)若f (x1)与f (a)异号,则知解位于区间[a, x1],
b1=x1, a1=a; (2)若f (x1)与f (a)同号,则知解位于区间[x1, b], a1=x1, b1=b。 反复执行步骤2、3,便可得到一系列有根区间: (a, b), (a1, b1), …, (ak, bk), …
*
(7)
(8)
证:设x*是方程的根,即x*=
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§4.1 引 言绪论中讲到方程求根得二分法,但二分法收敛速度慢,有必要掌握新的方法。
§4.1.1迭代法的思想迭代法是一种逐次逼近法,使用某个固定公式(迭代公式)反复校正,逐步精确,直到满足精度。
迭代法求根分两步: 1) 猜测初值 2)迭代如求解初值问题00')(),,(y x y y x f y ==用梯形公式111[(,)(,)2n n n n n n h y y f x y f x y +++≈++ (1)看作关于1+n y 的函数方程,按欧拉公式提供猜测值),()0(1n n n n y x hf y y +=+,代入(1)得)],(),([2)0(11)1(1+++++=n n n n n n y x f y x f h y y若)1(1+n y 仍不满足要求,则将它代入(1)式,继续得到校正值)2(1+n y ,写成迭代公式)],(),([2)(11)1(1k n n n n n k n y x f y x f h y y ++++++= (2)一般地,为了求一元非线性方程0)(=x f 的根,可以先将其转换为如下的等价形式()x x ϕ= (3)式(3)中连续函数()x ϕ称为迭代函数,其右端含未知数,不能直接求解。
先用根的某个猜测值0x 代入(3),构造迭代公式:()k k x x ϕ=+1。
如果迭代值k x 有极限,则称迭代收敛,极限值k k x x ∞→=lim *就是方程(3)的根。
几何意义P127图4-1为使迭代法有效,必须保证它的收敛行,()x ϕ满足什么条件,才能保证收敛?以最简单的线性迭代()d kx x +=ϕ,可以看出收敛的充分必要条件()1'<=k x ϕ。
几何意义P127图4-2,3,4,5。
§4.1.3 压缩映像原理设*x 是方程()x x ϕ=的根,则由微分中值定理))(()()(*'*1*k k k x xx x x x-=-=-+εϕϕϕ,如果存在10<≤L ,使得],[b a x ∈有()k k x x L x x L x -≤-⇒≤+*1*'ϕ,则迭代误差0e L e kk ≤,由于10<≤L ,故0→k e ,即迭代收敛。
需注意,上述过程中需保证一切迭代值k x 全落在],[b a ,为此要求对任意],[b a x ∈,总有],[)(b a x ∈ϕ。
综上,压缩映像原理:定理 1 设()x ϕ在],[b a 上具有连续的一阶导数,满足条件: (1)对任意],[b a x ∈,总有],[)(b a x ∈ϕ。
映内性(2)存在10<≤L ,使得对于任意],[b a x ∈成立()L x ≤'ϕ。
压缩性则迭代过程()k k x x ϕ=+1对于任意初值],[0b a x ∈均收敛于方程()x x ϕ=的根*x ,且有下列误差估计式:)8(1)7(1101*1*x x LLx x x x L x x kk k k k --≤---≤-+证明:由k k x x L x x -≤-+*1*有k k k k k k x x L x x x x x x x x ---≥---≥-++**1**1从而有k k k x xL x x --≥-+*1)1(,(7)式得证()111')()(--+-≤-=-⇒≤k k k k k k x x L x x x x L x ϕϕϕ011x x L x x k k k -≤-+,结合(7)式得01*1x x LLx x kk --≤-由(7)式知只要1,+k k x x 的偏差足够小,就能保证迭代值1+k x 足够准确,可用kk x x -+1来控制迭代过程是否结束。
流程图见P128图4-6。
例1 P130 P142题3,5,6,7注意迭代函数的选择,同一方程,可以采用不同的迭代函数,但迭代函数可能不收敛,或收敛缓慢,迭代函数的选择非常重要。
§4.1.3 迭代过程的局部收敛性在方程求根的迭代法中,迭代函数()x x ϕ=的确定,至关重要,它直接影响着迭代法的收敛性。
但在实际应用中,同一个方程可以等价导出不同的迭代函数,而且要严格地利用定理1的条件判断迭代公式在整个区间],[b a 内收敛(全局收敛)也非常困难,因此常常判断迭代公式的局部收敛性。
通常在根*x 的邻近考察。
如果存在邻域δ≤-∆*:xx ,使得迭代过程对于任意初值∆∈0x 均收敛,这种收敛性称为局部收敛性。
定理 2 设()x ϕ在()x x ϕ=的根*x 邻近有一阶导数,且成立()1*'<xϕ,则迭代过程()k k x x ϕ=+1在*x 邻近具有局部收敛性。
证:存在充分小邻域δ≤-∆*:x x ,使()1'<≤L x ϕ,L 为某个定数,根据微分中值定理:))(()()(*'*x x x x -=-εϕϕϕ,注意到()**xx ϕ=,又当∆∈x 时∆∈ε,故有δϕ≤-≤-≤-x x x x L xx ***)(,即),()(*δϕx x ∆∈由定理1知()k k x x ϕ=+1对于任意∆∈0x 均收敛。
例2 P131§4.1.4 收敛速度迭代误差*x x e k k -=,当∞→k 时C ee pkk →+1,称迭代过程为P 阶收敛的,P =1称线性收敛,P =2称为平方收敛。
对于在根*x 邻近收敛的迭代公式()k k x x ϕ=+1,由于))((*'1*k k x x x x -=-+εϕ,式中ε介于k x 和*x 之间,故有∞→→+k x e e kk ),(*'1ϕ,若0)(*'≠x ϕ,则为线性收敛。
若0)(*'=x ϕ,将()k x ϕ在*x 处进行泰勒展开有:()2*''*)(2)()(x x x x k k -+=εϕϕϕ,又()k k x x ϕ=+1,()**xx ϕ=,由上式知∞→→+k x e e kk ,2)(*''21ϕ,表明当0)(*'=x ϕ,0)(*''≠x ϕ时平方收敛。
故有下述论断:定理 3 设()x ϕ在()x x ϕ=在根*x 的邻近有连续的二阶导数,且()1'<x ϕ,则0)(*'≠x ϕ时线性收敛;当0)(*'=x ϕ,0)(*''≠x ϕ时平方收敛。
例 P146题3§4.2 迭代过程的加速§4.2.1 迭代公式的加工迭代过程收敛缓慢,计算量将很大,需要进行加速。
设k x 是根*x 的某个近似值,用迭代公式校正一次得()k k x x ϕ=+1,假设)('x ϕ在所考察得范围内变化不大,其估计值为L ,则有:k k k k x L Lx L x x x L x x ---≈⇒-≈-++111)(1**1*有迭代公式k k k x LL x Lx ---=++11111,是比1+k x 更好的近似根。
这样加工后的计算过程为:迭代()k k x x ϕ=+1 改进k k k x LLx L x ---=++11111合并的])([111k k k Lx x Lx --=+ϕ 例3 P133 §4.2.1 埃特金算法上述加速方法含有导数()x 'ϕ,不便于计算。
设将迭代值()k k x x ϕ=+1再迭代一次,又得()11~++=k k x x ϕ,由于)(~1*1*++-≈-k k x x L x x又)(*1*k k x x L x x -≈-+,消去L 得kk k k k k k k k k x x x x x x x x x x x x x x x +---≈⇒--≈--++++++++112111*1**1*1*2~)~(~~ 计算过程如下: 迭代()k k x x ϕ=+1 迭代()11~++=k k x x ϕ 改进kk k k k k k x x x x x x x +---=++++++11211112~)~(~§4.3 牛顿法§4.3.1 公式的导出对于方程0)(=x f ,设已知它的近似根k x ,函数)(x f 在k x 处可用一阶泰勒展开来近似))(()()('k k k x x x f x f x p -+=,取0)(=x p 的根作为0)(=x f 的新的近似根,记作1+k x ,则:)()('1k k k k x f x f x x -=+,这就是牛顿公式,相应的迭代函数是)()()('x f x f x x -=ϕ牛顿法是一种逐步线性化方法,将非线性方程0)(=x f 的求根问题归结为计算一系列0))(()('=-+k k k x x x f x f 的根。
牛顿法几何意义是:(牛顿法亦称切线法,直线经过))(,(k k x f x 、)0,(1+k x ) ,流程图P136 图4-9例5: P137牛顿法收敛很快。
其迭代公式2''''')]([)()()()()()(x f x f x f x x f x f x x =⇒-=ϕϕ假定*x 是0)(=x f 的单根,即0)(*=x f ,0)(*'≠x f ,则由上式知0)(*'=x ϕ。
故牛顿法至少平方收敛定理4 牛顿法在0)(=x f 的单根*x 附近为平方收敛。
(局部收敛)证:1)由2'''')]([)()()(x f x f x f x =ϕ知10)(*'<=x ϕ,故其局部收敛。
2)2*'*'*)(2)())(()()(k k k k x x f x x x f x f x f -+-+=ε1'''1)()()()()(++-=-⇒-=k k k k k k k k k x x f x x f x f x f x f x x代入得2*'1*'*)(2)())(()(0k k k x x f x x x f x f -+-==+ε由上式得)(2)(lim*'*''21x f x f e e kk k →+∞→,故单根时平方收敛。
但当*x 是0)(=x f 的重根时,牛顿法线性收敛。
因)()()(*x g x x x f m-=,其中)(x g 有二阶导数,且0)(*'≠x g)()()()()()()()()()()()()()('**'*1**'x g x x x mg x g x x x x g x x x g x x m x g x x x x f x f x x m m m-+--=-+---=-=-ϕ2'*2''2*'*'])()()(1[)()()()()(2)()11()(x mg x g x x x g m x g x x x mg x g x x mx -+-+-+-=ϕ故)11()(*'mx -=ϕ,当m>1时0)(*'≠x ϕ,且有1)(*'<x ϕ,故线性收敛。