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

  • 格式:doc
  • 大小:91.50 KB
  • 文档页数:17

下载文档原格式

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

实验五 解线性方程组的迭代法

【实验内容】

对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;

elseif nargin==5

M=varargin{1};

end

D=diag(diag(A));

L=-tril(A,-1);

U=-triu(A,1);

B=D\(L+U);

f=D\b;

x=B*x0+f;

n=1;

while norm(x-x0)>=eps

x0=x;

x=B*x0+f;

n=n+1;

if(n>=M)

diso('不收敛!')

return;

end

end

解1的程序为A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;-4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1;],b=[5 12 3 2 3 46 13 38 19 -21]'

A =

Columns 1 through 4

4 2 -3 -1

8 6 -5 -3

4 2 -2 -1

0 -2 1 5

-4 2 6 -1

8 6 -8 5

0 2 -1 3

16 10 -11 -9

4 6 2 -7

0 0 -1 8

Columns 5 through 8

2 1 0 0

6 5 0 1

3 2 -1 0

-1 3 -1 1

6 7 -3 3

7 17 2 6

-4 2 5 3

17 34 2 -1

13 9 2 0

-3 -24 -8 6

Columns 9 through 10

0 0

0 0

3 1

9 4

2 3

-3 5

0 1

2 2

12 4

3 -1

b =

5

12

3

2

3

46

13

38

19

-21

>> x0=ones(10,1);

>> [x,n]=Jacobi(A,b,x0)

得到的结果为Warning: Function call Jacobi invokes inexact match d:\MATLAB7\work\jacobi.m.

不收敛!

x =

1.0e+124 *