东北大学数值分析实验报告.docx
- 文档编号:9243931
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:58
- 大小:95.65KB
东北大学数值分析实验报告.docx
《东北大学数值分析实验报告.docx》由会员分享,可在线阅读,更多相关《东北大学数值分析实验报告.docx(58页珍藏版)》请在冰豆网上搜索。
东北大学数值分析实验报告
数值分析实验
班级姓名学号
实验环境:
MATLAB
实验一解线性方程组的迭代法
一、实验题目对以下方程组分别采用Jacobi迭代法,Gaaus-Seidel迭代法求解和SOR迭代法求解。
(1)线性方程组
=
(2)对称正定线性方程组
=
(3)三对角线性方程组
=
二、实验要求
(1)应用迭代法求线性方程组,并与直接法作比较。
(2)分别对不同精度要求,如ε=
,
,利用所需迭代次数体会改迭代法的收敛快慢。
(3)对方程组使用SOR方法时,选取松弛因子ω=0.8,0.9,1,1.1,1,1.2等,试观察对算法收敛性的影响,并找出你所选的松弛因子的最佳值。
(4)编制出各种迭代法的程序并给出计算结果。
3、源程序及实验结果
Jacobi迭代法函数为
function[x,k]=Jacobi(A,b,x0,wc)
n=length(b);k=0;x=x0;
whilemax(abs(b-A*x0))>wc&k<=500
fori=1:
n
sum=0;
forj=1:
n
ifj~=i
sum=sum+A(i,j)*x0(j)
end
end
x(i)=(b(i)-sum)/A(i,i);
end
x0=x;k=k+1;
ifk>500
fprintf('µü´ú´ïµ½ÉÏÏÞ')
return
end
end
Gauss-Seidel迭代法函数为
function[x,k]=Gaussseidel(A,b,x,wc,N)
n=length(b);k=0;
whilemax(abs(b-A*x))>wc&k<=N
fori=1:
n
sum=0;
forj=1:
n
ifj~=i
sum=sum+A(i,j)*x(j)
end
end
x(i)=(b(i)-sum)/A(i,i);
end
k=k+1;
ifk>=N
fprintf('?
ü?
ú?
?
?
?
?
?
?
?
')
return
end
end
SOR迭代法的函数
function[x,k]=SOR(A,b,x0,emg,N,w)
n=length(b);
x=zeros(n,1);
r=max(abs(b-A*x0));
k=0;
while(r>emg)&(k fori=1: n sum=0; forj=1: n ifj>i sum=sum+A(i,j)*x0(j); elseifj sum=sum+A(i,j)*x(j); end end x(i)=(1-w)*x0(i)+w(b(i)-sum)/A(i,i); end r=max(abs(x-x0)); x0=x;k=k+1; ifk>=N warning('? ? ? ? ? ? ? ? ! '); return end end 方程组一 直接求解法 >>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]'; >>x=inv(A)*b 运行结果 x= 1.0000 -1.0000 -0.0000 1.0000 2.0000 -0.0000 3.0000 1.0000 -1.0000 2.0000 Jacobi方法 (1)精度为 时 (2)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]'; x0=[0000000000]'; [x,k]=Jacobi(A,b,x0,1e-3) 运行结果 x= 1.0e+307* -0.6183 -1.2682 -1.9643 Inf Inf NaN 0.0572 Inf Inf 0.0575 k= 495 (2)精度为 时 >>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]'; x0=[0000000000]'; [x,k]=Jacobi(A,b,x0,1e-4) 运行结果 x= 1.0e+307* -0.6183 -1.2682 -1.9643 Inf Inf NaN 0.0572 Inf Inf 0.0575 k= 495 (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]'; x0=[0000000000]'; [x,k]=Jacobi(A,b,x0,1e-5) 运行结果 x= 1.0e+307* -0.6183 -1.2682 -1.9643 Inf Inf NaN 0.0572 Inf Inf 0.0575 k= 495 结论由以上实验结果可知该方程组不能使用Jacobi迭代法求解。 Gauss-Seidel迭代法 (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]'; x=[0000000000]'; [x,k]=Gaussseidel(A,b,x,1e-3,500) 实验结果 x= 1.0e+307* 0.0460 -0.0754 0.6126 -1.2732 -1.6558 Inf -Inf NaN NaN NaN k= 249 (2)精度为 时 >>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]'; x=[0000000000]'; [x,k]=Gaussseidel(A,b,x,1e-4,500) 实验结果 x= 1.0e+307* 0.0460 -0.0754 0.6126 -1.2732 -1.6558 Inf -Inf NaN NaN NaN k= 249 (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]'; x=[0000000000]'; [x,k]=Gaussseidel(A,b,x,1e-5,500) 实验结果 x= 1.0e+307* 0.0460 -0.0754 0.6126 -1.2732 -1.6558 Inf -Inf NaN NaN NaN k= 249 结论由以上实验结果可知该方程组不能用Gauss-Seidel方法求解。 且SOR迭代法是J迭代法或者GS迭代法的改进,所以该方程组一定不能使用SOR迭代法求解。 方程组二 直接法 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x=inv(A)*b 运行结果 x= 1.0000 -1.0000 -0.0000 2.0000 1.0000 -1.0000 0.0000 2.0000 Jacobi方法 (1)求解精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=Jacobi(A,b,x0,1e-3) 运行结果 x= 1.0e+144* -1.4659 -2.2112 0.6014 0.8769 -0.3575 -0.9590 -0.0305 0.3007 k= 501 (2)精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=Jacobi(A,b,x0,1e-4) 实验结果 x= 1.0e+144* -1.4659 -2.2112 0.6014 0.8769 -0.3575 -0.9590 -0.0305 0.3007 k= 501 (3)精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=Jacobi(A,b,x0,1e-5) 实验结果 x= 1.0e+144* -1.4659 -2.2112 0.6014 0.8769 -0.3575 -0.9590 -0.0305 0.3007 k= 501 结论由此结果可知次方程组由Jacobi方法求解时,收敛速度太慢,不能求出较为精确的解。 Gauss-Seidel迭代法 (1)求解精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x=[00000000]'; [x,k]=Gaussseidel(A,b,x,1e-3,500) 运行结果 x= 1.0475 -1.0558 0.0111 1.9753 1.0039 -1.0101 0.0024 1.9986 k= 364 (2)精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x=[00000000]'; [x,k]=Gaussseidel(A,b,x,1e-4,500) 实验结果 x= 1.0232 -1.0272 0.0054 1.9880 1.0019 -1.0049 0.0012 1.9993 k= 500 (3)精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x=[00000000]'; [x,k]=Gaussseidel(A,b,x,1e-5,1000) 实验结果 x= 1.0017 -1.0020 0.0004 1.9991 1.0001 -1.0004 0.0001 2.0000 k= 1000 结论由以上实验结果可知Gauss-Seidel迭代法比Jacobi迭代法具有更好的收敛速度,但是对于此方程组收敛速度还是较慢。 SOR迭代法 (1) ω=0.8时 求解精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=SOR(A,b,x0,1e-3,500,0.8) 实验结果 x= 1.1040 -1.1182 0.0254 1.9473 1.0097 -1.0236 0.0059 1.9961 k= 13 精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=SOR(A,b,x0,1e-4,500,0.8) 实验结果 x= 1.0241 -1.0284 0.0057 1.9875 1.0020 -1.0051 0.0012 1.9993 k= 427 精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=SOR(A,b,x0,1e-5,1000,0.8) 实验结果 x= 1.0032 -1.0038 0.0008 1.9983 1.0003 -1.0007 0.0002 1.9999 k= 1000 (2)ω=0.9时 求解精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=SOR(A,b,x0,1e-3,500,0.9) 实验结果 x= 1.1940 -1.2270 0.0459 1.8997 1.0164 -1.0418 0.0102 1.9941 k= 14 精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=SOR(A,b,x0,1e-4,500,0.9) 实验结果 x= 1.0238 -1.0280 0.0056 1.9876 1.0020 -1.0051 0.0012 1.9993 k= 500 精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=SOR(A,b,x0,1e-5,1000,0.9) 实验结果 x= 1.0028 -1.0032 0.0006 1.9986 1.0002 -1.0006 0.0001 1.9999 k= 1000 (3)ω=1.0时 求解精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219]; b=[0-662311-22-1545]'; x0=[00000000]'; [x,k]=SOR(A,b,x0,1e-3,1000,1) 实验结果 x= 1.1604 -1.1886 0.0377 1.9166 1.0133 -1.0342 0.0082 1.9953 k= 133 精度为 时 >>A=[42-402400;22-1-21320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 数值 分析 实验 报告