非线性方程的不动点迭代方法研究

非线性方程的不动点迭代方法研究
非线性方程的不动点迭代方法研究

重庆文理学院

2011-2012下学期《数值方法》课程论文

题目:非线性方程的不动点迭代方法研究

中国﹒重庆

2012 年 06 月

通过从现实的一个球体的实际问题引出对非线性方程的不动点迭代研究,在理解迭代规则1()k k p g p +=的基础上通过对迭代法和不动点迭代法的基本思想即找()0f x =的同解变形()x g x =,然后运用初值0x 迭代,求出误差范围内的近似解1k x p +≈。运用函数连续性证明不动点的存在性和运用中值定理和均值定理证明不动点唯一性,进而推导出不动点迭代法的推导步骤。然后又用均值定理和数学归纳法证明出收敛性,并在此基础上引出误差边界。再通过对开题提出的球体问题案例的求解,进一步来加深非线性方程对不动点迭代法实证说明,由此联系到不动点迭代法在其他一些领域如物理和工程等的运用。

不动点迭代式(2.2)通常只有线性收敛,有时甚至不收敛,进而在原有的基础上拓展到加速迭代法的收敛性的讨论通常,从而对Steffensen 加速迭代和Aitken (埃特金)加速迭代的讨论。

关键字 不动点迭代; 收敛性; Steffensen 加速迭代; Aitken 加速迭代

1 问题的提出--------------------------------------------------------1

2 算法的思想--------------------------------------------------------1 2.1迭代法的基本思想----------------------------------------------1

2.2 不动点迭代法的基本思想----------------------------------------2

3 算法的推导及步骤--------------------------------------------------2 3.1 算法的推导----------------------------------------------------2

3.2 算法的步骤----------------------------------------------------3

4 算法的分析--------------------------------------------------------4 4.1 收敛性分析----------------------------------------------------4 4.2 误差性分析----------------------------------------------------6

4.3 稳定性分析----------------------------------------------------7

5 算法的实现--------------------------------------------------------7 5.1 案例----------------------------------------------------------7 5.2 求解过程------------------------------------------------------7

5.3 不动点迭代法代码及输出结果------------------------------------8

6 运用举例---------------------------------------------------------10

7 知识拓展---------------------------------------------------------10 7.1 Steffensen加速迭代-------------------------------------------10 7.2 Aitken(埃特金)加速迭代法-------------------------------------11

1 问题的提出

在现实生活当中我们会遇到很多关于诸如像球体的物理和工程问题,例如:

球体的半径为r ,并浸入水中,深度为d ,假设这个球由由一种密度为ρ=0.638的长叶松构成,且它的半径r =10cm 。当球浸入水中时,它的进水的质量为多少?而这些现实中的问题的解决都要涉及到求解方程的根、线性和非线性方程组以及微分方程的数值解。 如上例问题的解决:

当一个球以深度d 浸入水中时,所排开水的质量w M 为:

2

220(3)(())3

d x w d r d r x r d M ππ---==? (1.1)

而球体的质量为:

34/3b r M πρ= (1.2)

根据阿基米德定律有:

b w M M = (1.3) 由方程(1.1)、(1.2)、(1.3)联立得: 323(34)03

d d r r πρ-+=

而当r=10, ρ=0.638时,方程为:

23(255230

)

03

d d π-+=

此时这个物理学中的实际问题就变为了一个3次非线性方程23255230y d d =-+的根,在根据具体现实情况舍去不合理的根。

要解决如上的一些实际问题,就需要求解方程的根、线性和非线性方程组的解以及微分方程的解。计算机科学中的一个基本要素就是迭代,迭代技术用来求解方程的根、线性和非线性方程组的解以及微分方程的解,而不动点迭代法就是迭代法的一种基本方法。在此我们仅对非线性方程的不动点迭代进行研究。

2 算法的基本思想

2.1 迭代法的基本思想

迭代算法是数值计算方法中一种逐次逼近的方法,首先将方程()0f x =改写成某种等价的形式,由等价形式构造相应的迭代公式然后选取方程的某个初值近似

根o x 代入公式反复校正根的近似值,直到满足精度为止。

2.2 不动点迭法代的基本思想

将非线性方程()0f x =化为等价形式:

()x x ?= (2.1)

***()()0f x x x ?=?=

称*x 为函数()x ?的一个不动点,给定初始近似值o x ,可以得到0()x η?=,如此反复,构造迭代公式:

(1)(),0,1,2,3......k k x x k ?+== (2.2) 此处()x ?为迭代函数。如果对任何初值[]0,x a b ∈,由(2.2)得到的序列{}k x 有极限

*lim k x x x →∞

=

则称迭代公式(2.2)收敛,且**()x x ?=是()x ?的不不动点,故(2.2)就是不动点迭代法

3 算法的推导及步骤

3.1 算法的推导

3.1.1 不动点的存在性推导及证明

设g 是一个连续函数,且{}0n n p ∞

=是由不动点迭代生成的序列。如果

l i m n x p p →∞

=,则p 是()g x 的不动点。

证明:

如果lim n x p p →∞

=,则1lim n x p p +→∞

=。根据这个结论,g 的连续性和1()

n n p g p +=存在如下关系:

1()(lim )lim ()lim n n n x x x g p g p g p p p +→∞

→∞

→∞

==== (3.1)

因此,p 是()g x 的不动点。

3.1.2 不动点的唯一性推导及证明

设函数[],g C a b ∈。如果对于所有[],x a b ∈,映射()y g x =的范围满足

[],y a b ∈,则函数g 在[],a b 内有一个不动点。 (1)

此外,设'()g x 定义在(,)a b 内,且对于所有(,)x a b ∈,存在正常数1K <,使得,'1()g K x ≤<,则函数g 在[],a b 内有唯一的不动点p 。 (2) 证明:

对于命题(1)

