function x = IGgauss(A,b)
%
%   Интервальный метод Гаусса  с  частичным  выбором  ведущего  элемента
%   для внешнего оценивания объединённого множества решений интервальной
%   системы  линейных  алгебраических  уравнений  Ax = b
%
%   Входные аргументы:  
%       A - интервальная nxn-матрица системы,
%       b - интервальный n-вектор правой части.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    n = length(A); 

    %   прямой ход метода Гаусса
    for j = 1:n-1;
  
        [maxmig,index] = max(mig(A(j:n,j)));
        if maxmig <= 0 
            error('Все ведущие элементы - нульсодержащие!') 
        end
        k = index + j - 1; 
        if k ~= j       % При необходимости переставляем уравнения  
            A([j,k],j:n) = A([k,j],j:n); 
            b([j,k]) = b([k,j]);
        end
   
        for i = j+1:n;
            r = A(i,j)/A(j,j);
            A(i,j+1:n) = A(i,j+1:n) - r*A(j,j+1:n);
            b(i) = b(i) - r*b(j);
        end
  
    end
    
    %   обратный ход 
    x(n) = b(n)/A(n,n);           
    
    for i = (n-1):(-1):1;
        r = b(i);
        for j = i+1:n;
            r = r - A(i,j)*x(j);
        end
        x(i) = r/A(i,i);
    end
    
    x = x';
    
end
