常微分方程的解线性方程组的迭代法
- 格式:doc
- 大小:91.50 KB
- 文档页数:17
实验五 解线性方程组的迭代法
【实验内容】
对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 *