после выполнения программы получается:
Vektor reshenia:
0.799519
0.142201
0.450748
-0.896799
Vektor neviazki:
3.957338е-16
8.261621e-17
9.207045е-16
3.350727е-16
Norma vektora neviazki: 9.207045е-16
На Matlab мне нужно только решение получить (ответ).
Данные ввести при помощи генератора случайных чисел. Процедуру нужно оттестировать на СЛАУ с хорошо обусловленной матрицей 50х50 и СЛАУ с плохообусловленной матрицей 50х50. Результат сравнить с результатами расчетов с помощью стандартного решателя системы. Думаю, я теперь понятней объяснила.
На Matlab.
Код:
clc;
n = input('Введите размерность матрицы n = ');
clc;
disp('Выбирите параметры генерации матрицы:')
disp(' 1 - хорошо обусловленная матрица коэффициентов')
disp(' 2 - плохо обусловленная матрица коэффициентов')
if input('-> ') == 1,
A = rand(n);
else
A = hilb(n);
end;
B = randn(n, 1);
A1 = A;
B1 = B;
k = 1;
while k < n, % начало 1 цикла
ii = k + 1;
if (A(k, k) == 0) & (k < n), % переставляем уравнения если элемент A(k, k) равен 0
d = A(k, :);
A(k, :) = A(k + 1, :);
A(k + 1, :) = d;
d = B(k);
B(k) = B(k + 1);
B(k + 1) = d;
end; % конец перестановки уравнений
while ii <= n, % второй цикл
c = A(ii, k) / A(k, k);
A(ii, k) = 0;
jj = k + 1;
while jj <= n, % начало третьего цикла
A(ii, jj) = A(ii, jj) - c * A(k, jj);
jj = jj + 1;
end; % Конец третьего цикла
B(ii) = B(ii) - c * B(k);
ii = ii + 1;
end; % конец второго цикла
k = k + 1;
end; % конец 1 цикла
% Конец прямого хода, начинаем обратный ход
X(n) = B(n) / A(n, n);
ii = n - 1;
while ii >= 1,
jj = ii + 1;
S = 0;
while jj <= n,
S = S + A(ii, jj) * X(jj);
jj = jj + 1;
end;
X(ii) = (B(ii) - S) / A(ii, ii);
ii = ii - 1;
end;
clc;
A = A1;
B = B1;
A
B
disp('Результат решение уравнений с помощью A\B')
A\B
disp('Результат решения уравнений с помощью метода Гаусса')
X'