解线性与非线性方程(组)Matlab代码.pdf

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解线性与非线性方程(组)Matlab代码

线性方程组数值方法 (1) % jacobi 迭代法计算线性方程组 function [x,k]=Fjacobi(A,b,x0,tol) % tol 为输入误差容限,x0为迭代初值 max1= 300; %默认最多迭代300 ,超过要300 次给出警告 D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); B=D\(L+U); f=D\b; x=B*x0+f; k=1; %迭代次数 while norm(x-x0)=tol x0=x; x=B*x0+f; k=k+1; if(k=max1) disp(迭代超过300 次,方程组可能不收敛); return; end %[k x] %如果想显示每一步迭代的结果可以把这行命令保留 end (2) %高斯-塞德尔迭代法计算线性方程组 function [x,k]=Fgseid(A,b,x0,tol) % tol 为误差容限 max1= 300; %默认最高迭代300 次 D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); G=(D-L)\U; f=(D-L)\b; x=G*x0+f; k=1; while norm(x-x0)=tol x0=x; x=G*x0+f; k=k+1; if(k=max1) disp(迭代次数太多,可能不收敛); return; end % [k,x] %如果要显示每一步迭代结果,可以这行命令。 end (3) %超松弛迭代法计算线性 function [x,k]=Fsor(A,b,x0,w,tol) %08 年/4 月/14 日 %tol 需要的计算精度 max = 300; %迭代最大次数 %对松弛因子做出限制 if(w=0 || w=2) error; return; end D=diag(diag(A)); %求A 的对角矩阵 L=-tril(A,-1); %求A 的下三角阵 U=-triu(A,1); %求A 的上三角阵 B=inv(D-L*w)*((1-w)*D+w*U); f=w*inv((D-L*w))*b; x=B*x0+f; k=1; %迭代次数 while norm(x-x0)=tol x0=x; x =B*x0+f; k=k+1; if(k=max) disp(迭代次数太多,SOR方法可能不收敛); return; end % [k,x] %如果要显示中间结果,可以保留这行语句 end (4) % Gauss 消去法计算线性方程组 function X=Fgauss(A,b) zengguang=[A b]; n=length(b); ra=rank(A); rz=rank(zengguang); temp1=rz-ra; if temp10, disp(无一般意义下的解,系数矩阵与增广矩阵的秩不同) return end if ra==rz if ra==n X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 for k=p+1:n m= zengguang(k,p)/ zengguang(p,p); zengguang(k,p:n+1)= zengguang(k,p:n+1)-m* zengguang(p,p:n+1); end end b=zengguang(1:n,n+1); A=zengguang(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end else disp(方程为欠定方程。) end end (5) %列主元方法计算线性方程组 function X=Fzhuyuan(A,b) zengguang=[A b]; n=length(b); ra=rank(A); rz=rank(zengguang); temp1=rz-ra; if temp10, disp(方程组无一般意义下的解,系数矩阵与增广矩阵秩不同.) return end if ra==rz if ra==n X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 [Y,j]=max(abs(zen

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档