nagauss2.m

来自「Matlab数值解算法实现代码」· M 代码 · 共 27 行

M
27
字号
function x=nagauss2(a,b,flag)
%列选主元gauss消去法解线性方组ax=b
%   a:系数矩阵
%   b:右端列向量
%   flag:若为0,则显示中间过程,否则不显示,默认值为0
%   x:解向量
if nargin<3, flag=0;end
n=length(b);a=[a,b];
for k=1:(n-1)
  %选主元
  [ap,p]=max(abs(a(k:n,k)));p=p+k-1;
  if p>k,
      t=a(k,:);a(k,:)=a(p,:);a(p,:)=t;
  end
   if flag==0,a,end
  %消元
  a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));
  a((k+1):n,k)=zeros(n-k,1);
  if flag==0,a,end
end
%回代
x=zeros(n,1);
x(n)=a(n,n+1)/a(n,n);
for k=n-1:-1:1
  x(k,:)=(a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?