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

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

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

一. 实验目的

科学研究与生产实践中许多问题都可归结为线性方程组的求解,高效求解线性方程组成为了许多科学与工程计算的核心.迭代法就是用某种极限过程去逼近线性方程组精确解的方法,该方法具有对计算机的存贮单元需求少,程序计算简单,原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法。常用的迭代法有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

,2

13231

21

n n n n a a a a a a L ??

??

????????

???

?=-000

0,1223

11312n n n n a a a a a a U

??

?????

?

????

???

?=nn a a a D

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(。

其中,G B 称为式(1)的Gauss —Seidel 迭代法的迭代矩阵。

注:由于Gauss-Seidel 迭代充分利用了迭代过程的新信息,一般来说,它的迭代效果要比Jacobi 迭代好。

3.逐次超松弛方法(SOR 法)

根据Gauss-Seidel 迭代法的迭代原理)()()1(1)1(b Ux Lx D x k k k +--=+-+,我们将其修改为)

1()

()

1()1(+-++-=k k k x

w x

w x

,即对)

(k x

和)

1(+-k x

加入一个权因子,在这里我们

称w 为迭代公式的松弛系数。 令)()()1(1)

1(b Ux Lx D x

k k k +--=+-+-(Gauss —Seidel 迭代法),则

)

()1()1()()1(1)()

1()

()

1(b Ux Lx wD x w x

w x

w x

k k k k k k +--+-=+-=+-+-+

从而

b wL D w x wU D w wL D x k k 1)(1)1()(])1[()(--+++--+=

])1[()(1wU D w wL D G w --+=-,1)(-+=wL D w f w 所以

w k w k f x G x +=+)()1(

将其写成分量的形式

我们称该公式为基于Gauss —Seidel 迭代下的超松弛迭代公式。 注:

1) 关于松弛系数w 的选取,我们有以下性质: (i ).设方程组b Ax =,其中,n

n n n ij R a A ??∈=)(,n

R b x ∈,,则解方程的SOR

迭代法收敛的必要条件是20<

A 为正定的对称矩阵,且20<

是收敛的; (iii )若

A 为正定的对称三对角矩阵,J

B 为Jacobi 迭代矩阵,若J B 的谱半径

1)(

2

112μ

-+=

b w

????

?<≤-≤<--+=2

1

04

/)1(4)(222w w w w w w w w G b b

w μμρ

2) 由松弛系数的性质可知,通常只有当方程组的系数矩阵

A 为正定的对称矩阵时

我们才使用SOR 法;

3) 当松弛系数1=w 时,SOR 法记为GS 方法; 4) 关于(iii )提到的谱半径定义为:

假设A 为n 阶可逆矩阵,n λλλ,...,,21是它的n 个特征值,我们称

||m ax )(1i n

i A λρ≤≤=

为A 的谱半径。容易证明A 的谱半径是A 的所有诱导范数的下确界,即

||||inf )(||

||A A ?=ρ

其中,矩阵的范数如:∑=≤≤=n i ij n j a A 1

11||max ||||,∑=≤≤∞=n

j ij n i a A 1

1||max ||||,)(||||2A A A T ρ= 。

下面我们就来讨论以上方法的迭代收敛速度,首先我们介绍收敛速度快慢的比较方法。

四. 迭代法收敛速度的比较

1.这两种迭代方法收敛性与)(0∞→→k B k 是否成立有关,且收敛速度与

0→k B 的速度有关。

当1)(

)(ln B ρ-的大小作为迭代法渐进收敛速度的度量。这时)(ln B ρ-越大,迭代法的收

敛速度愈大。

2.平均收敛速度与渐进收敛速度之间的联系

对于收敛的迭代法...)2,1,0(1=+=+k f Bx x k k ,)||ln(||/1k k k B R -=称为平均收敛速度(它与所用的范数以及k 有关);)(ln B R ρ-=∞称为渐进收敛速度。可以证明

k k R R ∞

→∞=lim ,因此当∞→k 时假设成立下列渐近关系式

c R R p

k

k →+1

(常数),为估计平均收敛速度收敛到渐进收敛速度的阶,当k 充分大时有如下近似形式:

1,1

>>≈+k c R R k

k 两边取对数得:

c R p R k k ln ln ln +≈

此式说明当k 比较大时,1ln +k R 与k R ln 有近似的线性关系,而它们的斜率刚好为收敛阶P ,这样可以通过当k 比较大时作出1ln +k R 与k R ln 的拟合曲线来估计出P 值。

五. 实验举例

例1:考虑五阶方程组

?????

????-=+-=-+--=-=-+-=--1

20

24123

4235545

4143521541x x x x x x x x x x x x x 1. 其Jacobi 迭代法的迭代矩阵为

???

???

?

?

?

?=05.000

05.000025.005.0000

25.000025.02.06.0000J B

渐进收敛速度为:

41301462.0)66165261.0ln())(ln(=-=-=∞J B R ρ

则迭代平均收敛速度k R (见表1)以及取对数后作最小二乘拟合图像(见图1)如下所示:

表1

图1

1.5 1.4 1.3 1.2 1.1 1.0

1.20

1.151.101.051.000.95即

53345499.0)ln(44226443.0)ln(1-=+k k R R

从而得到收敛阶为 p=0.44226443

2. 该方程组的Gauss —Seidel 迭代矩阵为:

???

???

?

?

?

?=275.0075.000

055.015.000005.0000

3.015.00002.06.0000G B

其渐进收敛速度为

85566611.0)425.0ln())(ln(=-=-=∞G B R ρ

则迭代平均收敛速度k R (见表2)以及取对数后作最小二乘拟合图像(见图2)如下所示:

图2

1.4

1.2

1.00.80.60.4

0.9

0.80.70.60.50.40.3即

11593362.0)ln(58472143.0)ln(1-=+k k R R

从而得到收敛阶为 p=0.58472143。

注:在本例中,由于方程组的系数矩阵严格对角占优,故前述两种迭代过程均收敛,

依实际迭代过程:对Jacobi 迭代有6

7-32

)31()32(10106.4345694||||||||-

)17()18(10105.5402987||

||||

||-0.442之间关系一致。

例2:考虑方程组

??

?

??-=+-=-+=+24

430432434323212

1x x x x x x x 用SOR 迭代公式可得

取初试量为T x )0,0,0()0(=,迭代至第14次后的结果为

当1=w 时 ,T x )5.0005551- 3.9977796, 3.0026645,()14(=

当24.1=w 时,T x ) 5.- 3.9999999, 3.0000002,()14(=

可见取24.1=w 时的收敛速度比1=w 时的收敛速度要快。若要精确到小数后7位,

当1=w (GS 法)时需迭代31次,而当24.1=w (SOR 法)时只需迭代14次,它表明松弛因子w 选取的好坏,对收敛速度影响很大。

六. 程序设计及实验结果

1. Jacobi 迭代法,用mathematica 编写程序如下:

(i )计算迭代矩阵

Clear[Evaluate[Context[]<>"*"]]

A={{5,0,0,-3,-1},{-1,4,0,0,-1},{0,0,2,-1,0},{-1,0,0,4,-2},{0,0,0,-1,2}}; b={2,3,-1,0,-1};

L=Table[If[i>j,A[[i,j]],0],{i,Length[A]},{j,Length[Transpos e[A]]}];

D1=Table[If[i==j,A[[i,j]],0],{i,Length[A]},{j,Length[Transp ose[A]]}];

U=Table[If[i

I1=IdentityMatrix[Length[A]]; BJ=I1-Inverse[D1].A//N fJ=Inverse[D1].b//N; 运行结果为

???

???

?

?

?

?=05.000

05.000025.005.0000

25.000025.02.06.0000J B

(ii )计算方程组的解精确到小数点后7位时,迭代次数、最后一次迭代的结果、最后两次的相

对误差。

s={Table[0,{i,1,Length[b]}],Table[1,{i,1,Length[b]}]};k=2; x1=x0=Table[0,{i,1,Length[b]}];

While[Norm[s[[k]]-s[[k-1]],2]>10-6,x1=B J .x0+f J ;x0=x1;s=Append To[s,x1];k++]

s=Delete[s,{{1},{2}}]; n=Length[s] s[[n]]

Norm[s[[n]]-s[[n-1]],2]/Norm[s[[n]],2] 运行结果为 迭代次数为

n=32

最后一次迭代结果为

T x )521733643471,-0.67336,-0.3017,-0.65216,0.6086960.08695735()32(=

最后两次的相对误差

6

7-32

)31()32(10106.4345694||

||||||-

Rk=Table[-Log[Power[Norm[MatrixPower[BJ,k],],1/k]]//N,{k,8}];

Rk=Table[-Log[Power[Norm[MatrixPower[BJ,k],],1/k]]//N,{k,8}];

date1=Table[{i,Rk[[i]],Log[Rk[[i]]]},{i,Length[Rk]}];

运行结果为 渐进收敛速度为

41301462.0=∞R

平均收敛速度如表所示

date2=Table[{Log[R k[[i]]],Log[R k[[i+1]]]},{i,Length[R k]-1}]; line=Fit[date2,{1,t},t]

P=D[line,t]

p1=ListPlot[date2,PlotStyle PointSize[0.018]];

p2=Plot[line,{t,Min[Log[R k]]-10-1,Max[Log[R k]]+10-1},PlotRang e->{Min[Log[Rk]]-10-2,Max[Log[Rk]]+10-2}];

Show[p1,p2]

运行结果如图所示

0.95

1.00

1.05

1.10

1.15

1.20

1.5 1.4 1.3 1.2 1.1 1.0

2.Gauss—Seidel迭代法,用mathematica编写程序如下:

(i)计算迭代矩阵

Clear[Evaluate[Context[]<>"*"]]

A={{5,0,0,-3,-1},{-1,4,0,0,-1},{0,0,2,-1,0},{-1,0,0,4,-2},{ 0,0,0,-1,2}};

b={2,3,-1,0,-1};

L=Table[If[i>j,A[[i,j]],0],{i,Length[A]},{j,Length[Transpos e[A]]}];

D1=Table[If[i==j,A[[i,j]],0],{i,Length[A]},{j,Length[Transp ose[A]]}];

U=Table[If[i

B G =-Inverse[L+D1].U//N f G =Inverse[L+D1].b//N ; 运行结果为

???

???

?

?

?

?=275.0075.000

055.015.000005.0000

3.015.00002.06.0000G B

(ii )计算方程组的解精确到小数点后7位时,迭代次数、最后一次迭代的结果、最后两次的相

对误差。

s={Table[0,{i,1,Length[b]}],Table[1,{i,1,Length[b]}]};k=2; x1=x0=Table[0,{i,1,Length[b]}];

While[Norm[s[[k]]-s[[k-1]],2]>10-6,x1=B G .x0+f G ;x0=x1;s=Append To[s,x1];k++]

s=Delete[s,{{1},{2}}]; n=Length[s] s[[n]]

Norm[s[[n]]-s[[n-1]],2]/Norm[s[[n]],2] 运行结果为 迭代次数为

n=18

最后一次迭代结果为

T x )65217382434763,-0.7368,-0.3079,-0.65212,0.6086950.08695684()18(=

最后两次的相对误差

6

7-18

)17()18(10105.5402987||

||||||-

-Log[u]//N Rk=Table[-}];

date1=Table[{i,Rk[[i]],Log[Rk[[i]]]},{i,Length[Rk]}];

运行结果为

渐进收敛速度为

85566611.0=∞R

(iv )对平均收敛速度取对数后作最小二乘拟合图像如图所示

date2=Table[{Log[R k [[i]]],Log[R k [[i+1]]]},{i,Length[R k ]-1}]; line=Fit[date2,{1,t},t] P=D[line,t]

p1=ListPlot[date2,PlotStyle →PointSize[0.018]];

p2=Plot[line,{t,Min[Log[R k ]]-10-1,Max[Log[R k ]]+10-1},PlotRang e->{Min[Log[Rk]]-10-2,Max[Log[Rk]]+10-2}]; Show[p1,p2] 运行结果如图所示

1.4

1.2

1.0

0.8

0.6

0.4

0.9

0.80.70.60.50.40.33. SOR 迭代法,用mathematica 编写程序如下:

(i )当1=w (GS 法)时,计算其渐进收敛速度以及方程组的解精确到小数点后7位时的迭代次数、最后一次迭代的结果、最后两次的相对误差。 Clear[Evaluate[Context[]<>"*"]]

A={{4,3,0},{3,4,-1},{0,-1,4}}; b={24,30,-24};

L=Table[If[i>j,A[[i,j]],0],{i,Length[A]},{j,Length[Transpos e[A]]}];

D1=Table[If[i==j,A[[i,j]],0],{i,Length[A]},{j,Length[Transp ose[A]]}];

U=Table[If[i

BG=-Inverse[L+D1].U//N; fG=Inverse[L+D1].b;

RR=Max[Eigenvalues[BG]];

-Log[RR]//N

s={Table[0,{i,1,Length[b]}],Table[1,{i,1,Length[b]}]};k=2; x1=x0=Table[0,{i,1,Length[b]}];

While[Norm[s[[k]]-s[[k-1]],2]>10-6,x1=BG.x0+fG;x0=x1;s=Appe ndTo[s,x1];k++]

s=Delete[s,{{1},{2}}]; n=Length[s] s[[n]]

Norm[s[[n]]-s[[n-1]],2]/Norm[s[[n]],2] 运行结果为 渐进收敛速度为

47000363.0=∞R

迭代次数为

n=31

最后一次迭代结果为

T x )-5.00000023.9999992,3.0000009,()31(=

最后两次的相对误差

6

7-)

31()30()31(10101.0098429||

||||||-"*"]] A={{4,3,0},{3,4,-1},{0,-1,4}}; b={24,30,-24};

L=Table[If[i>j,A[[i,j]],0],{i,Length[A]},{j,Length[Transpos e[A]]}];

D1=Table[If[i==j,A[[i,j]],0],{i,Length[A]},{j,Length[Transp ose[A]]}];

U=Table[If[i

I1=IdentityMatrix[Length[A]]; BJ=I1-Inverse[D1].A//N; u=Max[Eigenvalues[BJ]]; wb=2/(1+Sqrt[1-u2])

p[w_]:=Piecewise[{{w u+Sqrt[w2 u2-4(w-1)2]/4,0

-Log[p[wb]]

s={Table[0,{i,1,Length[b]}],Table[1,{i,1,Length[b]}]};k=2; x1=x0=Table[0,{i,1,Length[b]}];

While[Norm[s[[k]]-s[[k-1]],2]>10-6,Do[x1[[i]]=(1-wb)*x0[[i]]+wb*Inverse[D1][[i]][[i]]*(b[[i]]-Sum[A[[i]][[j]]*x1[[j]],{j,1,i-1}]-Sum[A[[i]][[j]]*x0[[j]],{j,i+1,Length[b]}]),{i,1,Length[b]}]; x0=x1;

s=AppendTo[s,x1];k++] s=Delete[s,{{1},{2}}]; n=Length[s] s[[n]]

Norm[s[[n]]-s[[n-1]],2]/Norm[s[[n]],2] 运行结果为 渐进收敛速度为

4254169.1=∞R

迭代次数为

n=14

最后一次迭代结果为

T x )-5.3.9999999,3.0000002,()14(=

最后两次的相对误差

7

8-)

14()13()14(10109.169008||

||||||-

1.对于一般的线性方程组,我们常采用Jacobi 迭代法和Gauss-Seidel 迭代法对其进行求解。通过例1,我们知道在一般情况下,Gauss-Seidel 迭代法比Jacobi 迭代法的收敛速度要快;

2.对于正定的对称矩阵,我们则可以采用SOR 迭代法,由例2我们知道其收敛速度比Gauss-Seidel 迭代法的收敛速度还要来的快;

3.对于SOR 迭代法,优点是收敛速度快,缺点是适用范围窄,一般仅限于正定矩阵,特别的,当系数矩阵为对称的三对角矩阵时,最优松弛系数可选取为

2

112μ

-+=

b w

而对于一般正定矩阵,w 的选取一般介于21<

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的下三角阵

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

实验五 解线性方程组的迭代法 【实验内容】 对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).

解线性方程组的迭代法收敛速度

实验六 解线性方程组的迭代法收敛速度. 一、实验内容 (1)选取不同的初始向量)0(x ,在给定的迭代误差要求下,用雅可比迭代和高斯-赛德尔迭代法法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论. (2)用SOR 迭代法求上述方程组的解,松弛系数ω取1<ω<2的不同值,在给定的迭代误差要求下.记录迭代次数,分析计算结果并得出你的结论. 二、方法步骤 雅克比迭代法: (1)输入A =(a ij )n×n ,b =(b 1,b 2,…,b n )T ,维数n ,x (0)=(x 1(0),x 2(0) ,…,x n (0))T ,容许误差ε,最大容许迭代次数N. (2)对i=1,2,3,…,n,置x i =x i (0). (3)置k=1. (4)对i=1,2,3,…,n,置 y i =1a ii (b i ?∑a ij x j n j=1,j≠i ) (5)若max 1≤i≤≥n ‖y i ?x i ‖<ε输出y i (i =1,2,3,…,n),停机,否则转(6). (6)若kk,y i ==>x i (i =1,2,…,n),转(4),否则,输出失败信息,停机。 高斯-塞德尔迭代法 (1)输入A =(a ij )n×n ,b =(b 1,b 2,…,b n )T ,维数n ,,x (0)=(x 1( 0),x 2(0),…,x n (0))T ,容许 误差ε,最大容许迭代次数N. (2)对i=1,2,3,…,n,置x i =x i (0) .y i =x i . (3)置k=1. (4)对i=1,2,3,…,n,置 y i =1ii (b i ?∑a ij x j n j=1,j≠i ) (5)若max 1≤i≤≥n ‖y i ?x i ‖<ε输出y i (i =1,2,3,…,n),停机,否则转(6). (6)若kk,y i ==>x i (i =1,2,…,n),转(4),否则,输出失败信息,

迭代法的加速

6.5 迭代法的加速 一、教学目标及基本要求 通过对本节的学习,使学生掌握方程求根迭代法的加速。 二、教学内容及学时分配 本章主要介绍线性方程求根的迭代法的加速方法。要求 1.了解数值分析的研究对象、掌握误差及有关概念。 2.正确理解使用数值方法求方程的解的基本思想、数学原理、算法设计。 3.了解插值是数值逼近的重要方法之一,正确理解每一种算法的基本思想、计算公式、算法设计、程序框图设计和源程序。 4.掌握数值积分的数学原理和程序设计方法。 5.能够使用数值方法解决一阶常微分方程的初值问题。 6.理解和掌握使用数值方法对线性方程组求解的算法设计。 三、教学重点难点 1.教学重点:非线性方程迭代收敛性与迭代加速、牛顿法。 2. 教学难点:迭代的收敛性。 四、教学中应注意的问题 多媒体课堂教学为主。适当提问,加深学生对概念的理解,迭代加速的算法实现。 五、教案正文 6.1 迭代公式的加工 迭代过程收敛缓慢,计算量将很大,需要进行加速。 设k x 是根*x 的某个近似值,用迭代公式校正一次得()k k x x ?=+1,假设) ('x ?

在所考察得范围内变化不大,其估计值为L ,则有: k k k k x L L x L x x x L x x ---≈?-≈-++111)(1**1* 有迭代公式k k k x L L x L x ---=++11111 ,是比1+k x 更好的近似根。这样加工后的计算过程为: 迭代()k k x x ?=+1 改进k k k x L L x L x ---= ++11111 合并的])([111k k k Lx x L x --=+? 例3 P133 6.2 埃特金算法 上述加速方法含有导数()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 得 k k k k k k k k k k x x x x x x x x x x x x x x x +---≈?--≈--++++++++112 111*1**1*1*2~)~(~~ 计算过程如下: 迭代()k k x x ?=+1 迭代()11~++=k k x x ? 改进k k k k k k k x x x x x x x +---=++++++11211112~)~(~ 小结:这节课我们主要介绍了线性方程组迭代法加速的基本思想及其常用的几种迭代方法。要求大家掌握埃特金算法及其收敛速度,收敛的阶。 作业:课后作业10-13

迭代初值及公式对迭代收敛速度影响

本科生课程设计报告实习课程数值分析 学院名称管理科学学院 专业名称 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一六年六月

填写说明 1、专业名称填写为专业全称,有专业方向的用小括号标明; 2、格式要求:格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下 2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩 放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4 号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参 照《参考文献着录规则(GB/T 7714-2005)》。 迭代初值及公式对迭代收敛速度影响 摘要 迭代收敛速度受到迭代函数和初始迭代值的影响。 本实验在于体会在非线性方程求根的迭代法中,迭代函数和初始迭代值的选取对迭代收敛性的影响,sttefensen加速的效果,并试图总结一些规律。

关键词: sttenfensen加速;迭代初值;收敛速度

目录 第1章前言............................................................... 1.1 内容及要求.......................................................................................... 1.2 研究思路及结构安排 .......................................................................... 第2章相关理论知识........................................................ 2.1 迭代法 ................................................................................................. 2.2 迭代收敛 ............................................................................................. 第3章算法分析............................................................ 3.1 单一迭代算法步骤及流程图 .............................................................. 第4章算法实现............................................................ 4.1程序总体结构....................................................................................... 4.2 源程序清单.......................................................................................... 4.3程序运行 .............................................................................................. 第5章结果分析............................................................ 参考文献...................................................................

数值计算_第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

加速收敛方法概述

加速收敛方法概述 1 当地时间步长法 原理: 根据稳定性条件,对于方程的显示时间推进必须遵循Courant条件。为了增加时间步长,提高收敛效率,采用当地时间步长。当地时间步长方法就是在时间推进求解每个网格上的数值解时,采用该网格单元满足稳定性条件的最小时间步长,而不是整个计算域内的所有结点都满足稳定性条件的最小时间步长,这可以大大减少计算量。 U IJ t =R IJ U ij n+1?U ij n ?t =R ij 原来时间步长:?t~min CFL?x λ 受制于最小空间步长。边界层近壁空间网格y w+≈1 ?x~10?4 ~10?6, 因此?t也很小,计算速度慢。 当地时间步长:每点采用不同的时间步长推进 U ij n+1?U ij n (?t) ij =R ji 数值方法: S表示该网格单元面积,n表示该网格单元的边法向,c表示当地声速,CFL为Courant数。适用性: 对定常问题,收敛后不影响计算精度,可大幅加速收敛。 2多重网格方法 多重网格时近几十年来发展起来的一种加速收敛方法。它先被用于加速收敛椭圆型问题,该方法能够使得迭代矩阵的谱半径与网格间距无关。随着计算流体力学的发展,多重网格在求解欧拉方程、N-S方程过程中得到了应用:Jamson等人首先将其运用到中心差分格式中,并结合runge-kutta法加速了收敛:D.J Marviplis等人将其运用到非结构网格中,并取得了较好的效果。 多重网格算法的基本思想是引入一系列连续变粗的网格,并将其计算流场发展的部分任务转移到粗网格上进行。细网格上的低频误差在粗网格上相当于高频误差,因此用一种消除高频误差的有效方法,在各自的网格上消除相对于该网格的高频误差,但对细网格而言,就消除了一系列频率的误差。这样做的目的有两个好处: (1)在粗网格上推进一步所需要的时间要少得多,工作量小,提高计算效率; (2)在粗网格上空间步长大,推动了解的快速发展,从而使得迭代较少的步数就可能将误差推到计算域外。 这两个优点皆能加速流场的发展,使得迭代的步数较少,减少了工作量。具体的执行是在粗网格与密网格上交替进行。 多重网格的缺点之一是难以表达粗网格与密网格之间的几何关系。尤其对非结构网格,由于

线性方程组的迭代解法(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

迭代加速技术

四川理工学院《数值计算方法》课程设计 题目迭代加速技术 专业数学与应用数学 班级2013级1班 姓名高尚牟庆张玉玲

一、摘要 (2) 二、应用计算方法的基本原理 (3) 2.1.Aitken加速法 (3) 2.1.1算法描述 (3) 2.2.Steffensen迭代法 (3) 2.2.1算法描述 (3) 三、例题的计算及结果 (4) 3.1.Aitken加速法迭代法在水力计算中的应用 (4) 3.1.1收缩水深的计算 (4) 3.2用Steffensen迭代法计算方程的近似解 (5) 3.2.1用Steffensen迭代法计算31 =-在0 1.5 x x x=附近的近似解 (5) 四、总结及心得体会 (6) 五、参考文献 (6)

一、摘要 本设计报告主要围绕Aitken加速法和Steffensen 迭代法展开。 在生活中面对实际问题时,常常遇到非线性方程的求解问题,为此,我们常使用迭代技术求解,但一般的迭代技术不一定收敛且收敛速度慢,带来大量的计算问题,为了提高计算效益,我们采用迭代加速技术求解此类问题,迭代加速技术有Aitken加速法和Steffensen迭代法,其中Steffensen迭代法将Aitken加速技巧与不动点迭代相结合,更易于计算。 首先根据方程构造一个迭代函数,根据基本原理中两种加速迭代格式公式进 行迭代,最终得到结果。最后我们对本次课程设计进行了总结,总结了程序的优 缺点并对本次试验过程中遇到的问题及困难进行了解答,此外我们还写出了对本 次课程设计的心得体会。

二、应用计算方法的基本原理 2.1.Aitken 加速法 2.1.1算法描述 Aitken 加速法是一个很重要的加速法,他是基于简单迭代法的迭代函数构造新的迭代函数而产生的。 设{}k x 是一个线性收敛的序列,收敛于方程()x x ?=的根*x ,因{}k x 线性收敛于根*x ,故对充分大的k ,有 )0(* * 1≠≈--+c c x x x x k k (1) c x x x x k k ≈--++* 1* 2 (2) 由上面两式得 ≈--+* *1x x x x k k *1* 2x x x x k k --++ (3) 解得 k k k k k k k k k k k k x x x x x x x x x x x x x +--- =+--≈+++++++++122122122 1 2* 2)(2 (4) 或 k k k k k k x x x x x x x +--- ≈++++122 12* 2)( (5) 把式(4)右端的值作为新的近似值k x ~,可望获得更好的近似结果,于是提 出Aitken 加速方案。 迭代: 1()k k x x ?+= (6) 在迭代: 21()k k x x ?++= (7) 加速: k k k k k k k x x x x x x x +--- ≈+++122 12)(~ (8) 2.2.Steffensen 迭代法 2.2.1算法描述 Steffensen 迭代法主要用于改善线性收敛或不收敛迭代。现在,针对一种不动点迭代函数?,其不动点为*x ,由0x 出发构建迭代公式

方程的加速迭代法

2013-2014(1)专业课程实践论文题目:方程的加速迭代方法

一、算法理论 Aitken 加速迭代算法基本原理: 对于收敛的迭代过程,只要迭代足够多次,就可以使结果达到任意的精度。但有时迭代过程收敛缓慢,从而使计算量变得很大,因此,迭代过程的加速是个重要的过程。 设0x 是跟*x 的某个预测值,只迭代公式校正一次)(01x f x =,而由微分中值定理有:)x (x (t)f x x **-?'=-01(其中t 介于*x 与0x 之间) 。 假定()x f '改变不大,近似的取某个近似值L ,则由)(*0*1x x L x x -?≈-得到 L x L L x x -?- -= 1101 *,可以期望按上式右端求得 ()L x x L x L L x L x x --?+ =-?--= 11101101 2是比1x 更好的近似值,将每得到一次改进值算做一步,并用k x '和k x 分别表示第K 步的校正值和改进值,则加速迭代计算方案可表述如下: 校正:1+'k x ()k x f = 改进:=+1k x ()L x x L x k k k --'?+'++111 然而上述加速公式有个缺点,由于其中含有倒数()x f '的有关信息L ,实际使用不便。 仍设已知*x 的某个猜测值为0x ,将校正值()01x f x =,再校正一次,又得 ()12x f x =。由于≈-*2x x ()*1L x x -?将它与式 = *x L x L L x -?- -1101 联立,消去未知L ,然后有 =*x ()2 102 1222x x x x x x +?--- 这样构造出的改进公式确定不再含有关于导数的

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

解线性方程组的几种迭代算法 内容摘要: 本文首先总结了分裂法解线性方程组的一些迭代算法,在此基础上分别通过改变系数矩阵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 ,,,;,,, 三. 程序框图

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

线性方程组的直接法 直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。 线性方程组迭代法 迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法.该方法具有对计算机的存贮单元需求少,程序设计简单、原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法.迭代法不是用有限步运算求精确解,而是通过迭代产生近似解逼近精确解.如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");

线性方程组的迭代法

第六章 线性方程组的迭代法 一、教学目标及基本要求 通过对本节的学习,使学生掌握线性方程组的数值解法。 二、教学内容及学时分配 本节主要介绍线性方程组的数值解法,迭代公式的建立,迭代收敛性。 三、教学重点难点 1.教学重点:迭代公式的建立、迭代收敛性。 2. 教学难点:迭代收敛性。 四、教学中应注意的问题 多媒体课堂教学为主。适当提问,加深学生对概念的理解。 6.2 解线性方程组的迭代法 重要性:解线性代数方程组的有效方法在计算数学和科学计算中具有特殊的地位和作用。如弹性力学、电路分析、热传导和振动、以及社会科学及定量分析商业经济中的各种问题。在实际问题中产生的线性方程组的类型有很多,如按系数矩阵含零元素多少分类,有稠密和稀疏(零元素占80%以上)线性方程组之分;如按阶数的高低分类,有高阶(阶数在1000阶以上)中阶、(500~1000阶) 和低阶(500阶以下)线性方程组之分;如按系数矩阵的形状和性质分类,有对称正定、三对角、对角占优线性方程组之分。因为数值解法必须考虑方法的计算时间和空间效率以及算法的数值稳定性。因此,不同类型的线性方程组,其数值解法也不相同。但是,基本的方法可以归结为两大类,即直接法和迭代法。 分类:线性方程组的解法可分为直接法和迭代法两种方法。 (a) 直接法:对于给定的方程组,在没有舍入误差的假设下,能在预定的运算次数内求得精确解。最基本的直接法是Gauss 消去法,重要的直接法全都受到Gauss 消去法的启发。计算代价高。但实际计算中由于舍入误差的存在和影响,这种方法也只能求得线性方程组的近似解,如何避免舍入误差的增长是设计直接法时必须考虑的问题。 (b) 迭代法:基于一定的递推格式,产生逼近方程组精确解的近似序列。收敛性是其为迭代法的前提,此外,存在收敛速度与误差估计问题。迭代法要求方程组系数矩阵具有某种特殊形式(如对角占优阵),是解高阶稀疏矩阵方程组的重要方法。 §6.1 迭代公式的建立 迭代法的基本思想是用逐次逼近的方法求线性方程组的解。 设有方程组b Ax = (1) 将其转化为等价的便于迭代的形式f Bx x += (2) (这种转化总能实现,如令b f A I B =-=,)并由此构造迭代公式

相关文档
最新文档