ИДЗ-2
.docxИДЗ 2, вариант 7 |
|
Задание
Решить СЛАУ методом прогонки и сравнить с решением с помощью команды системы MATLAB. Вывести норму разности решений и число обусловленности системы.
Код программы
run(5)
run(10)
run(15)
function run(N)
a = -5; b = 8; c = 2;
x0 = 5; xN = 1;
% Метод прогонки
A = zeros(N - 1, 1);
B = zeros(N - 1, 1);
A(1) = -c / b;
B(1) = -a * x0 / b;
for i = 2:(N - 1)
k = (a * A(i - 1) + b);
A(i) = -c / k;
B(i) = -a * B(i - 1) / k;
end
X = zeros(N + 1, 1);
X(N) = A(N - 1) * xN + B(N - 1);
for i = (N - 1):-1:2
X(i) = A(i - 1) * X(i + 1) + B(i - 1);
end
X(1) = x0;
X(N + 1) = xN;
% Формирование матрицы коэффициентов
A = zeros(N + 1);
for i = 1:(N - 1)
A(i, i) = a;
A(i, i + 1) = b;
A(i, i + 2) = c;
end
A(N, 1) = 1;
A(N + 1, N + 1) = 1;
% Формирование матрицы решений
F = zeros(N + 1, 1);
F(N) = x0;
F(N + 1) = xN;
% Решение СЛАУ
X_ls = linsolve(A, F);
% Сравнение решений и вывод результата
fprintf(['N = %d' ...
'\n\tНорма разности решений: %6.4f' ...
'\n\tЧисло обусловленности системы: %6.4f\n\n'], ...
N, ...
norm(X - X_ls), ...
cond(A));
end
Исходные данные: |
|
Результаты: |
|
: |
Норма разности решений: 0.0000 Число обусловленности системы: 13.3210 |
: |
Норма разности решений: 0.0000 Число обусловленности системы: 13.4457 |
: |
Норма разности решений: 0.0000 Число обусловленности системы: 13.4947 |