ВУЗ:
Составители:
Рубрика:
36
ляющий элемент имеет очень малое значение, сравнимое с машинным эпси-
лон, но не равен нулю). Для этого установим точку останова в функции
gauss в строке 27: disp('Матрица A вырождена'); и выведем значе-
ние направляющего элемента
K>> abs(B(p,p))
ans =
7.7716e-016
Программа sam2_04.m реализует метод LU-разложения:
% Метод LU-разложения решения СЛАУ
% Главная программа
clear;
clc;
% Пример матрицы и правой части
disp('Матрица решаемой системы')
A=[1 4 1 3
0 -1 3 -1
3 1 0 2
1 -2 5 1]
disp('Вектор правой части')
b=[1;2;3;4]
[L,U,P,flag]=lu_fact(A);% Вызов LU-разложения
if flag==0
disp('Матрица вырождена')
else
disp('Результаты LU-разложения')
L
U
P
disp('Проверка правильности разложения')
LU=P'*L*U
disp('Решение системы Ly=P*b')
y=forwsub(L,P*b)
disp('Решение системы Ux=y')
x=backsub(U,y)
disp('Невязка')
r=b-A*x
end
Разложение матрицы решаемой системы на верхнюю треугольную мат-
рицу
U с единичной диагональю, нижнюю треугольную матрицу L с выбором
главного элемента по столбцу и формированием матрицы перестановок
P
производится функцией
lu_fact:
function [L,U,P,flag]=lu_fact(A)
% LU-разложение матрицы A
% Вход - A - невырожденная матрица nxn
% Выход - L - нижняя треугольная матрица,
% - U - верхняя треугольная матриц с единичной диагональю
% - P - матрица перестановок
% - flag=1 - матрица не вырождена
% - flag=0 - матрица вырождена
ляющий элемент имеет очень малое значение, сравнимое с машинным эпси-
лон, но не равен нулю). Для этого установим точку останова в функции
gauss в строке 27: disp('Матрица A вырождена'); и выведем значе-
ние направляющего элемента
K>> abs(B(p,p))
ans =
7.7716e-016
Программа sam2_04.m реализует метод LU-разложения:
% Метод LU-разложения решения СЛАУ
% Главная программа
clear;
clc;
% Пример матрицы и правой части
disp('Матрица решаемой системы')
A=[1 4 1 3
0 -1 3 -1
3 1 0 2
1 -2 5 1]
disp('Вектор правой части')
b=[1;2;3;4]
[L,U,P,flag]=lu_fact(A);% Вызов LU-разложения
if flag==0
disp('Матрица вырождена')
else
disp('Результаты LU-разложения')
L
U
P
disp('Проверка правильности разложения')
LU=P'*L*U
disp('Решение системы Ly=P*b')
y=forwsub(L,P*b)
disp('Решение системы Ux=y')
x=backsub(U,y)
disp('Невязка')
r=b-A*x
end
Разложение матрицы решаемой системы на верхнюю треугольную мат-
рицу U с единичной диагональю, нижнюю треугольную матрицу L с выбором
главного элемента по столбцу и формированием матрицы перестановок P
производится функцией lu_fact:
function [L,U,P,flag]=lu_fact(A)
% LU-разложение матрицы A
% Вход - A - невырожденная матрица nxn
% Выход - L - нижняя треугольная матрица,
% - U - верхняя треугольная матриц с единичной диагональю
% - P - матрица перестановок
% - flag=1 - матрица не вырождена
% - flag=0 - матрица вырождена
36
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »
