数值计算方法 第3章-简单迭代法
3-迭代

连续,对
2 简单迭代法及其收敛性
迭代法是数值计算中一类典型方法,不仅用
于方程求根,而且用于方程组求解,矩阵求特征 值。 迭代法的基本思想是一种逐次逼近的方法, 首先给定一个粗糙的初值,然后用同一个迭代公
式,反复校正这个初值,直到满足预先给出的精
度要求。
下面的各种求根方法,实质上就是如何构造
lim xk x 故有 k
(3)设 m>k,则有 xm xk ( xi 1 xi )
i k
使 x1 g ( x1 ) , x2 g ( x2 )
则由微分中值定理和定理条件有
( ) x1 x2 x x g(x ) g(x ) g 1 2 1 2 L x1 x2 x1 x2
x1 与 x2 之间。 其中ξ 在 上式出现的矛盾说明 x1 x2
可以看出,迭代序列收敛。 当 k 越来越大时, xk 接近方程的近似根
3 (2) x x3 1 ,这时 g ( x) x 1
x* 1.32472
。
仍取初值 x0 1.5 ,得迭代公式 xk 1 xk 1
3
k 1, 2,3
x1 2.375 x2 12.3965 x3 1904.01 x4 6.90252 109
迭代序列发散。
按这一迭代公式计算下去,当 k 变大时, xk 远离的 f ( x) 0 精确根。
用迭代法求方程近似根的基本问题 就是 g ( x)如何构造才能使迭代序列 {xk } 收敛。 迭代法的几何意义 求方程(2)的根,实质上就是求直线 y x 与曲线 y g ( x) 的交点 P 的横坐标 x* ,如图。 从图可以看出: (1)如果迭代公式 xk 1 g ( xk ) 收敛,则迭代函数 y g ( x) 曲线走势平坦,即 g ' ( x ) 1 (2)如果迭代公式 xk 1 g ( xk ) 发散,则迭代函数 y g ( x)曲线走势陡峭,即 g ' ( x) 1
数值分析与算法 简单迭代法求解线性方程组

简单迭代法求解线性方程组1.原理:将原线性方程组Ax=b中系数矩阵的主对角线移到一边并将其系数化为一,然后在给定迭代初值的情况下通过迭代的方法求解线性方程组的值。
2.C语言实现方式:(1)计算迭代矩阵:将系数矩阵的所有值分别处以各自所在行的主对角线值,然后将主对角线赋值为0。
(2)输入迭代初值,进行迭代将迭代初值存入y[n]矩阵,然后利用迭代式nn=nn+x[i][j]*y[j];y[i]=nn+b[i];经过有限次迭代得到误差要求以内的值3.源程序如下:#include<iostream>#include<math.h>#include<iomanip>using namespace std;#define kk 50 //定义最大方程元数int n,i,c,j,hh,gg,mm;double A[kk][kk],x[kk][kk],b[kk],y[kk],a[kk],z[kk],m,nn,d,e=1,w,fff ;void main(){cout<<"输入的方程元数"<<endl; //数据的输入cin>>n;cout<<"请输入方程系数矩阵:"<<endl;for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>A[i][j];cout<<"请输入右边向量:"<<endl;for(i=0;i<n;i++)cin>>b[i];cout<<"输入你想要的迭代精度(建议1e-5以上)!"<<endl; cin>>fff;cout<<"输入最大迭代次数(建议300次以上)!"<<endl; cin>>mm;//计算出迭代矩阵for(i=0;i<n;i++){b[i]=b[i]/A[i][i];for(j=0;j<n;j++){if(i==j){x[i][i]=0;}else{x[i][j]=-A[i][j]/A[i][i];}}}//输出迭代矩阵cout<<"计算出迭代矩阵为:"<<endl;for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<x[i][j]<<" ";cout<<b[i]<<" ";cout<<endl;}//赋迭代初值cout<<"输入迭代初值"<<endl;for(i=0;i<n;i++)cin>>y[i];int f=1;//简单迭代法cout<<" ";for(i=1;i<n+1;i++)cout<<'\t'<<"X["<<i<<"]"<<" "<<'\t';cout<<"精度";cout<<endl;cout<<"迭代初值为: ";cout<<setiosflags(ios::fixed);for(i=0;i<n;i++)cout<<y[i]<<" ";cout<<endl;while(e>fff){for(i=0;i<n;i++){z[i]=y[i];nn=0;for(j=0;j<n;j++){nn=nn+x[i][j]*y[j];y[i]=nn+b[i];}e=fabs(z[0]-y[0]);if(fabs(z[i]-y[i])>e)e=fabs(z[i]-y[i]);if(i==0){cout<<setiosflags(ios::fixed);cout<<"第"<<setw(3)<<setprecision(3)<<f++<<"次迭代"<<" "; }cout<<setiosflags(ios::fixed);cout<<setw(8)<<setprecision(8)<<y[i]<<" ";}cout<<e;cout<<endl;if(f>mm){cout<<"迭代次数大于"<<mm<<"次"<<endl;cout<<"认为方程发散,迭代不收敛"<<endl;exit(1);}}cout<<endl;cout<<endl;cout<<"方程迭代了"<<f-1<<"次,达到你所要求的精度"<<fff<<endl;cout<<"最后结果为:"<<endl;cout<<endl;for(i=0;i<n;i++){cout<<"X"<<"["<<i+1<<"]"<<"="<<y[i];cout<<endl;}exit(1);}4.实验数据和结果:按照提示依次输入方程元数,系数矩阵,右边向量和迭代初值。
数值计算方法 迭代法及其收敛性 - 迭代法及其收敛性

