- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
NumericalAnalysis课后习题练习
Gausselimination
Content
GaussNaive
GaussNaive=forwardelimination+backsubstitution
NumericalAnalysis课后习题练习2.1ComputerProblems
%MATLABGaussNaive.m
functionx=GaussNaive(A,b)
%GaussNaive:naiveGausselimination
%x=GaussNaive(A,b):Gausseliminationwithoutpivoting.
%input:
%A=coefficientmatrix
%b=righthandsidevector
%output:
%x=solutionvector
[m,n]=size(A);
ifm~=n,error(MatrixAmustbesquare);end
nb=n+1;
Aug=[Ab];
%forwardelimination
fork=1:n-1
fori=k+1:n
factor=Aug(i,k)/Aug(k,k);
Aug(i,k:nb)=Aug(i,k:nb)-factor*Aug(k,k:nb);
end
end
%backsubstitution
x=zeros(n,1);
x(n)=Aug(n,nb)/Aug(n,n);
fori=n-1:-1:1
x(i)=(Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i);
end
%Hilbert.m
functiona=Hilbert(n)
fori=1:n
forj=1:n
a(i,j)=1/(i+j-1);
end
end
Gausspivot选主元
为了避免出现除零现象(也就是可能在主元位置上不应该为0⽽是0的情况)。
⽅法:规范化的顺序不是按⾏顺序来,⽽是按主元所在列的最⼤值来。
%GaussPivot.m
functionx=GaussPivot(A,b)
%GaussPivot:Gausseliminationpivoting
%x=GaussPivot(A,b):Gausseliminationwithpivoting.
%input:
%A=coefficientmatrix
%b=righthandsidevector
%output:
%x=solutionvector
[m,n]=size(A);
ifm~=n,error(MatrixAmustbesquare);end
nb=n+1;
Aug=[Ab];
%forwardelimination
fork=1:n-1
%partialpivoting
[big,i]=max(abs(Aug(k:n,k)));%i是Aug中从k开始计数的下标。
ipr=i+k-1;%ipr是最⼤⾏坐标
ifipr~=k
Aug([k,ipr],:)=Aug([ipr,k],:);%交换两⾏位置
end
fori=k+1:n
factor=Aug(i,k)/Aug(k,k);
Aug(i,k:nb)=Aug(i,k:nb)-factor*Aug(k,k:nb);
end
end
%backsubstitution
x=zeros(n,1);
x(n)=Aug(n,nb)/Aug(n,n);
fori=n-1:-1:1
x(i)=(Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i);
end
原创力文档


文档评论(0)