六、线性方程组超松弛迭代方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、用谱半径判别超松弛迭代法产生的迭代序列的脸敛散性。

function H=ddpbj(A,om)

D=diag(diag(A));U=-triu(A,1);

L=-tril(A,-1);iD=inv(D-om*L);

B2=iD*(om*U+(1-om)*D);

H=eig(B2);mH=norm(H,inf);

if mH>=1

disp('谱半径不小于1,序列发散,谱半径和特征值如下:')

else

disp('谱半径小于1,序列收敛,谱半径和特征值如下:')

end

mH

>> A=[5 1 -1 -2;2 8 1 3;1 -2 -4 -1;-1 3 2 7];

>> H=ddpbj(A,1.15)

谱半径小于1,序列收敛,谱半径和特征值如下:

mH =

0.1596

H =

0.1049 + 0.1203i

0.1049 - 0.1203i

-0.1295 + 0.0556i

-0.1295 - 0.0556i

>> H=ddpbj(A,5)

谱半径不小于1,序列发散,谱半径和特征值如下:

mH =

14.1082

H =

-14.1082

-2.5107

0.5996 + 2.6206i

0.5996 - 2.6206i

2、超松弛迭代法的程序。

function X=sordd(A,b,X0,P,om,wucha,max1)

D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);dD=det(D);

if dD==0

disp('因为对角矩阵D奇异,所以此方程组无解。')

else

disp('因为对角矩阵D非奇异,所以此方程组有解。')

iD=inv(D-om*L);B2=iD*((1-om)*D+om*U);f2=om*iD*b;jX=A\b;X=X0;

[n m]=size(A);

for k=1:max1

X1=B2*X+f2;djwcX=norm(X1-X,P);

xdwcX=djwcX/(norm(X,P)+eps);

if (djwcX

return

else

k,X1',k=k+1;X=X1;

end

end

if (djwcX

disp('收敛,A的分解矩阵D,U,L和方程组的精确解jX和近似解X如下;') else

disp('没有达到给定的精度,迭代次数超过最大次数,方程组的精确解jX和近似解X如下;')

X=X';jX=jX'

end

end

X=X';D,U,L,jX=jX'

>> A=[5 1 -1 -2;2 8 1 3;1 -2 -4 -1;-1 3 2 7];

>> b=[4;2;6;-3];

>> X0=[0;0;0;0];

>> X=sordd(A,b,X0,inf,1.15,0.00001,10)

因为对角矩阵D非奇异,所以此方程组有解。

k =

1

ans =

0.9200 0.0230 -1.4737 0.1312

k =

2

ans =

0.4981 0.2961 -1.5687 -0.0612

k =

3

ans =

0.3882 0.3834 -1.5809 -0.0894

k =

4

ans =

0.3689 0.3898 -1.5802 -0.0917

k =

5

ans =

0.3694 0.3896 -1.5794 -0.0915

k =

6

ans =

0.3697 0.3893 -1.5793 -0.0913

k =

ans =

0.3698 0.3892 -1.5793 -0.0913

X =

0.3698

0.3892

-1.5793

-0.0913

>> X=sordd(A,b,X0,inf,5,0.00001,10)

因为对角矩阵D非奇异,所以此方程组有解。k =

1

ans =

4.0000 -3.7500 6.8750 -1.0714

k =

2

ans =

-3.5179 18.3594 -83.9565 80.2264

k =

3

ans =

1.0e+003 *

0.0762 -0.2654 0.9868 -1.1096

k =

4

ans =

1.0e+004 *

-0.1268 0.4111 -1.4431 1.5336

k =

5

ans =

1.0e+005 *

0.1721 -0.5769 2.0427 -2.1726

k =

6

ans =

1.0e+006 *

-0.2414 0.8122 -2.8777 3.0672

k =

7

ans =

1.0e+007 *

0.3410 -1.1464 4.0599 -4.3266

k =

相关文档
最新文档