c3_5.m

来自「这是我从一本基于MATLAB实现的数值分析算法的书中自带的光盘程序」· M 代码 · 共 50 行

M
50
字号
%*******************************************************
%程序C3_5.M
%用高斯-塞德尔迭代法求解系数矩阵具有主对角线绝对占优的线性代数方程组

% a: 系数矩阵;b:右端常数项;n:方程的阶数;x:方程的解
%********************************************************
function C3_5
format long e
%先判断是否对角占优
%a=input('系数矩阵a=');
%b=input('右端常数项b=');
a=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];
b=[4 7 -1 0]';
n=length(a(1,:));
for i=1:n
    for j=1:n
        if  a(i,i)>=a(i,j)  
            eps=1;
        else eps=0;
             fprintf('fail');break
        end
    end
end
x=zeros(n,1);
xp=x-99;
w=1;
while w>1.0e-6
      xp=x;
      for i=1:n
          s1=0;
          for j=i+1:n
              s1=s1+a(i,j)*x(j);
          end
          s2=0;
          for j=1:i-1
              s2=s2+a(i,j)*x(j);
          end
          x(i)=(b(i)-s1-s2)/a(i,i);
      end
      for i=1:n
          s(i)=abs(x(i)-xp(i))/(1+abs(x(i)));
      end
      w=max(s);
end
fprintf('方程组的解为:');
x
          
          
          
    

⌨️ 快捷键说明

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