如果()g a a =或()g b b =,则断言为真;否则()g a 必须满足()(,]g a a b ∈,()g b 的值必须满足()[,)g b a b ∈。表达式()()f x x g x ≡-有如下特性: ()()0f a a g a ≡-<且()()0f b b g b ≡->

对()f x 应用中值定理,而且由于常量0L =,可推断出存在数P ,且(,)P a b ∈,满足()0f P =。因此,()P g P =,且P 是'()g x 的不动点。

对于命题(2)

必须证明结果是唯一的。采用反证法,设存在两个不动点1P 和2P 。根据均值定理,可推断出存在数(,)d a b ∈,满足: '2121

()()()g P g P g d P P -=

- (3.2) 根据假设,有11()g P P ==且22()g P P ==,对3.2式的右边进行化简可得 '21

21

()1P P g d P P -=

=- 但是这与命题(2)中假设在(,)a b 内有'1()g x <矛盾,因此不可能存在两个不动点。所以,在命题(2)的假设条件下,()g x 在[],a b 内有一个唯一的不动点P 。

3.2 算法的步骤

(1)确定方程()0f x =的等价形式()x g x =,为确保迭代工程的收敛,要求

()g x 满足李普希茨条件(或'()1g x q ≤<); (2)选取初始值0x ,按公式

(1)(),0,1,2,3......k k x g x k +==进行迭代; (3)若1k k x x ε+-<,则停止计算1k x x +≈。

4 算法分析

4.1收敛性分析

设有:

①g ,'[,]g C a b ∈; ②K 是一个正常数; ③0(,)p a b ∈;

④对于所有[,]x a b ∈,有()[,]g x a b ∈。

如果对于所有[,]x a b ∈,有'1()g K x ≤<,则迭代1()n n p g p -=将收敛到唯一的不动点[,]P a b ∈。在这种情况下,P 称为吸引(attractive )不动点。 (3)

如果对于所有[,]x a b ∈,有'1()g x >,则迭代1()n n p g p -=将不会收敛到P 这种情况下,P 称为排斥(repelling )不动点,而且迭代显示出局部发散性。(4)

批注:

①在命题(4)中假设0p P ≠。

②因为函数g 在包含P 的一段间隔中是连续的,可在命题(3)和命题(4)中分别利用更简单的判别条件'1()g K x ≤<和'1()g x >。 证明:

对于命题(3)

首先要证明点{}0n P ∞

=都位于(,)a b 内。从0p 开始,根据均值定理,可推导出存在一个值0(,)c a b ∈满足

1000'()()()()P p g P g p g c P p -=-=-

0000'()g P p K P p P p c =-≤-<- (3.3) 因此,1p 比0p 更接近P ,且1(,)p a b ∈如图1.一般情况下设1(,)n p a b -∈,则:

1011'()()()()n n P p g P g p g c P p ---=-=-

1111'()n n n n g P p K P p P p c ----=-≤-<- (3.4) 因此,(,)n p a b ∈,而且可归纳出所有的点{}0n n p ∞

=位于(,)a b 内。

图1、P ,0p ,1p ,0P p -和1P p -之间的关系

为完成命题(3)的证明,需要证明如下表达式成立:

lim 0n x P p →∞

-= (3.5)

首先,用归纳法的证明可建立如下不等式:

0n n P p K P p -≤- (3.6) 当1n =时满足关系式3.3。利用归纳假设10n n P p K P p --≤-和关系式3.4的思路,可得到:

110n n n n n P p K P p KK P p K P p ---≤-≤-=- 这样,通过归纳法可以得出,所有的n 满足不等式3.6.由于01K <<,所以当n 趋于无穷大时,项n K 趋近于0.因此

00lim lim 0n n n n P p K P p →∞

→∞

≤-≤-= (3.7)

0P p -的极限压缩在左右两边的0之间,所以可得出lim n n P P →∞

=,且根据前面定

理3.1,迭代1()n n p g p -=收敛到不动点P 。因此命题(3)得证。

对于命题(4)

首先要证明点{}0n P ∞

=都位于(,)a b 内。从0p 开始,根据均值定理,可推导出存在一个值0(,)c a b ∈满足:

1000'()()()()P p g P g p g c P p -=-=-

0000'()g P p H P p P p c =->-=-(3.8) 因此,0p 比1p 更接近P ,且1(,)p a b ∈,一般情况下设1(,)n p a b -∈,则:

1011'()()()()n n P p g P g p g c P p ---=-=-

1111'()n n n n g P p H P p P p c ----=->-=-(3.9) 因此,(,)n p a b ∈,而且可归纳出所有的点{}0n n p ∞

=位于(,)a b 内。为完成命题(3)的证明,需要证明如下表达式成立:

lim n x P p →∞

-=∞ (3.10)

首先,用归纳法的证明可建立如下不等式:

0n n P p H P p -≥- (3.11)

当1n =时满足关系式3.8。利用归纳假设10n n P p H P p --≥-和关系式3.9的思路,可得到:

110n n n n n P p H P p HH P p H P p ---≥-≥-=-

这样,通过归纳法可以得出,所有的n 满足不等式3.11.由于01K <<,所以当n 趋于无穷大时,项n K 趋近于∞。因此

0lim lim n n n n P p H P p →∞

→∞

-≥-=∞ (3.12)

0P p -的极限延伸到右边的∞之外,

所以可得出lim n n P →∞

=∞。因此命题(4)得证。

4.2 误差分析 设函数g 满足:

①g ,'[,]g C a b ∈; ②K 是一个正常数; ③0(,)p a b ∈;

④对于所有[,]x a b ∈,有()[,]g x a b ∈。

当用n p 去近似P 时,引入误差边界如下:

0n n P p K P p -≤- 对于所有1n ≥ 0

1n n K P p P p K

--≤- 对于所有1n ≥

4.3稳定性分析

在原有不动点迭代法的基础上将原有的初始值0x 修改为0x x +?然后按照迭代规则:

(1)(),0,1,2,3......k k x g x k +==

求出迭代通项最后比较其最后的所得值与真实值满足误差范围内内则其算法是稳定的即:

1k x x ε+-<

5 算法实现

5.1案例

在此案例就已论文开头提出的关于物理球体问题为例:球体的半径为r ,并浸入水中,深度为d ,假设这个球由由一种密度为ρ=0.638的长叶松构成,且它的半径r =10cm 。当球浸入水中时,它的进水的质量为多少?

5.2求解过程

当一个球以深度d 浸入水中时,所排开水的质量w M 为:

2

220(3)(())3

d x w d r d r x r d M ππ---==? (5.1)

而球体的质量为:

34/3b r M πρ= (5.2)

根据阿基米德定律有:

b w M M = (5.3) 由方程(5.1)、(5.2)、(5.3)联立得: 323(34)03

d d r r πρ-+=

而当r =10, ρ=0.638时,方程为:

23(255230

)

03

d d π-+=

此时这个物理学中的实际问题就变为了一个3次非线性方程23255230y d d =-+的根。对于此方程的求解可以用到不动点迭代法求解。解方程步骤如下: 首先有题意可知起[0,20]d ∈

①方程230255230d d =-+的等价形式为:

()d g d ==

当[0,20]d ∈时:

'

()1g d =

<

②选取初始值0x =12然后按公式(1)(),0,1,2,3......k k x g x k +==进行迭代。 ③若121(0.1)k k d d ε+-<=,则停止计算1k d d +≈。

5.3 不动点迭代法代码及输出结果 代码:

function [k,p,err,P]=fixpt(g,p0,tol,max1)

P(1)=p0;

for k=2:max1

P(k)=feval(g,P(k-1)); err=abs(P(k)-P(k-1));

relerr=err/(abs(P(k))+eps); p=P(k);

if (err

if k == max1

disp('maximun nuumber of iterations exceeded') end P=P';

[k,p,err,P]=fixpt(gx, 12, 0.000000000001, 200)

输出结果: k =

45

p =

11.86150150813511

err =

1.007904870675702e-011 P =

12.00000000000000

11.94431524477928

11.91085729014850

11.89085883104665

11.87894290969856

11.87185626654913

11.86764642816162

11.86514723509375

11.86366416540031

11.86278429075393

11.86226235240524

11.86195276626302

11.86176914523977

11.86166023954459

11.86159564865799

11.86155734083855

11.86153462122358

11.86152114671514

11.86151315529503

11.86150841577415

11.86150560487935

11.86150393780662

11.86150294910695

11.86150236273369

11.86150201497027

11.86150180872044

11.86150168639880

11.86150161385288

11.86150157082771

11.86150154531055

11.86150153017696 11.86150152120160 11.86150151587854 11.86150151272156 11.86150151084924 11.86150150973881 11.86150150908025 11.86150150868967 11.86150150845802 11.86150150832064 11.86150150823916 11.86150150819084 11.86150150816218 11.86150150814519 11.86150150813511

6 应用举例

不动点迭代法的应用极其广泛,在物理和工程学中都有相应的运用,如:不动点迭代法在齿形系数和应力修正系数计算中的应用

利用不动点迭代法求解危险截面齿厚和弯曲力臂为进一步用有限元法求解齿轮的弹性变形带来便利。

不动点迭代法求解是机械工程中求齿形系数和应力修正系数精度很高的一种方法,一次计算就可以求出一对相互齿合的齿轮的齿形系数和应力系数及所用迭代次数。方便实用

7 知识扩展

本节将在原有的不动点迭代法的基础之上进行推展到不动点迭代的加速的一些情况。

7.1 Steffensen 加速迭代

不动点迭代式(2.2)通常只有线性收敛,有时甚至不收敛,为加速迭代法的收敛性通常可以采用Steffensen 加速迭代。

设**()x x ?=是?的不动点,记*k k s x x =-,利用中值定理有:

**11**'

()()()k k k k k k k k s x x x x s x x x x

???ξξ++--===-- 在*x 与k x 之间通常'()k ?ξ依赖于k ,若'()x ?变化不大,设'()k C ?ξ≈于是有:

**1**21()()

k k k k x x C x x x x C x x +++-≈--≈-

从上式消去C ,则得

**21**

1k k k k x x x x x x x x

+++--≈--或***2

21()()()k k k x x x x x x ++--≈- 解得

2

2

*

212121()22k k k k k k k k k k k k x x x x x x x x x x x x x ++++++--≈=-

-+-+ 若记

2

121(),0,1,2......2k k k k k k

x x x x k x x x +++-=-=-+ (7.1)

用序列{}

k x 作为不动点*x 的新近似,一般说,它比迭代法(2.2)收敛更快,实际上迭代法式(2.1)(2.2)联立可改为:

2

1(),()

(),0,1,2......

2k k k k k k k k k k k

y x z y y x x x k z y x ??+==-=-=-+ (7.2) 称为Steffensen 迭代法,它是将来原不动点迭代(2.2)计算两次合并成一步得到,可改为另一种不动点迭代法:

1(),0,1,2......k k x x k ψ+== (7.3)

其中

2

[()]()(())2()k x x x x x x x

?ψ???-=-

-+ (7.4) 并有以下局部收敛定理:

若*x 为(7.4)定义的函数ψ的不动点,则*x 为?的不动点。反之,若*x 是?的不动点,设''*()x ?连续,且'*()1x ?≠,则*x 是ψ的不动点且迭代法(7.3)是二阶收敛的。

7.2 Aitken (埃特金)加速迭代法

设**()x x ?=是?的不动点,利用中值定理有:

**'*101010*

*

'

*

212121()()()()()()()()()()

x x x x x x x x x x x x x x x x ????ξ????ξ=?-=-=-=?-=-=-

若'()x ?变化不大,则可得:

''12()()?ξ?ξ≈

可推出:

*

*01**

21x x x x x x x x

--≈-- *1201210

()

2x x x x y x x x -≈-

=-+

即有如下图2所示关系关系

图2k x 与k y 的关系

进而可以得出其通项:

22

11221()()2k k k k k k k k k k

x x x y x x x x x x ++++-?=-=--+?

然后就有如下的收敛性:

*

1*

0lim k k

k y x x x +→∞-?-=超线性收敛

01234 . . .x x x x x 123

参考文献:

[1]John H.Mathews,Kurtis D.Fink.数值方法(第四版)[M].2010.4

[2]宜春学院学报405期.关于加速迭代的讨论.2009.3

[3] Gerald Recktenwald . 数值方法和MATLAB实现与应用[M].2004

[4] 金一庆 . 数值方法 [M].2011

MATLAB代码 解线性方程组的迭代法

解线性方程组的迭代法 1.rs里查森迭代法求线性方程组Ax=b的解 function[x,n]=rs(A,b,x0,eps,M) if(nargin==3) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值elseif(nargin==4) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-A)*x0+b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 2.crs里查森参数迭代法求线性方程组Ax=b的解 function[x,n]=crs(A,b,x0,w,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-w*A)*x0+w*b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x;

if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 3.grs里查森迭代法求线性方程组Ax=b的解 function[x,n]=grs(A,b,x0,W,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1;%前后两次迭代结果误差 %迭代过程 while(tol>eps) x=(I-W*A)*x0+W*b;%迭代公式 n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 4.jacobi雅可比迭代法求线性方程组Ax=b的解 function[x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error return elseif nargin==5 M=varargin{1}; end D=diag(diag(A));%求A的对角矩阵 L=-tril(A,-1);%求A的下三角阵

【良心出品】不动点迭代法matlab程序

实验四 姓名:木拉丁。尼则木丁班级:信计08-2 学号:20080803405 实验地点:新大机房 实验目的:通过本实验学习利用MATLAB不动点迭代法,抛物线法,斯特芬森迭代法解非线性方程组,及其编程实现,培养编程与上机调试能力。 实验要求:①上机前充分准备,复习有关内容,写出计算步骤,查对程序; ②完成实验后写出完整的实验报告,内容应该包括:所用的算法语言, 算法步骤陈述,变量说明,程序清单,输出计算结果,结果分析等等; ③用编好的程序在Matlab环境中执行。 迭代法 MATLAB程序: function pwxff(f,x0,x1,x2,d,n) f=inline(f); x(1)=x0; x(2)=x1; x(3)=x2; w1=(f(x(2))-f(x(3)))/(x(2)-x(3)); t1=(f(x(1))-f(x(3)))/(x(1)-x(3)); t2=(f(x(1))-f(x(2)))/(x(1)-x(2)); w2=1/(x(1)-x(2))*(t1-t2); w=w1+w2*(x(3)-x(2));

for k=3:n x(k+1)=x(k)-2*f(x(k))/(w+sqrt(w^2-4*f(x(k))*w2)); if abs(x(k+1)-x(k))

常微分方程的解线性方程组的迭代法

实验五 解线性方程组的迭代法 【实验内容】 对1、设线性方程组 ?? ? ? ?? ? ? ?? ? ? ?? ? ? ??-=???????????????? ?????????????????? ? ?--------------------------211938134632312513682438100412029137264 2212341791110161035243120 536217758683233761624491131512 013012312240010563568 0000121324 10987654321x x x x x x x x x x ()T x 2,1,1,3,0,2,1,0,1,1*--= 2、设对称正定系数阵线性方程组 ?? ? ????? ??? ? ? ??---=????????????? ??????????????? ??---------------------4515229 23206019243360021411035204111443343104221812334161 2065381141402312122 00240424 87654321x x x x x x x x ()T x 2,0,1,1,2,0,1,1*--= 3、三对角形线性方程组

?? ? ?? ? ????? ??? ? ? ??----=???????????????? ?????????????????? ??------------------5541412621357410000000014100000000141000000001410000000014100000000141000000001410000000014100000000 14100000000 1410987654321x x x x x x x x x x ()T x 1,1,0,3,2,1,0,3,1,2*---= 试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。 【实验方法或步骤】 1、体会迭代法求解线性方程组,并能与消去法加以比较; 2、分别对不同精度要求,如54310,10,10---=ε由迭代次数体会该迭代法的收敛快慢; 3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。 程序: 用雅可比方法求的程序: function [x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200;

研究线性方程组迭代收敛速度

研究解线性方程组迭代收敛速度 一. 实验目的 科学研究与生产实践中许多问题都可归结为线性方程组的求解,高效求解线性方程组成为了许多科学与工程计算的核心.迭代法就是用某种极限过程去逼近线性方程组精确解的方法,该方法具有对计算机的存贮单元需求少,程序计算简单,原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法。常用的迭代法有Jacobi 迭代法、Gauss —seidel 迭代法、逐次超松驰法(SOR 法)等。 二. 实验摘要 由迭代法平均收敛速度与渐进收敛速度的关系引入近似估计法,即通过对迭代平均收敛速度取对数,然后利用Mathematica 软件对其进行拟合,给出拟合函数,最终得到了Jacobi 迭代法、Gauss —seidel 法的平均收敛速度收敛到渐进收敛速度的近似收敛阶,以及逐次超松驰法(SOR 法)的渐进收敛速度,且该法适用于其他迭代法收敛速度的估计。 三. 迭代法原理 1.Jacobi 迭代法(J 法) 设方程组b Ax =,其中, n n n n ij R a A ??∈=)(,。n R b x ∈, A 为可逆矩阵,可分裂为,U D L A ++=其中, ??????? ???? ???? ?=-00 00 1 ,21323121 n n n n a a a a a a L ΛO O M M ??????? ????? ??? ?=-00 0,1223 11312n n n n a a a a a a U M O O ΛΛ

??????? ? ???? ??? ?=nn a a a D O O 22 11 从而由b Ax =得到, b D x A D I b D x A D D b D x U L D x 111111)()()(------+-=+-=++-= 令 A D I B J 1--=, b D f J 1-=, 由此可构造出迭代公式:J k J k f x B x +=+)()1( 令初始向量)0,...,0,0()0(=x ,即可得到迭代序列,从而逼近方程组的解 这种方法称为Jacobi 迭代法,其中J B 称为Jacobi 迭代矩阵。 2. Gauss-Seidel 迭代法(GS 法) 与Jacobi 迭代法类似,将方程组b Ax =中的系数矩阵 A 分裂为 ,U D L A ++=,其中U L D ,,与前面相同。 与Jacobi 迭代法所不同的是,Gauss-Seidel 迭代法将Jacobi 迭代公式中的 b Ux Lx Dx k k k +--=+)()()1( 改为 b Ux Lx Dx k k k +--=++)()1()1( 从而b Ax =可写成矩阵形式 b Ux x D L k k +-=++)()1()(, 若设1 )(-+D L 存在,则 b D L Ux D L x k k 1)(1)1()()(--++++-=, 其中, U D L B G 1)(-+-=,b D L f 1)(-+=, 于是Gauss —Seidel 迭代公式的矩阵形式为f x B x k G k +=+)() 1(。

线性方程组迭代解法

实验六:线性方程组迭代解法 1)实验目的 ? 熟悉Matlab 编程; ? 学习线性方程组迭代解法的程序设计算法 2)实验题目 1.研究解线性方程组Ax=b 迭代法收敛速度。A 为20阶五对角距阵 ??????????????? ?????????????????------------------=321 412132141412132141412132141 412132 141213 O O O O O A 要求: (1)选取不同的初始向量x 0 及右端向量b ,给定迭代误差要求,用雅可比迭代和高斯-赛 德尔迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。 (2)用SOR 迭代法求解上述方程组,松弛系数ω取1< ω <2的不同值,在 时停止迭代.记录迭代次数,分析计算结果并得出你的结论。 2.给出线性方程组b x H n =,其中系数矩阵n H 为希尔伯特矩阵: ()n n ij n h H ??∈=,.,,2,1,,1n j i j i i h ij Λ=-+= 假设().,1,,1,1*x H b x n n T =?∈=Λ若取,10,8,6=n 分别用雅可比迭代法及SOR 迭代 (5.1,25.1,1=ω)求解,比较计算结果。 3)实验原理与理论基础 1.雅克比(Jacobi )迭代法算法设计: ①输入矩阵a 与右端向量b 及初值x(1,i); ②按公式计算得 ),,2,1(1)(1)1(n i x a b a x k j n i j j ij i ii k i Λ=????? ??-=∑≠=+ 2.高斯――赛得尔迭代法算法设计: 1. 输入矩阵a 与右端向量b 及初值x(1,i).

MAAB计算方法迭代法牛顿法二分法实验报告

姓名 实验报告成绩 评语: 指导教师(签名) 年 月 日 说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点 2a b x -=判断是否0)(=x f ;若是,则有根2a b x -=。否则,继续判断是否0)()(

+)(0x f 0))(('0=-x x x f 设0)('0≠x f ,则=x -0x )(') (00x f x f 。取x 作为原方程新的近似根1x ,然后将1x 作为0x 代入上式。迭代公式为:=+1 k x -0x )(')(k k x f x f 。 三、 实验设备:MATLAB 软件 四、 结果预测 (1)11x = (2)5x = (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不超 过3105.0-?。 (2)、取初值00=x ,用迭代公式=+1 k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的近似根。要求误差不超过3105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误差 不超过3105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 软件,建立一个实现二分法的MATLAB 函数文件如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end

数值计算_第4章 解线性方程组的迭代法

第4章解线性方程组的迭代法 用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组, 如分解,可逆,则由得到),以此构造迭代关系式 (4.1) 任取初始向量,代入迭代式中,经计算得到迭代序列。 若迭代序列收敛,设的极限为,对迭代式两边取极限 即是方程组的解,此时称迭代法收敛,否则称迭代法发散。我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。 可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。事实上,若为方程组的解,则有 再由迭代式可得到

由线性代数定理,的充分必要条件。 因此对迭代法(4.1)的收敛性有以下两个定理成立。 定理4.1迭代法收敛的充要条件是。 定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径 因此,称谱半径小于1的矩阵为收敛矩阵。计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。但是可以通过计算矩阵的范数等方法简化判断收敛的 工作。前面已经提到过,若||A||p矩阵的范数,则总有。因此,若,则必为收敛矩阵。计算矩阵的1范数和范数的方法比较简单,其中 于是,只要迭代矩阵满足或,就可以判断迭代序列 是收敛的。 要注意的是,当或时,可以有,因此不能判断迭代序列发散。

在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。) 4.1雅可比(Jacobi)迭代法 4.1.1 雅可比迭代格式 雅可比迭代计算 元线性方程组 (4.2) 写成矩阵形式为。若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组: 记,构造迭代形式

线性方程组的迭代法及程序实现

线性方程组的迭代法及程序实现 学校代码:11517 学号:200810111217 HENAN INSTITUTE OF ENGINEERING 毕业论文 题目线性方程组的迭代法及程序实现 学生姓名 专业班级 学号 系 (部)数理科学系 指导教师职称 完成时间 2012年5月20日河南工程学院 毕业设计(论文)任务书 题目:线性方程组的迭代法及程序实现专业:信息与计算科学学号 : 姓名一、主要内容: 通过本课题的研究,学会如何运用有限元方法来解决线性代数方程组问题,特别是Gaussie-Seidel迭代法和Jacobi迭代法来求解线性方程组。进一步学会迭代方法的数学思想,并对程序代码进行解析与改进,这对于我们以后学习和研究实际问题具有重要的意义。本课题运用所学的数学专业知识来研究,有助于我们进一步掌握大学数学方面的知识,特别是迭代方法。通过这个课题的研究,我进一步掌握了迭代方法的思想,以及程序的解析与改进,对于今后类似实际问题的解决具有重要的意义。

二、基本要求: 学会编写规范论文,独立自主完成。 运用所学知识发现问题并分析、解决。 3.通过对相关资料的收集、整理,最终形成一篇具有自己观点的学术论文,以期能对线性方程组迭代法的研究发展有一定的实践指导意义。 4.在毕业论文工作中强化英语、计算机应用能力。 完成期限: 2012年月指导教师签名:专业负责人签名: 年月日 目录 中文摘要....................................................................................Ⅰ英文摘要 (Ⅱ) 1 综述 1 2 经典迭代法概述 3 2.1 Jacobi迭代法 3 2.2 Gauss?Seidel迭代法 4 2.3 SOR(successive over relaxation)迭代法 4 2.4 SSOR迭代法 5 2.5 收敛性分析5 2. 6 数值试验 6 3 matlab实现的两个例题8 3.1 例1 迭代法的收敛速度8 3.2 例 2 SOR迭代法松弛因子的选取 12致谢16参考文献17附录19

线性方程组的迭代解法(Matlab)

第六章线性方程组的迭代解法 2015年12月27日17:12 迭代法是目前求解大规模稀疏线性方程组的主要方法之一。包括定常迭代法和不定常迭代法,定常迭代法的迭代矩阵通常保持不变,包括有雅可比迭代法(Jacobi)、高斯-塞德尔迭代法(Gauss-Seidel)、超松弛迭代法(SOR) 1.雅可比迭代法(Jacobi) A表示线性方程组的系数矩阵,D表示A的主对角部分,L表示下三角部分,U表示上三角部分。 A=D+L+U 要解的方程变为Dx+Lx+Ux=b x=D^(-1)(b-(L+U)x) 所以Jocabi方法如下: Matlab程序 function [x,iter] =jacobi(A,b,tol) D=diag(diag(A)); L=D-tril(A); U=D-triu(A); x=zeros(size(b)); for iter=1:500 x=D\(b+L*x+U*x); error=norm(b-A*x)/norm(b); if(error

不动点迭代法

中国矿业大学(北京)理学院 数值分析实验报告 实验名称 不动点迭代法求方程的近似根 实验时间 201年3月20日 组长签名 龙纯鹏 班级 信息与计算 科学(1)班 学号 11107200110 成绩 组员签名 11107200101 11107200102 11107200103 11107200119 11107200120 一、实验目的,内容 二、相关背景知识介绍 三、代码 四、数值结果 五、计算结果的分析 六、计算中出现的问题,解决方法及体会 一、实验目的,内容 5、先确定方程x e x 51= 的一个收敛的有根区间[a,b], 然后用不动点迭代法求x e x 5 1=在此有根区间的近似根,初值0x 自己确定,要求根精确到510-,并求迭代次数. ,掌握二分法,会编写相关代码。 二、相关背景知识介绍 (1)算法原理或计算公式 二分法的基本思路是通过计算隔根区间的中点,逐步将隔根区间缩小,从而可得方程 的近似根数列{}n x 。ε<-≤-+1*2 k k a b x x (2)程序设计思路 二分法原理: 不妨设方程0)(=x f 在隔根区间],[b a 上.0)(,0)(>+ b a f , 隔根区间变为]2 ,[b a a +.将新区间记为[]11,b a .

解线性方程组的几种迭代算法

解线性方程组的几种迭代算法 内容摘要: 本文首先总结了分裂法解线性方程组的一些迭代算法,在此基础上分别通过改变系数矩阵A的分裂形式和对SSOR算法的改进提出了两种新的算法,并证明了这两种算法的收敛性.与其它方法相比,通过改变系数矩阵A的分裂形式得到的新算法具有更好的收敛性,改进的SSOR算法有了更快的收敛速度.最后通过数值实例验证了这两种算法在有些情况下确实可以更有效的解决问题. 关键词: 线性方程组迭代法算法收敛速度 Several kinds of solving linear equations iterative algorithm Abstract: In this paper, we firstly summarize some Iterative algorithms of Anti-secession law solution of linear equations. Based on these, two new algorithms are put forward by changing the fission form of coefficient matrix A and improving the algorithm of SSOR, and the convergence of the two algorithms is demonstrated. Compared with other methods, the new algorithm acquired by changing the fission form of coefficient matrix A is possessed of a better convergence. And the improved SSOR algorithm has a faster convergence speed. Finally, some numerical examples verify that the two algorithms can solve problems more effectively in some cases. Key words: Linear equations Iteration method algorithm Convergence speed

Gauss-Seidel迭代法求解线性方程组

一. 问题描述 用Gauss-Seidel 迭代法求解线性方程组 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值。使用了两倍的存储空间,浪 费了存储空间。若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量) 1(+k i x 时, 用最新分量) 1(1 +k x ,???+) 1(2 k x ) 1(1 -+k i x 代替旧分量)(1k x ,???) (2 k x ) (1-k i x ,可以起到节省存储 空间的作用。这样就得到所谓解方程组的Gauss-Seidel 迭代法。 二. 算法设计 将A 分解成U D L A --=,则b x =A 等价于b x =--U)D (L 则Gauss-Seidel 迭代过程 ) ()1()1(k k k Ux Lx b Dx ++=++ 故 )()1()(k k Ux b x L D +=-+ 若设1 )(--L D 存在,则 b L D Ux L D x k k 1)(1)1()()(--+-+-= 令 b L D f U L D G 11)()(---=-=, 则Gauss-Seidel 迭代公式的矩阵形式为 f Gx x k k +=+)()1( 其迭代格式为 T n x x x x )()0()0(2)0(1)0(,,,???= (初始向量), )(1111 1 )() 1()1(∑∑-=-+=++--=i j i i j k j ij k j ij i ii i i x a x a b a x )210i 210(n k ???=???=,,,;,,, 或者 ?? ???--=???=???==?+=∑∑-=-+=+++) (1)210i 210(111 1)() 1()1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,, 三. 程序框图

MATLAB计算方法迭代法牛顿法二分法实验报告要点

姓名实验报告成绩 评语: 指导教师(签名) 年月日

说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点2a b x -= 判 断是否0)(=x f ;若是,则有根 2a b x -= 。否则,继续判断是否0)()(

(1)11x =0.09033 (2)5x =0.09052 (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不 超过 3 105.0-?。 (2)、取初值00=x ,用迭代公式=+1k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的 近似根。要求误差不超过 3 105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误 差不超过 3 105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 7.0软件,建立一个实现二分法的MATLAB 函数文件agui_bisect.m 如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end %如果fa*fb>0,则输出两端函数值为同号 k=0 x=(a+b)/2 while(b-a)>(2*e) %循环条件的限制

不动点迭代法求解非线性方程组

不动点迭代法求解非线性方程组 摘要:一般非线性方程组可以写成()0F x =的形式,其中:n m F R R →是定义在区域 n D R ?上的向量函数。把方程组()0F x =改写成与之等价的形式:(x G x =)。因此,求 方程组()0F x =的解就转化为求函数的(G x )的不动点。本文首先介绍了多变量函数()F x 的微积分性质,接着介绍了用不动点迭代法求解非线性方程组。 关键词:多变量函数;微积分;不动点 Fixed Point Iteration Method For Solving Nonlinear Equations Abstract :General nonlinear equations can be written in the form of ()F x θ=, where the vector function :n m F R R →is defined on the region n D R ?. Transform the equations ()0F x = into its equivalent form: (x G x =).Therefore, we can get the solution of ()0F x = by finding the fixed point of (G x ).In this paper, we first introduce some knowledge about multivariable calculus, then introduce the fixed point iteration method for solving nonlinear equations. Key words: multi-variable function; calculus; fixed point 1 引言 一般非线性方程组及其向量表示法:含有n 个方程的n 元非线性方程组的一般形式为 11221212(,...,)0(,...,)0......(,...,)0 n n m n f x x x f x x x f x x x =??=?? ? ?=? (1) 其中,()1,2,...,i f i n =是定义在n D R ?上的n 元实值函数,且i f 中至少有一个是非线性 函数。 令12 ...n x x x x ?? ? ?= ? ???,()()()12()...m f x f x F x f x ?? ? ? = ? ? ?? ? ,则方程组可以表示为()F x θ= (2) 其中:n m F R R →是定义在区域n D R ?上的向量函数。若存在* x D ∈,使

线性方程组的直接法和迭代法

线性方程组的直接法 直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。 线性方程组迭代法 迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法.该方法具有对计算机的存贮单元需求少,程序设计简单、原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法.迭代法不是用有限步运算求精确解,而是通过迭代产生近似解逼近精确解.如Jacobi 迭代、Gauss — Seidel 迭代、SOR 迭代法等。 1. 线性方程组的直接法 直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。 1.1 Cramer 法则 Cramer 法则用于判断具有n 个未知数的n 个线性方程的方程组解的情况。当方程组的系数行列式不等于零时,方程组有解且解唯一。如果方程组无解或者有两个不同的解时,则系数行列式必为零。如果齐次线性方程组的系数行列式不等于零,则没有非零解。如果齐次线性方程组有非零解,则系数行列式必为零。 定理1如果方程组Ax b =中0D A =≠,则Ax b =有解,且解事唯一的,解为1212,,...,n n D D D x x x D D D ===i D 是D 中第i 列换成向量b 所得的行列式。 Cramer 法则解n 元方程组有两个前提条件: 1、未知数的个数等于方程的个数。 2、系数行列式不等于零 例1 a 取何值时,线性方程组

1231231 2311x x x a ax x x x x ax ++=??++=??++=?有唯一解。 解:2111111 11011(1)11001 A a a a a a a ==--=--- 所以当1a ≠时,方程组有唯一解。 定理2当齐次线性方程组0Ax =,0A ≠时该方程组有唯一的零解。 定理3齐次线性方程组0Ax =有非零解0A <=>=。 1.2 Gauss 消元法 Gauss 消元法是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。 1.2.1 用Gauss 消元法为线性方程组求解 eg :Gauss 消元法可用来找出下列方程组的解或其解的限制: ()()()123283211223x y z L x y z L x y z L +-=??--+=-??-++=-? 这个算法的原理是:首先,要将1L 以下的等式中的x 消除,然后再将2L 以下的等式中的y 消除。这样可使整个方程组变成一个三角形似的格式。之后再将已得出的答案一个个地代入已被简化的等式中的未知数中,就可求出其余的答案了。 在刚才的例子中,我们将132 L 和2L 相加,就可以将2L 中的x 消除了。

迭代法解线性方程组(C语言描述)

用Gauss-Seidel迭代法解线性方程组的C语言源代码:#include #include #include struct Line{ int L; struct Row *head; struct Line *next; }; struct Row{ int R; float x; struct Row *link; }; //建立每次迭代结果的数据存储单元 struct Term{ float x; float m; }; struct Line *Create(int Line,int Row){ struct Line *Lhead=NULL,*p1=NULL,*p2=NULL; struct Row*Rhead=NULL,*ptr1,*ptr2=NULL; int i=1,j=1; float X; while(i<=Line){ while(j<=Row+1){ scanf("%f",&X); if(X!=0||j==Row+1){ ptr1=(struct Row*)malloc(sizeof(Row)); if(ptr1==NULL){ printf("内存分配错误!\n"); exit(1); } ptr1->x=X; ptr1->R=j; if(ptr2==NULL){ ptr2=ptr1; Rhead=ptr1; } else{

ptr2->link=ptr1; ptr2=ptr1; } } j++; } if(ptr2!=NULL){ ptr2->link=NULL; ptr2=NULL; } if(Rhead!=NULL){ p1=(struct Line*)malloc(sizeof(Line)); if(p1==NULL){ printf("内存分配错误!\n"); exit(1); } p1->L=i; p1->head=Rhead; if(p2==NULL){ Lhead=p1; p2=p1; } else{ p2->next=p1; p2=p1; } } i++; Rhead=NULL; j=1; } if(p2!=NULL) p2->next=NULL; return Lhead; } struct Line *Change(struct Line*Lhead,int n){ struct Line*p1,*p2,*p3,*p; struct Row*ptr; int i=1,k,j; float max,t; if(Lhead==NULL){ printf("链表为空!\n");

MATLAB计算方法迭代法牛顿法二分法实验报告

姓名 _______________ 实验报告成绩 __________________________ 评语: 指导教师(签名)

说明:指导教师评分后,实验报告交院(系)办公室保存 实验一方程求根 一、实验目的 用各种方法求任意实函数方程f(x)0在自变量区间[a,b]上,或某一点附 近的实根。并比较方法的优劣。 二、实验原理 (1)、二分法 b a x --------- 对方程f(x)0在[a,b]内求根。将所给区间二分,在分点2判 b a x --------- 断是否f(x) 0;若是,贝y有根2。否则,继续判断是否f(a)?f(x) 0, 若是,则令b x,否则令a x。否则令a x。重复此过程直至求出方程f(x) 0在[a,b]中的 近似根为止。 (2)、迭代法 将方程f(x) 0等价变换为x = ?( x )形式,并建立相应的迭代公式xk 1 J x)。 (3)、牛顿法 若已知方程的一个近似根X。,则函数在点X。附近可用一阶泰勒多项 式pi(x) f(X0) f'(X0)(X X0)来近似,因此方程f(x) 0可近似表示为f(X0) f(X0) f'(X0)(X X)0设f'(X0) 0,则x X0 f'(X0)。取x 作为原方程新的近 f (X k) 似根X1,然后将X1作为X0代入上式。迭代公式为:Xk 1 X0 f'(X k)。 三、实验设备:MATLAB 7.0软件 四、结果预测

(1) 心=0.09033 (2) x 5=o.o9O52 (3) x 2=0,09052 五、实验内容 (1)、在区间[0,1]上用二分法求方程e x 10x 2 0的近似根,要求误差不 六、实验步骤与实验程序 (1)二分法 第一步:在MATLAB 7.0软件,建立一个实现二分法的 MATLAB 函数 文 件 agui_bisect.m 女口下: fun cti on x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); % 把a 端点代入函数,求fa fb=feval(fname,b); % 把b 端点代入函数,求fb if fa*fb>0 error(' 两端函数值为同号'); end %如果fa*fb>0,则输出两端函数值为同号 k=0 x=(a+b)/2 while(b-a)>(2*e) % 循环条件的限制 fx 二feval(fname,x);% 把x 代入代入函数,求fx 超过 0.5 10 3 (2)、取初值 xo 0 ,用迭代公式 Xk1 f (X k ) f'(X k ),求方程 e x 10x 2 0 的 近似根。要求误差不超过 0.5 10 (3)、取初值x 。 ,用牛顿迭代法求方程e x 10x 2 0的近似根。要求误 差不超过 0.5 10

不动点迭代法非线性方程求解

《MATLAB 程序设计实践》课程考核 1、编程实现以下科学计算算法,并举一例应用之。(参考书籍《精通MATLAB 科学计算》,王正林等著,电子工业出版社,2009年) “不动点迭代法非线性方程求解” 2、编程解决以下科学计算问题。 7.某工厂2005年度各季度产值(单位:万元)分别为:450.6、395.9、410.2、450.9,试绘制折线图和饼图,并说明图形的实际意义。 8.根据1252 2 22=-+ a y a x 绘制平面曲线,并分析参数a 对其形状的影响。 2.按要求对指定函数进行插值和拟合。 (1)按表 6.4用3次样条方法插值计算090~0范围内整数点的正弦值和 075~0范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值, 并将两种计算结果进行比较。 (2)按表6.5用3次多项式方法插值计算1~100之间整数的平方根。 1、不动点迭代非线性方程求解 解:

算法说明: 在Matlab中编程实现不动点迭代法的函数为StablePoint 功能:用不动点迭代法求函数的一个零点。 调用格式:[root,n]=StablePoint(f,x0,eps)。 其中,f为函数名; x0为初始迭代向量; eps为根的精度; root为求出的函数零点; n为迭代步数。 流程图: 不动点迭代法的MATLAB程序代码: function [root,n]=StablePoint(f,x0,eps) %用不动点迭代法求函数f的一个零点 %初始迭代量:x0 %根的精度:eps %求出的函数零点:root

%迭代步数:n if(nargin==2) eps=1.0e-4; end tol=1; root=x0; n=0; while(tol>eps) n=n+1; r1=root; root=subs(sym(f),findsym(sym(f)),r1)+r1; %迭代的核心公式tol=abs(root-r1); end 实例: 20 x +-=的一个根。流程图: 解:在MATLAB命令窗口中输入程序代码: >>[r,n]=StablePoint('1/sqrt(x)+x-2',0.5) 结果输出:

相关文档
最新文档