- 1、本文档共81页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四 线性方程组的迭代解法
实验目的
(1) 学会用Jacobi迭代法、Gauss- Seidel迭代法和超松弛迭代法求线性方程组解
(2) 学会对各种迭代法作收敛性分析,研究求方程组解的最优迭代方法.
(3) 按照题目要求完成实验内容,写出相应的Matlab程序,给出实验结果.
(4) 对实验结果进行分析讨论.
(5) 写出相应的实验报告.
二、实验内容
1.熟悉Jacobi迭代法,并编写Matlab程序
matlab程序
按照算法(Jacobi迭代法)编写Matlab程序(Jacobi.m)
function[x,k,index]=Jacobi(A,b,ep,it_max)
% 求解线性方程组的Jacobi迭代法,其中,
% A为方程组的系数矩阵;
% b为方程组的右端项;
% ep为精度要求,缺省值1e-5;
% it_max为最大选代次数,缺省值100;
% x为方程组的解;
% k为迭代次数;
% index为指标变量 index=1表示迭代收敛到指定要求,
% , index=0表示迭代失败.
if nargin4 it_max=100;end
if nargin3 ep=1e-5;end
n=length(A);k=0;
x=zeros(n,1);y=x;index=1;
while l
for i=1:n
y(i)=b(i)
for j=1:n
if j = i
y(i)=y(i)-A(i,j)*x(j);
end
end
if abs(A(i,i))1e-10|k== it_max
index=0; return;
end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf)ep
break;
end
e=y;k=k+1;
end
2. 熟悉Gauss-Seidel迭代法,并编写Matlab程序
练习题1. 用Jacobi迭代法求方程组的解。
修改上述程序,得到正确的源程序:
function[x,k,index]=Jacobi(A,b,ep,it_max)
%£¥ ?ó?a??D?·?3ì×éμ?Jacobiμü′ú·¨,???D,
%£¥ A?a·?3ì×éμ??μêy???ó;
%£¥ b?a·?3ì×éμ?óò????;
%£¥ ep?a???èòa?ó£?è±ê??μ1e-5;
%£¥ it_max?a×?′ó??′ú′?êy£?è±ê??μ100;
%£¥ x?a·?3ì×éμ??a;
%£¥ k?aμü′ú′?êy;
%£¥ index?a??±ê±?á? index=1±íê?μü′úê?á2μ????¨òa?ó,
%£¥ index=0±íê?μü′ú꧰ü.
if nargin4 it_max=100;
end
if nargin3 ep=1e-5;
end
n=length(A);
k=0;
x=zeros(n,1);
y=x;
index=1;
while 1
for i=1:n
y(i)=b(i)
for j=1:n
if j~=i
y(i)=y(i)-A(i,j)*x(j);
end
end
if abs(A(i,i))1e-10|k==it_max
index=0;
return;
end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf)ep
break;
end
x=y;k=k+1;
end
主函数:
A=[4 3 0;3 3 -1;0 -1 4]
b=[24;30;-24]
[x,k,index]=Jacobi(A,b)
输出结果:
A =
4 3 0
3 3 -1
0 -1 4
b =
24
30
-24
y =
24
0
0
y =
6
30
0
y =
6
10
-24
y =
24
10
-6
y =
-1.5000
30.0000
-6.0000
y =
-1.5000
2.0000
-24.0000
y =
24.0000
2.0000
-3.5000
y =
4.5000
30.0000
-3.5000
y =
4.5000
10.3333
-2
文档评论(0)