Вычислительные методы линейной алгебры. Горбаченко В.И - 34 стр.

UptoLike

34
% Инициализация вектора решения x и временного вектора C
[N, N]=size(A);
x=zeros(N, 1);
C=zeros(1, N+1); % временный вектор-строка
B=[A b];% Расширенная матрица
flag=1;
epsilon=1e-15;% малая величина для определения вырожденности матрицы A
% Прямой ход
for s=1:N % s - номер шага
% выбор главного элемента для непреобразованной части столбца p
% Y-максимальный элемент одномерного массива abs(B(s:N,s))
% j-номер максимального элемента
[Y,j]=max(abs(B(s:N,s)));
% меняем местами строки s и j
C=B(s,:); % строка s
B(s,:)=B(j+s-1,:);
B(j+s-1,:)=C;
if abs(B(s,s))<=epsilon
disp('Матрица A вырождена
');
flag=0; % Признак вырожденности матрицы
break % Выход из цикла
end
% Процесс исключения для столбца s
B(s,s:N+1)=B(s,s:N+1)/B(s,s);
for k=s+1:N
m=B(k,s)/B(s,s);
B(k,s:N+1)=B(k,s:N+1)-m*B(s,s:N+1);
end
end
if flag % Для невырожденной матрицы
% Обратная подстановка
x=backsub(B(1:N,1:N),B(1:N,N+1));
end
Функция gauss реализует метод Гаусса с выбором главного элемента по
столбцу. Если после выбора главного элемента направляющий элемент мат-
рицы по абсолютной величине меньше малого числа
epsilon, то это свиде-
тельствует о вырожденности матрицы.
Результат работы программы имеет вид:
Матрица решаемой системы
A =
4 8 4 0
1 5 4 -3
1 4 7 2
1 3 0 -2
Вектор правой части
b =
8
-4
10
4
Решение
% Инициализация вектора решения x и временного вектора C
[N, N]=size(A);
x=zeros(N, 1);
C=zeros(1, N+1); % временный вектор-строка
B=[A b];% Расширенная матрица
flag=1;
epsilon=1e-15;% малая величина для определения вырожденности матрицы A
% Прямой ход
for s=1:N % s - номер шага
    % выбор главного элемента для непреобразованной части столбца p
    % Y-максимальный элемент одномерного массива abs(B(s:N,s))
    % j-номер максимального элемента
    [Y,j]=max(abs(B(s:N,s)));
    % меняем местами строки s и j
    C=B(s,:); % строка s
    B(s,:)=B(j+s-1,:);
    B(j+s-1,:)=C;
    if abs(B(s,s))<=epsilon
        disp('Матрица A вырождена');
        flag=0; % Признак вырожденности матрицы
        break     % Выход из цикла
    end
    % Процесс исключения для столбца s
    B(s,s:N+1)=B(s,s:N+1)/B(s,s);
    for k=s+1:N
        m=B(k,s)/B(s,s);
        B(k,s:N+1)=B(k,s:N+1)-m*B(s,s:N+1);
    end
end
if flag % Для невырожденной матрицы
    % Обратная подстановка
    x=backsub(B(1:N,1:N),B(1:N,N+1));
end

Функция   gauss реализует метод Гаусса с выбором главного элемента по
столбцу. Если после выбора главного элемента направляющий элемент мат-
рицы по абсолютной величине меньше малого числа epsilon, то это свиде-
тельствует о вырожденности матрицы.
Результат работы программы имеет вид:
Матрица решаемой системы
A =
     4     8     4     0
     1     5     4    -3
     1     4     7     2
     1     3     0    -2
Вектор правой части
b =
     8
    -4
    10
     4
Решение

                                                                     34