常微分方程的解线性方程组的迭代法.docx
- 文档编号:24976111
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:10
- 大小:111.92KB
常微分方程的解线性方程组的迭代法.docx
《常微分方程的解线性方程组的迭代法.docx》由会员分享,可在线阅读,更多相关《常微分方程的解线性方程组的迭代法.docx(10页珍藏版)》请在冰豆网上搜索。
常微分方程的解线性方程组的迭代法
实验五 解线性方程组的迭代法
【实验内容】
对1、设线性方程组
2、设对称正定系数阵线性方程组
3、三对角形线性方程组
试分别选用Jacobi迭代法,Gauss-Seidol迭代法和SOR方法计算其解。
【实验方法或步骤】
1、体会迭代法求解线性方程组,并能与消去法加以比较;
2、分别对不同精度要求,如
由迭代次数体会该迭代法的收敛快慢;
3、对方程组2,3使用SOR方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;
4、给出各种算法的设计程序和计算结果。
程序:
用雅可比方法求的程序:
function[x,n]=jacobi(A,b,x0,eps,varargin)
ifnargin==3
eps=1.0e-6;
M=200;
elseifnargin==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;
whilenorm(x-x0)>=eps
x0=x;
x=B*x0+f;
n=n+1;
if(n>=M)
diso('不收敛!
')
return;
end
end
解1的程序为A=[42-3-1210000;86-5-3650100;42-2-132-1031;0-215-13-1194;-426-167-3323;86-8571726-35;02-13-425301;1610-11-917342-122;462-713920124;00-18-3-24-863-1;],b=[51232346133819-21]'
A=
Columns1through4
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
Columns5through8
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
Columns9through10
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:
FunctioncallJacobiinvokesinexactmatchd:
\MATLAB7\work\jacobi.m.
不收敛!
x=
1.0e+124*
-0.1794
-0.3275
-0.7094
1.5990
1.0311
0.3291
0.2464
4.3905
0.4927
-2.6574
n=
200即迭代了200次而且可能不收敛
A=
4 2 -4 0 4 2 0 0
2 2 -1 2 1 3 2 0
-4 -1 14 1 -8 -3 5 6
0 -2 1 6 -1 -4 -3 3
2 1 -8 -1 22 4 -10 -3
4 3 -3 -4 4 11 1 -4
0 2 5 -3 -10 1 14 2
0 0 6 3 -3 -4 2 19
b= 0
-6
20
23
9
-22
-15
45
>>x0=ones(8,1);
>>[x,n]=Jacobi(A,b,x0)
不收敛!
x=
1.0e+047*
0.9627
1.0084
-0.4954
-0.5979
0.3097
0.6872
-0.0666
-0.2629
n=200此方程可能不收敛
A=[4-100000000;-14-10000000;0-14-1000000;00-14-100000;000-14-10000;0000-14-1000;00000-14-100;000000-14-10;0000000-14-1;00000000-14;],b=[75-1326-1214-45-5]'
A=
Columns1through5
4 -1 0 0 0
-1 4 -1 0 0
0 -1 4 -1 0
0 0 -1 4 -1
0 0 0 -1 4
0 0 0 0 -1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Columns6through10
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
-1 0 0 0 0
4 -1 0 0 0
-1 4 -1 0 0
0 -1 4 -1 0
0 0 -1 4 -1
0 0 0 -1 4
b=
7
5
-13
2
6
-12
14
-4
5
-5
>>x0=ones(10,1);
>>[x,n]=Jacobi(A,b,x0)
x=
2.0000
1.0000
-3.0000
0.0000
1.0000
-2.0000
3.0000
0.0000
1.0000
-1.0000
n=22得到结果为迭代了22次得到近似解为x=2.00001.0000-3.00000.00001.0000-2.00003.00000.00001.0000-1.0000
用高斯赛德尔源程序
function[x,n]=gauseidel(A,b,x0,eps,M)
ifnargin==3
eps=1.0e-6;
M=200;
elseifnargin==4
M=200;
elseifnargin<3
error
return;
end
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
G=(D-L)\U;
f=(D-L)\b;
x=G*x0+f;
n=1;
whilenorm(x-x0)>=eps
x0=x;
x=G*x0+f;
n=n+1;
if(n>=M)
disp('Warning:
不收敛!
');
return;
end
end
解上面3个方程组的程序分别为
第一个方程A=[42-3-1210000;86-5-3650100;42-2-132-1031;0-215-13-1194;-426-167-3323;86-8571726-35;02-13-425301;1610-11-917342-122;462-713920124;00-18-3-24-863-1;],b=[51232346133819-21]'
A=
4 2 -3 -1 2 1 0 0 0 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微分方程 线性方程组 迭代法