x*
lim
k
x
k
1
lim
k
(
xk
)
(lim k
xk
)
( x* )
故k充分大时,xk可作为方程根的近似值
按上述方法构造迭代格式来求解方程的方法称为简单迭代法或逐
次迭代法。
不动点迭代法: 将方程 f ( x) 0 改写为: x ( x).
1 若要求x*满足f ( x* ) 0,则x* ( x* );反之亦然,
重点
实多项式方程
f ( x) a0 x n a1 x n1 an1 x an (a0 0),
的求根问题.
(其中系数ai (i 0,1,, n)为实数)
若 方程f ( x*) 0, 则x*称为函数f ( x)的零点
1
若方程 f (x) (x x* )m g(x),
其 中m为 正 整 数 , 且g( x* ) 0.
真真解解::xx==1.13.234274272
典型例题
例3
用不同方法求方程x2 3 0的根x* 3.
(1) xk1 xk2 xk 3,(x) x2 x 3
(2)
xk 1
3 xk
,(x)
3, x
(3)
xk 1
xk
1 4
( xk2
3), ( x)
x
1 4
(x2
3)
(4)
xk 1
1 2
典型例题
(2)
xk1
3 xk
,(x)
3, x
( x* ) 1
(3)
xk 1
xk
1 4
(
x
2 k
3),( x)
x
1 (x2 4
非线性方程的数值求法二分法和简单迭代法.pptx

• 本章介绍方程的迭代解法,它既可以用来求解 代数方程,也可以用来解超越方程,并且仅限 于求方程的实根。
• 运用迭代法求解方程的根应解决以下两个问题:
• 确定根的初值; • 将进一步精确化到所需要的精度。
记笔记 第3页/共52页
7.1 二分法
二分法又称二分区间法,是求解非线性方程的近 似根的一种常用的简单方法。
第4页/共52页
确定有根区间的方法
• 为了确定根的初值,首先必须圈定根所在的范围,
称为圈定根或根的隔离。
• 在上述基础上,采取适当的数值方法确定具有一 定
精度要求的初值。
• 对于代数方程,其根的个数(实或复的)与其次 数
相同。至于超越方程,其根可能是一个、几个或
无
第5页/共52页
由高等数学知识知, 设f (x)为区间[a,b]上的 单值连续, 如果f (a)·f (b)<0 , 则[a,b]中至少 有一个实根。如果f (x)在[a,b]上还是单调地递 增或递减,则仅有一个实根。
二分法求根过程
设方程f(x)=0在区间[a,b]内有根,二分法就是逐 步收缩有根区间,最后得出所求的根。具体过程如下
① 取有根区间[a,b]之中点, 将它分为两半,分点
x0
ab 2
,这样就可缩小有根区间
y
y=f(x)
y=f(x)
a
x1
x* x0
a1
b1
a2
b2
b
a
第13页/共52页
x*
x0
x1
b
a1
再将 x1 代入式 x (x) 的右端, 得到 x2 (x1) , 依此类推, 得到一个数列 x3 (x2 ) …, 其一般表示
迭代法

第三章 线性代数方程组数值解法(迭代法)迭代法是解线性方程组的另一类方法,特别是适用于解大型稀疏线性方程组,如由某些偏微分方程数值解法中转化来的高阶线性代数方程组。
事实上,迭代法是求解多种数值问题的基本方法。
迭代法作为一种求解数值问题的通用方法,其基本思想是针对求解问题预先设计好某种迭代格式,从而产生求解问题的近似解的迭代序列,在迭代序列收敛于精确解的情况下,按精度要求取某个迭代值作为问题解的近似值,这就是求解数值问题的迭代法。
在这一章,我们的求解问题是线性方程组,下一章是非线性方程和非线性方程组,在不少其他问题中还会用到。
迭代法的内容包括下述两个主要方面: ① 针对具体问题构造具体的迭代格式。
② 研究迭代格式(序列)的收敛性并作误差分析。
3.1 解线性方程组迭代法的基本概念和基本迭代公式解线性代数方程组 b Ax = (3.1.1) (nn RA ⨯∈非奇异,0),,,(21≠=T n b b b b , Tn x x x x ),,,(21 =为解向量 )的迭代法的具体做法是: 把方程组(3.1.1)变形为等价形式)(x F x =我们这里只研究如上式的线性的形式 f Bx x +=(其中nn R B ⨯∈,nR f ∈ )例如把A分解为nn R M N M A ⨯∈-=,则( b M Nx Mx b x N M 11)(--+=→=- )如果令 N M B 1-=, b M f 1-= 这就是前面的迭代格式 f Bx x +=。
(对应的迭代公式是: ),,2,1,0()()1(n k f Bx xk k =+=+ 其中每一步迭代值仅依赖于前一步的迭代值。
称为单步迭代。
) 如果{)(k x }当 ∞→k 时有极限*x 存在, *)(lim x xk k =∞→则称迭代公式是收敛的;3.2 Jacobi 迭代法/Gauss —Seidel 迭代法这是解线性方程组的两种基本的方法。
1. Jacobi 迭代公式设方程组b Ax =中 nn ij Ra A ⨯∈=)(,ni R b b ∈=且 ),,2,1(0n i a ii =≠。
数值分析 迭代法 二分法和迭代法原理

lim | xk x* | 0
k
即 lim xk x *.
k
(b) | xk1 x*| L | xk x*|
| xk 1 xk | | ( xk 1 x*) ( xk x*) | xk x * xk 1 x * (1 L) xk x * 1 xk x * xk 1 xk 1 L 又 | xk1 xk | ( xk ) ( xk1 ) | '( ) | | xk xk1 | L | xk xk1 |
等价变换
x = (x) 称为迭代函数
(x) 的不动点x*
不动点迭代
具体做法:
从一个给定的初值 x0 出发,计算 x1 = (x0), x2 = (x1), … x 若 k k 0 收敛,即存在 x* 使得 lim x k x *,则由 的连续
k
xk 1 lim xk 可得 x* = (x*),即 x* 是 的不 性和 lim k k
根的估计
引理3.1(连续函数的介值定理) 设f(x)在 [a,b]上连续,且f(a) f(b)<0,则存在x*(a,b) 使f(x*)=0。 例3.1 证明x33x1 = 0 有且仅有3个实根,并 确定根的大致位置使误差不超过 =0.5。 解:
单调性分析和解的位置 选步长h=2, 扫描节点函数值 异号区间内有根
ek 1 xk 1 x* ( xk ) ( x*) '( )ek e 取极限得 lim k 1 '( x*) 0 线性收敛. k e k
数值分析--第三章--迭代法

数值分析--第三章--迭代法迭代⼀般⽅程:本⽂实例⽅程组:⼀.jacobi迭代法从第i个⽅程组解出xi。
线性⽅程组Ax=b,先给定⼀组x的初始值,如[0,0,0],第⼀次迭代,⽤x2=0,x3=0带⼊第⼀个式⼦得到x1的第⼀次迭代结果,⽤x1=0,x3=0,带⼊第⼆个式⼦得到x2的第⼀次迭代结果,⽤x1=0,x2=0带⼊第三个式⼦得到x3的第⼀次迭代结果。
得到第⼀次的x后,重复第⼀次的运算。
转化成⼀般的形式:(其中L是A的下三⾓部分,D是A的对⾓元素部分,U 是上三⾓部分)得到迭代公式:其中的矩阵B和向量f如何求得呢?其实,矩阵B的计算也很简单,就是每⾏的元素/该⾏上的对⾓元素⼆.Gauss-Seidel迭代法【收敛速度更快】这个可以和jacobi法对⽐进⾏理解,我们以第⼆次迭代为例(这⾥的第⼀次迭代结果都⽤⼀样的,懒得去换)从上表对⽐结果可以看出,Jacobi⽅法的第⼆次迭代的时候,都是从第⼀次迭代结果中,获取输⼊值。
上⼀次迭代结果[2.5,3.0,3.0],将这个结果带⼊上⾯式⼦1,得到x1=2.88,;将[2.5,3.0,3.0]替换成[2.88,3.0,3.0]带⼊第⼆个式⼦的运算,这⾥得到x2=1.95,所以把[2.88,3.0,3.0]替换成[2.88,1.95,3.0]输⼊第三个式⼦计算X3=1.0.这就完成了这⼀次的迭代,得到迭代结果[2.88,1.95,1.0],基于这个结果,开始下⼀次迭代。
特点:jacobi迭代法,需要存储,上⼀次的迭代结果,也要存储这⼀次的迭代结果,所以需要两组存储单元。
⽽Gauss-Seidel迭代法,每⼀次迭代得到的每⼀个式⼦得到的值,替换上⼀次迭代结果中的值即可。
所以只需要⼀组存储单元。
转化成⼀般式:注意:第⼆个式⼦中的是k+1次迭代的第⼀个式⼦的值,不是第k次迭代得值。
计算过程同jacobi迭代法的类似三.逐次超松弛法SOR法上⾯仅仅通过实例说明,Jacobi和Seidel迭代的运算过程。
简单迭代法

问题: 由g ( x k ) = x k + 1 , 求 x k + 1,然而 x k 是否是g(x)定义域上的值? 问题: 是否是g(x)定义域上的值? g(x)定义域上的值 定义4 保持有界, 且全在g(x)定义域内, g(x)定义域内 定义4 若迭代序列 { x k } 保持有界, 且全在g(x)定义域内,则 lim xk = x* . 则简单迭代 简单迭代法(3.2)称为适定 (3.2)称为适定的 若进一步有 k → ∞ 简单迭代法(3.2)称为适定的; 称为收敛 法(3.2)称为收敛的。 称为收敛的 迭代公式 x k + 1 = g ( x k ), k = 0,1,L ( 3 . 2 ) 当迭代(3.2)收敛时, 又是g(x)的连续点, g(x)的连续点 当迭代(3.2)收敛时,极限点 x * 又是g(x)的连续点,则 (3.2)收敛时 * = g( lim xk ) = g( x * ) x = limxk +1 = lim g ( xk ) k →∞
a ≤ x ≤b
x ∈[ a , b ]
邻近讨论, 因此有局部收敛定理4 实际计算中往往只在根 x 邻近讨论, 因此有局部收敛定理4: 若 ( 定理4 局部收敛定理) 定理4 局部收敛定理) g ( x ) 在不动点 x * 的 δ 邻域满足 x ∈ [ x* δ , x* + δ ], 有 g ( x ) g ( x * ) ≤ L x x * ,( 3 . 7 ) 0 < L < 1, * x0 ∈ [ x* δ , x* + δ ], 由 xk +1 = g( xk ) 产生的序列{ x k } 收敛于 x , 则 x* xk ≤ Lk x* x0 , k = 0,1,L. ( 3 .8 ) 且有误差估计: 且有误差估计: 证明: 证明:k ≥ 1, x* xk = g( x* ) g( xk 1 ) ≤ L x* xk 1 ∴ x* x1 ≤ L x* x0 ≤ Lδ < δ,
简单迭代法

