ВУЗ:
Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »