- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013年工程数值分析作业
Matlab编程
一编程求解
试分别选用Jacobi 迭代法,Gauss-Seidol迭代法计算其解。
Jacobi 迭代法
function[x,n]=jacobi(A,b,x0,eps,varargin)
%采用Jacobi迭代法求线性方程组Ax=b的解
%线性方程组的系数矩阵: A
%线性方程组的常数向量: b
%迭代初始向量: x0
%解的精度控制: eps
%迭代步数控制: varargin
%线性方程组的解: x
%求出所需精度的解实际的迭代步数: n
if nargin==3
eps=1.0e-6;
M=200;
elseif nargin3
return
elseif nargin==5
M=varargin{1};
end
D=diag(diag(A)); %求A的对角矩阵
L=-tril(A,-1); %求A的下三角阵
U=-triu(A,1); %求A的上三角阵
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)
disp(‘warning:迭代次数太多,可能不收敛!’);
return;
end
end
在MATLAB命令窗口中输入求解程序:
A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];
b=[4 7 -1 0];
x0=ones(4,1);
[x,n]=jacobi(A,b,x0)
得
x =
0.4981
0.1443
0.0629
-0.0812
n =
8
Gauss-Seidol迭代法
clear;
clc;
A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];
b=[4 7 -1 0];
N=length(b); %解向量的维数
fprintf(库函数计算结果:);
x=inv(A)*b; %库函数计算结果
x=zeros(N,1);%迭代初始值
%-----(A=D-E-F)------
D=diag(diag(A));
E=-tril(A,-1);%下三角
F=-triu(A,1);%上三角
B=inv(D-E)*F;
g=inv(D-E)*b;
eps=0.0001;%相邻解的距离小于该数时,结束迭代
%--------开始迭代-------
for k=1:100 %最大迭代次数为100
fprintf(第%d次迭代:,k);
y=B*x+g;
fprintf(\n与上次计算结果的距离(2范数):%f \n,norm(x-y)^2);
if norm(x-y)eps
break;
end
x=y
end
x
结果
第1次迭代:
与上次计算结果的距离(2范数):0.349202
x =
0.571428571428571
0.123809523809524
0.035497835497836
-0.077988677988678
第2次迭代:
与上次计算结果的距离(2范数):0.005125
x =
0.508700822986537
0.143948115376687
0.063203751515440
-0.082073282472883
第3次迭代:
与上次计算结果的距离(2范数):0.000119
x =
0.497821921826489
0.144389658937968
0.063162688535757
-0.081332021208608
第4次迭代:
与上次计算结果的距离(2范数):0.000000
x =
0.497913421595870
0.144441806507512
0.062851869295437
-0.081303275362252
第5次迭代:
与上次计算结果的距离(2范数):0.000000
x =
0.497913421595870
0.144441806507512
0.062851869295437
-0.081303275362252
对于精度,从程序计算结果来看,收敛最快,最慢。
二 欧拉法 MATLAB
取步长,用Eu
文档评论(0)