定理中条件2最重要。实际上,假定在根 的某邻域 x
<上 (x) L 1 ,则对此邻域上任意x (x) (x) () L x x
说明 (x)也在此邻域,条件1自然成立。
实际问题中满足条件2的区间[a,b]难以求得。但若 (x)
已知根的存在区间[a,b],自然可取中点c作
为根的精略近似值x0。为求逐次逼近 的
近似值x1,x2,,自然希望使用相同公式
xk+1= (xk),k=0,1,2,
(5-3)
利用此式求根近似值的方法称为简单迭代法。
{Xk} 称为迭代序列, (x)称 为迭代函数,
上式称为迭代格式。显然,如果迭代序列
xmk xk
xmk xmk1 xmk1 xmk2 xk1 xk
(Lm Lm1 L) xk xk1
L 1 L
xk
xk1
9
令m ,则得公式(5-6).
序列{xk}收敛于 时,如果
一
lim
k
xk1 xk p
3
作迭代格式 xk+1=(xk3-5)/2 令x0=2.5,得迭代序列:x1=5.3125,x2=72.46643066, X3=190272.0118,x4=3.444250536 1016 ,x5=2.042933398 1046,计算x6时溢出
简单迭代收敛定理 设迭代函数(x)满足条件: 1 当x[a,b]时(x) [a,b]
解法二迭代序列超线性收敛。进一步可证
2( )
24( 3 15 2 (3 2 2)3
2 )
1.366771471
0
故解法二平方收敛。一般收敛阶数p越大,迭代序列 收敛越快;线性收敛时常数c(称渐进常数)必满足 0<c<1;常数c越小,收敛也越快。
数值计算迭代法

习题二3、证明:当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实根x *,并分别用上述迭代法求满足于精度要求︱X k+1-X k ︱≤10-5的近似根。
解:证明:{先用迭代法求f(x)=x 3+4x 2-10=0的根。
(a )对x 3+4x 2-10=0变形有:4x 2=10-x 3所以:X=21310X - 则相应的迭代公式为:X k+1=21k X 310- 取:X 0=1.5,根据计算可以看出看,我们认为得到的迭代序列是收敛的。
}(此行可忽略){ 由 f(x)=x 3+4x 2-10=0得迭代方程:X=21310X -=g (x ) 先证明在区间【1,2】上x=g (x )有实根。
由于[1,2]上g ‘(x )存在,所以g (x )连续。
作Q (x )=x-g(x),则Q(x)在[1,2]上也连续。
由定理1条件2有:Q (1)=1-g (1)≤0,Q (,2)=1-g (2)≥0故存在x *∈[1,2]使Q *(x )=0,即x *= Q *(x )又因为,x *是方程f(x)=x 3+4x 2-10=0在区间[1,2]内的唯一实根,(由定理一条件2)对任意的x 0∈[1,2]时,X k ∈[1,2](k=0,1,2,3…)因为:x *- X k+1=g (x *)-g (X k )=g ‘(h k )(x *- X k )故由条件1知:︱X *-X k+1︱≤L ︱X *-X k ︱(k=0,1,2,3…)于是有:0≤︱X *-X k ︱≤L k ︱X *-X 0︱,0<L <1,立即可知:lim (k 趋于无穷)︱X *-X k ︱=0,从而lim (k 趋于无穷)X k= X *。
所以当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都是由迭代法X k+1=g (X k )产生的迭代序列{ X k }收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实根x *。
简单迭代法

简单迭代法
简单迭代法是一种常用的数值计算方法,通常用于求解方程的近似解。
它是一种基于迭代的算法,通过不断逼近方程的解来得到一个足够精确的近似解。
在实际应用中,简单迭代法的可靠性、效率和实用性都得到了广泛的认可和应用。
简单迭代法最常用的形式是不动点迭代法,其基本思路是通过将方程的解表示为函数的不动点来进行迭代。
具体实现方法是,从一个起始点开始,将该点代入函数计算,得到一个新的点,然后将新的点再代入函数中计算,这样不断进行下去,直到得到一个满足要求的近似解为止。
在实际应用中,简单迭代法的使用需要一定的条件限制,如函数必须具有连续性和单调性等等。
此外,迭代过程的收敛性也是需要关注的一个重要问题。
一般而言,只有当函数的导数小于1时,才能保证迭代的收敛性。
因此,在使用简单迭代法求解方程时,需要对函数的特性进行仔细的分析和评估,以确保迭代过程的有效性和准确性。
简单迭代法在实际应用中具有广泛的用途和应用场景。
例如,在工程设计中,可以利用简单迭代法对复杂的函数进行求解,以确定合适的参数和方案。
此外,在金融领域、物流领域和医疗领域等领域,简单迭代法也被广泛应用于问题求解和决策分析中。
总之,简单迭代法作为一种常用的数值计算方法,为我们解决实际问题和提高工作效率提供了有力的支持和保障。
在今后的工作中,
我们应注重加强对简单迭代法的学习和应用,进一步挖掘其潜力和价值,为推动科技进步和社会发展做出更大的贡献。
数值计算简单迭代法

数值计算简单迭代法一、数值计算简单迭代法是啥呢?嘿呀,数值计算简单迭代法这个东西呀,就像是一个小魔法在数字世界里玩游戏呢。
简单来说呢,它就是一种处理数值计算的方法,通过不断地迭代,也就是一次又一次地重复一些计算步骤,来逐渐接近我们想要的答案。
想象一下,你要找一个宝藏,但是你不知道具体在哪里,只知道大概的方向。
你就按照这个大概方向走一步,然后看看离宝藏是不是更近了,如果更近了,那就再按照新的方向走一步,这个不断调整方向走步的过程就有点像简单迭代法。
二、简单迭代法的原理这方法的原理其实不复杂啦。
它基于一个初始值,这个初始值就像是我们找宝藏的起始点。
然后呢,有一个迭代公式,这个公式就像是我们每次调整方向的规则。
我们把初始值代入这个公式,得到一个新的值,然后再把这个新的值又代入公式,就这样不断地代入、计算,新的值就会越来越接近我们想要的准确答案。
就好比我们从一个有点模糊的画像开始,然后每次根据一些规则修改这个画像,最后得到一个非常清晰准确的画像一样。
三、简单迭代法的应用场景在实际生活中呀,简单迭代法有很多用处呢。
比如说在工程计算里,如果要计算一个复杂结构的受力情况,就可以用这个方法。
从一个大概的受力假设开始,然后通过迭代计算,得到越来越准确的受力数值。
还有在金融领域,计算一些复杂的投资收益模型的时候,也可以用到。
先设定一个初始的投资收益预估,然后根据市场的一些规律公式进行迭代,最后得到比较准确的收益数值。
四、简单迭代法的局限性不过呢,这个方法也不是完美的啦。
有时候如果初始值选得不好,就可能导致计算结果一直偏离正确答案,就像我们找宝藏的时候,如果起始点就错得很离谱,那可能就越走越远了。
而且,有些复杂的问题,可能迭代的次数会非常多,这样就会花费很多的计算时间和资源。
五、如何提高简单迭代法的准确性那要怎么让这个方法更准确呢?首先就是要尽可能地选一个比较靠谱的初始值。
这个初始值最好是根据一些经验或者先验知识来确定。
第三章迭代法

后验估计
先验估计
算法设计中迭代结束条件: 近似使用|xk-xk-1|<
不动点原理
例3.3 x3x1
3 k 1
(1) xk x
1 , g ( x) x -1,
1 = 0 ,[1,2], x0=1.5, 103 2 3
n
Jacobi迭代G = -D-1(L+U) (直接证||G||<1) Gauss-Seidel迭代, G (L D)1U ~ 令 y Gx ,
先证存在某x, ||x|| =1, 使||Ĝ|| =||y|| 再证当||x|| =1, 有||y|| <1
Jacobi迭代(直接证||G||<1)
件是否可靠?
计算公式矩阵形式
和分解:
A=L(下三角)+D (对角) +U (上三角)
迭代
x(k)= Gx (k-1) + f, k=1,2,…
Jacobi迭代
G = -D-1(L+U) = I-D-1A f = D-1 b
Gauss-Seidel迭代
G = - (L+D)-1 U f = (L+D)-1 b
证明思路:(1)解的存在唯一性; (2)解的收敛 性;(3)误差估计式(习题)。
直接从Ax=b判断
aij ), 推论 若A按行严格对角占优( aii j 1, j i 则解Ax=b的Jacobi迭代和Gauss-Seidel迭代 均收敛。 证明思路:用定理3.4. A严格对角占优, 则 无穷大范数 ||G||<1
(0) (0) x3 1 ,精度要求 =10-3。 初值取 x1(0) x2 计算得 ||x(6) x(5)||10-3.
简单迭代法

(1)当迭代函数(x)满足什么条件时,相应的迭代公式 xk+1=(xk)才收敛?
(2)当迭代收敛时,迭代值的误差如何估计? 我们也不能无穷迭代下去,只能迭代有限次,所以需 要估计迭代值的误差,以便适时终止迭代。
迭代格式有多种,如何选择迭代函数才能保证迭 代法的数列收敛?有如下定理:
计式,得:
x* xk
Lk 1 L
x1 x0
计算方法二③
16/32
注1:定理2.1给出了一个收敛的迭代数列{xk}的误差 估计式。利用它,在给定精度ε>0后,只要计算到
L 1 L
|
xk
xk 1
|
就有:|x*-xk|<ε
即:只要前后两次迭代值的差值足够小,就 可使近似值xk达到任意的精度要求。
计算方法二③
记 x3=(x2) 如此反复计算…… xk+1=(xk) ,(k=0,1,2,…)
8/32
当{xk}收敛于a,而(x)是连续函数时,那么a
就是所求方程的根x* 。这是因为
a
lim
k
xk 1
lim
k
(
xk
)
(lim k
xk
)
(a)
a即是(x)的不动点。 即:x*=a
一般地,我们称(x)为方程f(x)=0的迭代函数,上
述求根的方法,称为简单迭代法。
迭代函数(x)的构造方法是多种多样的。
计算方法二③
5/32
例1 用迭代法求方程x3-x-1=0在x=1. 5附近的根。 解:先将原方程改写为如下两种等价形式:
x=1(x) 3 x 1
数值计算方法第三章 线性方程组迭代法

0,1,2,
取x1(0) 0, x2(0) 0,计算结果如下:
k0
x (k) 1
0
x (k) 2
0
1
2
3
4
0.66667 0.50000 0.61111 0.58333
0.50000 0.16667 0.25000 0.19445
5
6
7
8
9
0.60185 0.59722 0.60031 0.59954 0.6005
从而得迭代式 x(k1) (D L)1Ux (k) (D L)1 b, (k 0,1,2, )
上式中矩阵 M (D L)1U 为Gauss-Seidel迭代矩阵。
输入:A,b, n,
置初值: k 0; xi 0(i 1,L , n)
k k 1;e 0
3xx1 12xx22
2 1
精确到3位有效数字。
解 Gauss Siedel迭代格式为
x (k 1) 1
x (k 1) 2
(2 x2(k) ) / 3 (1 x1(k1) ) / 2
,
k
0,1,
2,L
取x1(0)
0,
x (0) 2
0, 计算结果如下:
0
101
0
1
10
2
1 0 0 101 1 1 5
0 0.1 0.2 0.1 0 0.2
0.2 0.2 0
取初值x (0) (0,0,0)T 代入迭代式
x(1) Bx (0) g (7.2,8.3,8.4)T x(2) Bx(1) g (9.17,10.70,11.50)T ,如此下去, x(9) Bx (1) g (10.9994 ,11.9994 ,12.9992 )T
数值分析3迭代法

不动点迭代产生序列的收敛速度
数列的 r 阶收敛概念 设 lim x n x * , 若存在 a>0 , r>0 使得
n
lim
| x n 1 x * | | x n x* |
r
n
a
则称数列{xn} r 阶收敛.
特别: (1) 收敛阶r=1时,称为线性收敛; (2) 收敛阶r>1时,称为超收敛; (3) 收敛阶r=2 时,称为平方收敛
序列的收敛阶数越高,收敛速度越快
10/16
例2.3 方程 x3+10x-20=0,取 x0 = 1.5, 证明迭代法
x n 1 20 /( x 10 )
2 n
是线性收敛
x + 1 0 x -2 0
3
证:令 f (x) = x3 + 10x –20, 绘出 y = f(x) 图形可知 方程的根 x*≈1.5, 令
( x)
10 /( x 4 )
x n 1 ( x n ) x 0 1 .5
( n = 0,1,2,……)
4/16
fi=inline('0.5*sqrt(10-x^3)'); x0=1.5;er=1;k=0; while er>0.00001 x=fi(x0); er=abs(x-x0); x0=x;k=k+1; end fi=inline('sqrt(10/(4+x))'); x0=1.5;er=1;k=0; while er>0.00001 x=fi(x0); er=abs(x-x0); x0=x;k=k+1; end
3/16
例2.2 方程 x3 + 4x2 – 10 = 0 在 [1, 2] 上有一
第3节 简单迭代法

求
y x
分别就下列四种情况说明几何意义: 从点 p0 ( x0 , g( x0 )) 出发,作平行于x轴 的直线交y=x于点 ( g( x0 ), g( x0 )), 过该点 说明两点: { xk } 中 xk 的产生。 作平行于y 轴的直线交y =g(x)于点 (1) { xk } 何时收敛,何时发散。 p1 ( g( x0 ), g( g( x0 ))), 即 p1 ( x1 , g( x1 )). (2)
* x 0 x0 x1 x2 x g ( x ) 1 y=g(x)
g( x ) 1
*
* 0 x0 x2 x x1 p
0
x
p0 p1 x1 x0 x*
迭代法不收敛
x x0 x*
p1
y=g(x)
x
x1
定理 考虑方程 x = g(x), g(x)C[a, b], 若
( I ) 当 x[a, b] 时, g(x)[a, b]; ( II ) 0 L < 1 使得 | g’(x) | L < 1 对 x[a, b] 成立。 则任取 x0[a, b],由 xk+1 = g(xk) 得到的序列 x k 0 收 k 敛于g(x) 在[a, b]上的唯一不动点。并且有误差估计式:
| xk 1 xk | | x * xk ( x * xk 1 ) | | x * xk | | x * xk 1 | | x * xk | L | x * xk | 可用 | xk 1 xk | 来 Lk 控制收敛精度 | x1 x0 | ? ⑤ | x * xk |
③ 当k 时, xk 收敛到 x* ?
| x * xk | | g( x*) g( xk 1 ) | | g(ξ k 1 ) | | x * xk 1 |
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y=x3
y=x +1
2017/8/5
数值计算方法
8
课程内容 §1 根的搜索与二分法
(2) 方程 f(x)=x4-4x3+1=0.
300
由f(x)= 4x2(x-3)=0 得驻点 x1=0, x2=3。
250 200 150
y=4x -1 y=x
4
3
该二点将实轴分为三个区间:
(-∞, 0), (0, 3),(3, +∞)
2017/8/5 数值计算方法 5
课程内容 §1 根的搜索与二分法
求隔根区间的一般方法 若 f(x)在[a,b]内连续, 且 f(a) ·f(b)<0, 则 f(x)=0 在[a,b]内必有根; 若f(x)在[a,b]内还严格 单调, 则f(x)=0在[a,b]内只有一根, 据此可得求 隔根区间的两种方法。
x (-∞,0) 0 (0,3) 3 (3,4) 4 (4,+∞) 0 - 0 + + + f(x) f (x) ↘ + ↘ - ↗ + ↗ (0,3) (3,4) 隔根区间
2017/8/5 数值计算方法 10
课程内容 §1 根的搜索与二分法
2. 逐步搜索法
从区间[a, b]的左端点 a 出发, 按选定的步长
若 f ( x 0) · f(b)<0, 则x*∈(x0 , b), 令 a1=x0, b1=b。
不论出现哪种情况, (a1, b1)均为新的有根区间, 它 的长度只有原有根区间长度的一半, 达到了压缩有根 区间的目的。
2017/8/5 数值计算方法 15
课程内容 §1 根的搜索与二分法
对压缩了的有根区间, 又可实行同样的步骤, 再压 缩。如此反复进行, 即可的一系列有根区间套
m
m 1
am1 x am (a0 0), (1.3)
可以通过以下结论事先确定实根的上下界。关于方 程(1.3) 根的绝对值( 即根模) 的上下界有如下结论:
(1) 若 max{| a1 |, | a2,|, ..., | am | }, 则方程(1.3) 的 根的绝对值小于 1 ;
100 50 0 0 0.5 1 1.5 2 2.5 3
3.5
4
4.5
2017/8/5
数值计算方法
9
课程内容 §1 根的搜索与二分法
f(x)在此三个区间上的符号分别为“-”、“-”、“+”, 又知 f(-∞)>0, f(0)=1>0, f(3)=-26<0, f(+∞)>0。 可见f(x)仅有两个实根, 分别位于(0, 3), (3, +∞), 又f(4)=1>0, 所以第二根的隔根区间可缩小为(3, 4)。 以上分析可用下表表示
1 (2) 若 max{1, | a1 |, | a1 |, ..., | am1 | } , 则方 | am | 1 程(1.3) 的根的绝对值大于 。 1
2017/8/5 数值计算方法 12
课程内容 §1 根的搜索与二分法
例2 求方程x3-3.2x2+1.9x+0.8=0的隔根区间。 解 用逐步搜索法。设方程的根为 ,因为
[a , b] [a1 , b1 ] [an , bn ]
由于每一区间都是前一区间的一半,因此区间[an
, bn]的长度为
1 bn an n (b a ) 2 若每次二分时所取区间中点都不是根,则上述过程将
无限进行下去。当 n→∞ 时,区间必将最终收缩为一 点x* ,显然x*就是所求的根。
h=(b-a)/n 一步步向右搜索,若
f(a+jh)· f(a+(j+1)h)<0 (j=0,1,2,)
则隔根区间[a+jh, a+(j+1)h]内必有根。搜索过程也可
从b开始,这时应取步长 h<0。
2017/8/5 数值计算方法 11
课程内容 §1 根的搜索与二分法
对于m 次代数方程
f ( x) a0 x a1 x
非线性方程的近似求根方法.
2017/8/5 数值计算方法 1
课程内容 第三章 线性方程组的数值解法
本章内容:
§1 根的搜索与二分法
§2 迭代法及其收敛性
§3 迭代收敛的加速方法
§4 牛顿迭代方法
§5 弦截法与抛物线法
§6 解非线性方程组的牛顿迭代法
2017/8/5
数值计算方法
2
课程内容 §1 根的搜索与二分法
其中系数ai(i=0,1,,n)为实数。
2017/8/5 数值计算方法 3
课程内容 §1 根的搜索与二分法
方程f(x)=0的根x*,又称为函数f(x)的零点,它使得 f(x*)=0,若f(x)可分解为
f(x)=(x-x*)mg(x),
其中m为正整数,且g(x*)≠0。 当m=1时,则称x*为单 根,若m>1称x*为(1.1)的m重根,或x*为函数f(x)的m 重零点。若x*是f(x)的m重零点,且g(x)充分光滑,则
越小, 这时以区间内的某个值作为根的近似值
就越精确。但h 越小, 计算量就越大。因此, 应 考虑如何在此基础上找出更精确的近似根。
2017/8/5 数值计算方法 14
课程内容 §1 根的搜索与二分法
二分法 设f(x)在区间[a, b]上连续, f(a)· f(b)<0, 则在[a, b] 1 内有方程的根。取[a, b]的中点 x0 (a b) , 2 将区间一分为二。若 f (x0)=0, 则x0就是方程的 根, 否则判别根 x*在 x0 的左侧还是右侧。 若 f(a) · f(x0)<0, 则x*∈(a, x0), 令 a1= a, b1=x0;
4
课程内容 §1 根的搜索与二分法
n=1,2时方程的根是大家熟悉的,n=3,4时虽有求 根公式但比较复杂,可在数学手册中查到,但已不适 合数值计算,而n≥5时就不能用公式表示方程的根。 因此,通常对n≥3的多项式方程求根与一般连续函数 方程(1.1)一样都可采用迭代法求根。 迭代法要求给出根x*的一个近似,若f(x)∈C[a, b]且f(a)f(b)<0,根据连续函数性质中的介值定理可 知方程f(x)=0在(a, b)内至少有一个实根,这时称[a, b]为方程(1.1)的有根区间,通常可通过逐次搜索法求 得方程(1.1)的有根区间。
根的搜索 本章主要讨论单变量非线性方程 f(x)=0 (1.1) 的求根问题,这里x∈R, f(x)∈C[a, b]。在科学与工 程计算中有大量方程求根问题,其中一类特殊的问 题是多项式方程
f ( x ) a0 x a1 x
n
n 1
an1 x an (a0 0), (1.2)
2017/8/5
数值计算方法
6
课程内容 §1 根的搜索与二分法
1. (描)做图法
画出 y=f(x) 的草图, 由f(x)与横轴交点的大概位 置来确定隔根区间; 或者利用导函数f(x)的正、负与 函数f(x)的单调性的关系确定根的大概位置。
若f(x)比较复杂, 还可将方程f(x)=0化为一个等价 方程(x)=(x), 则曲线y=(x)与y=(x)之交点A(x*,y*) 的横坐标 x*即为原方程之根, 据此也可通过作图求得 x*的隔根区间。
若 f(a)· f((a+b)/2)<0, 则以(a+b)/2代替b ,否则以 (a+b)/2代替a。
反复执行步骤2和步骤3,直到区间[a, b]长度小于 允许误差 ε,此时中点(数值计算方法 a+b)/2即为所求近似根。 2017/8/5 20
课程内容 §2 迭代法及其收敛性
不动点迭代法 将方程f(x)=0改写为等价方程形式 x=(x).
2017/8/5 数值计算方法 7
课程内容 §1 根的搜索与二分法
例1 判别下列方程有几个实根,并求隔根区间. (1) f(x)=x3-x-1=0, (2) f(x)=x4-4x3+1=0.
5 4 3 2 1 0 0 0.5 1 1.5 2 2.5 3
解 (1)将方程变形为 x3=x+1 绘曲线图 y=x3 及 y=x+1 由图可知, 方程只有一个实 根x*(1, 1.5),所以(1, 1.5) 即为其隔根区间.
课程内容 第三章 线性方程组的数值解法
例如代数方程 超越方程 x5-x3+24x+1=0, sin(5x2)+e-x=0.
对于不高于4次的代数方程已有求根公式,而 高于4次的代数方程则无精确的求根公式,至于超 越方程 就更无法求出其精确的解,因此,如何求
得满足一定精度要求的方程的近似根也就成为迫
切需要解决的问题,为此,本章介绍几种常见的
(2.1)
若要求x*满足f(x*)=0,则x*=(x*);反之亦然,称x* 为函数(x)的一个不动点. 求f(x)的零点就等于求 (x)的不动点,选择一个初始近似值x0,将它代入 (2.1)右端,即可求得
x1=(x0).
2017/8/5 数值计算方法 21
1 2
n 1
(b a)
1 2
n 1
(1.5 1)
1 2Βιβλιοθήκη n 2 0.0052 1 5.6, 取n=6, 按二分法计算过程 由此解得 n lg 2 见下表, x6 = 1.3242 为所求之近似根。
2017/8/5 数值计算方法 18
课程内容 §1 根的搜索与二分法
1 max{1, | 3.2 |, | 1.9 |} 4 | 0.8 | 1 | | 1 4.2 所以 0.2 1 即 4.2 0.2 和 0.2 4.2 取n =8,h=0.5 ,搜索得到隔根区间为: