大型稀疏矩阵数值方法Word文档下载推荐.docx
- 文档编号:20471440
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:12
- 大小:61.83KB
大型稀疏矩阵数值方法Word文档下载推荐.docx
《大型稀疏矩阵数值方法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《大型稀疏矩阵数值方法Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
4.1Jacobi迭代法9
4.2Gauss-Seidel迭代法10
3.3SOR方法(精度取
)10
5、心得体会11
1、问题的提出
在阶数较大、系数阵为稀疏阵的情况下,可以采用迭代法求解线性方程组。
用迭代法(IterativeMethod)求解线性方程组的优点是方法简单,便于编制计算机程序,但必须选取合适的迭代格式及初始向量,以使迭代过程尽快地收敛。
迭代法根据迭代格式的不同分成雅可比(Jacobi)迭代、高斯-塞德尔(Gauss-Seidel)迭代和松弛(Relaxation)法等几种。
对下列线性方程组,试用Jacobi迭代法,Gauss-Seidol迭代法和SOR方法求解。
(1)
(2)
2、数学原理
2.1Jacobi迭代法
设线性方程组
(1)
的系数矩阵A可逆且主对角元素均
不为零,令
并将
分解成
从而
(1)可写成
令
其中
.
以
为迭代矩阵的迭代法(公式)
称为雅可比(Jacobi)迭代法,其分量形式为
为初始向量.
2.2Gauss-Seidol迭代法
由雅可比迭代公式可知,在迭代的每一步计算过程中是用
的全部分量来计算
的所有分量,显然在计算第
个分量
时,已经计算出的最新分量
没有被利用。
把矩阵
分别为
的主对角元除外的下三角和上三角部分,于是,方程组便可以写成
即
为迭代矩阵构成的迭代法(公式)
称为高斯—塞德尔迭代法,用分量表示的形式为
2.3SOR方法
逐次超松弛迭代法是对高斯—赛德尔迭代的一种改进,在高斯—赛德尔迭代的基础上加入松弛因子
,使得
与
的误差
由
控制。
由高斯—赛德尔迭代公式:
得出SOR迭代算法:
,其中,
为松弛因子。
迭代的控制条件为:
,
得出SOR的计算公式为:
,
则存在,
则,
3、程序设计
3.1Jacobi迭代法
function[x2,k]=Jacobi(A,b,eps,num)
%用雅克比迭代法求解方程组Ax=b
%输入:
A为方程组的系数矩阵,b为方程组右端的列向量,nm为最大迭代次数,eps为误差精度
%输出:
x为求得的方程组的解构成的列向量,k为迭代次数[m,n]=size(A);
D=diag(diag(A));
%求矩阵D
x1=zeros(m,1);
k=0;
G=eye(m)-inv(D)*A;
%计算迭代矩阵
ifmax(abs(eig(G)))>
1%谱半径大于1,迭代不收敛……
disp('
谱半径大于1,迭代不收敛'
);
end
H=inv(D)*b;
whilek<
num
k=k+1;
%记录循环次数
x2=G*x1+H;
%雅克比迭代公式
norm(x2-x1),
ifnorm(x2-x1)<
eps
在最大迭代次数内收敛!
'
x2,
return;
end
x1=x2;
end
disp('
在最大迭代次数内不收敛!
x2,
3.2Gauss-Seidel迭代法
function[x,k]=Gauss_Seidel(A,b,eps,num)
%用Gauss-Seidel迭代法求解方程组Ax=b
x为求得的方程组的解构成的列向量,k为迭代次数
[m,n]=size(A);
L=tril(A)-D;
%求矩阵L
U=triu(A)-D;
%求矩阵U
G=inv(D-L)*U;
H=inv(D-L)*b;
k,x2'
k,x2'
3.3SOR方法
function[x,k]=SOR(A,b,omega,eps,num)
%用SOR法求解方程组Ax=b
A为方程组的系数矩阵,b为方程组右端的列向量,nm为最大迭代次数,eps为误差精度,omega松弛因子
fs=omega*inv(D-omega*L)*b;
bs=inv(D-omega*L)*((1-omega)*D+omega*U);
ifmax(abs(eig(bs)))>
x2=bs*x1+fs;
k,
k,
3.4主程序
clc;
clear;
A1=[42-31210000;
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;
];
b1=[51232346232619-21]'
;
maxnum=10^5;
fori=3:
5
----------------------精度--------------------'
eps=10^(-i);
disp(eps);
雅克比迭代法'
Jacobi(A1,b1,eps,maxnum);
Gauss-Seidel方法'
Gauss_Seidel(A1,b1,eps,maxnum);
fori=8:
12
----------------------松弛因子--------------------'
omega=i/10.0;
disp(omega);
SOR方法'
SOR(A1,b1,omega,10^(-5),maxnum);
zeros9=zeros(9,1);
zeros10=zeros(1,10);
diag1=-1*eye(9);
tempU=[[zeros9,diag1];
zeros10];
tempL=[zeros10;
[diag1,zeros9]];
A2=4*eye(10)+tempU+tempL;
b2=[75-1326-1214-45-5]'
Jacobi(A2,b2,eps,maxnum);
Gauss_Seidel(A2,b2,eps,maxnum);
SOR(A2,b2,omega,10^(-5),maxnum);
4、结果分析和讨论
4.1Jacobi迭代法
精度
方程组
方程组一谱半径大于1,迭代不收敛谱半径大于1,迭代不收敛谱半径大于1,迭代不收敛
方程组二121519
结果分析:
(1)、对于方程组一,通过计算,因谱半径大于1,迭代不收敛,不可使用Jacobi迭代法求解。
(2)、对于方程组一,因谱半径小于1,迭代收敛。
同时可以发现:
随着精度要求的提高,迭代次数提高。
4.2Gauss-Seidel迭代法
方程组二91113
)
松弛因子
方程组0.80.91.01.11.2方程组一谱半径大于1,迭代不收敛谱半径大于1,迭代不收敛谱半径大于1,迭代不收敛谱半径大于1,迭代不收敛谱半径大于1,迭代不收敛方程组二1916131113结果分析:
当松弛因子取1.1时,迭代次数较小。
(3)、综上可得:
SOR方法的迭代次数最少。
5、心得体会
本次试验涉及到了用Jacobi迭代法,Gauss-Seidol迭代法和SOR方法3种方法。
需要对这些方法的原理都要掌握才能写出程序,由于理论知识的欠缺,我花了很大一部分时间在看懂实验的原理上,看懂了实验原理之后就开始根据原理编写程序,程序中还是出现了很多的低级错误导致调试很久才能运行。
通过这次试验使我深刻的体会到理论知识的重要性,没有理论知识的支撑是写不出程序来的。
写程序时还会犯很多低级的错误,以后一定要加强理论知识的学习,减少编程时低级错误的产生。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大型 稀疏 矩阵 数值 方法