Ленточная матричная версия исключения Гаусса без поворота

#matlab #matrix #sparse-matrix

#matlab #матрица #разреженная матрица

Вопрос:

Я новичок в Matlab, и я сталкиваюсь с проблемами всякий раз, когда пишу коды. У меня есть код Matlab для исключения по Гауссу без поворота, и я хотел бы реализовать его версию с ленточной матрицей, которая принимает аргумент k, обозначающий количество недиагональных записей в каждом направлении, которые отличны от нуля (ширина полосы пропускания), то есть aij = 0, если i> j kили j> i k. Функция может начинаться так: функция x = BandedGauss(A, b, k). Ниже приведено мое исключение по Гауссу без поворота:

 function [x] = GE_WithoutPivoting1(A,b)
% Solve linear system Ax=b using Gaussian elimination

n = length(b);

for k=1:n-1

    % Check to see if the pivot is zero
    if abs(A(k,k)) < 1e-15
        error('A has diagonal entries of zero')
    end
    
    % Apply transformation to remaining submatrix and RHS vector
    for i=k 1:n
        m = -A(i,k)/A(k,k); % multiplier for current row i
        for j=k 1:n
            A(i,j) = A(i,j)   m*A(k,j);
        end
        b(i) = b(i)   m*b(k); 
    end
end

% A is now upper diagonal. Now, call the back substitution function to
% solve for the x solution vector i.e., the transformed problem:
 

x = GE_BackSubstitution(A, b);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 function [x] = GE_BackSubstitution(A,b)
% Solve the upper triangular system Ax=b using backward substitution

n= length(b);
x = zeros(n,1);

for j=n:-1:1    
    % Check to see if the diagonal entry is zero
    if abs(A(j,j)) < 1e-15
        error('A is singular (zero diagonal entry)')
    end
    
    % Compute solution component
    x(j) = b(j) / A(j,j);
    
    % Update the RHS vector
    for i=1:j-1
       b(i) = b(i) - A(i,j)*x(j);
    end
end
 

Комментарии:

1. Вы не задали вопрос и не рассказали нам, какие у вас проблемы.

2. Я хотел бы реализовать ее версию с ленточной матрицей, которая принимает аргумент k, обозначающий количество недиагональных записей в каждом направлении, которые отличны от нуля (ширина полосы пропускания)