- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
解线性方程组及直接法及Matlab实现1
学校编码:****** 分类号 密级
学号:********* UDC
本科毕业论文(设计)
解线性方程组的直接法的Matlab实现
学生姓名:***********************
所属院部:***********************
专 业:***********************
指导教师:***********************
2014年 5 月 14 日
摘要:给出用MATLAB解线性方程组的各种方法,用MATLAB直接操作,不用编程,便可立即求出线性方程组的解.方法直观、简便、速度快,具有较强的实用性,另外提供了Jacobi迭代法程序.
关键字:线性方程组 数值解 程序设计 MATLAB Jacobi迭代法 数据结构
1 引言
在自然科学与社会科学的研究中,常常需要求解线性代数方程组,如实验数据的曲线、曲面的拟合和用差分法或有限元法解偏微分方程等都要用到线性代数方程组的求解。由于从不同的问题导出的线性代数方程组的系数矩阵不同,比如:矩阵阶数的大小、矩阵中的非零元稠密情况等,粗略地,系数矩阵可以分为低阶稠密矩阵和大型稀疏矩阵。关于线性代数程组的求解,主要分为直接法和迭代法两大类,在理论上,用直接法可以通过有限步的计算得到精确解,而迭代法是通过逐次迭代逼近来求得近似解,实际上,由于舍入误差的影响,由直接法得到的解也不精确,因此,在某些需要高精度解的问题中,常常把由直接法得到的解再运用迭代法迭代若干步,以提高解的精度,一般地说,对于低阶稠密的线性代数方程组以及大型带形方程组的求解,采用直接法比较有效,而对于大型稀疏(非带形)方程组则用迭代法求解比较有利。当然,采用直接法,还是迭代法,还是直接法与迭代法交替运用,要根据具体情况确定。本章主要讨论一些最基本的直接法,并在此基础上讨论它的变形情况,JOR雅可比超松弛迭代法求线性方程组Ax=b的解
function [x,n]=JOR(A,b,x0,w,eps,M)
if nargin==4
eps= 1.0e-6;
M = 10000;
elseif nargin ==5
M = 10000;
end
if(w=0 || w=2) %
收敛条件要求
error;
return;
end
D=diag(diag(A)); %
求A的对角矩阵
B=w*inv(D); %迭代过程
x=x0;
n=0; %
迭代次数
tol=1; %
迭代过程
while tol=eps
x=x0-B*(A*x0-b);
n = n+1;
tol = norm(x-x0);
x0 = x;
if(n=M)
disp(Warning:
迭代次数太多,可能不收敛!
);
return;
end
end
twostep
两步迭代法求线性方程组Ax=b的解
function [x,n]=twostep(A,b,x0,eps,varargin)
if nargin==3
eps= 1.0e-6;
M = 200;
elseif nargin3
error
return
elseif nargin ==5
M = varargin{1};
end
D=diag(diag(A)); %
求A的对角矩阵
L=-tril(A,-1); %
求A的下三角阵
U=-triu(A,1); %
求A的上三角阵
B1=(D-L)\U;
B2=(D-U)\L;
f1=(D-L)\b;
f2=(D-U)\b;
x12=B1*x0+f1;
x =B2*x12+f2;
n=1; %
迭代次数
while norm(x-x0)=eps
x0 =x;
x12=B1*x0+f1;
x =B2*x12+f2;
n=n+1;
if(n=M)
disp(Warning:
迭代次数太多,可能不收敛!
);
return;
end
end
fastdown
文档评论(0)