Решение системы линейных уравнений методом Гаусса - Pascal
Формулировка задачи:
Доброго времени суток. Помогите решить две как мне сказали простых задачи. Нужен код. и результат. Буду очень благодарен.
Задание 2. Решение системы линейных уравнений методом Гаусса
1.54 1.70 1.62 -1.97
Матрица А= 3.69 3.73 3.59 Матрица В= -3.74
2.45 2.43 2.25 -2.26Решение задачи: «Решение системы линейных уравнений методом Гаусса»
textual
Листинг программы
uses
crt;
const
e = 0.000001; { точность вычислений }
var
a,a1: array[1..10, 1..10] of real;
b,b1: array[1..10] of real;
x: array[1..10] of real;
n, i, j, k: integer;z, r, g: real;
begin
clrscr;
n:=3;
A[1, 1] := 1.54; A[1, 2] := 1.70; A[1, 3] := 1.62;
A[2, 1] := 3.69; A[2, 2] := 3.73; A[2, 3] := 3.59;
A[3, 1] := 2.45; A[3, 2] := 2.43; A[3, 3] := 2.25;
b[1] := -1.97; b[2] := -3.74; b[3] := -2.26;
writeln('Матрица A: ');
for i := 1 to n do
begin
for j := 1 to n do
begin
write(a[i,j]:5:2);
a1[i,j]:=a[i,j];
end;
writeln;
end;
writeln;
Writeln('Матрица B: ');
for i:=1 to n do
writeln(b[i]);
for k := 1 to n do { прямой ход Гаусса }
begin
for j := k + 1 to n do
begin
r := a[j, k] / a[k, k];
for i := k to n do
begin
a[j, i] := a[j, i] - r * a[k, i];
end;
b[j] := b[j] - r * b[k];
end;
end;
for k := n downto 1 do { обратный ход Гаусса }
begin
r := 0;
for j := k + 1 to n do
begin
g := a[k, j] * x[j];
r := r + g;
end;
x[k] := (b[k] - r) / a[k, k];
end;
writeln('Корни системы:');
for i := 1 to n do
write('x[', i, ']=', x[i]:0:2, ' ');
end.
Объяснение кода листинга программы
- Объявление переменных:
a,a1: двумерные массивы размером 10x10 заполненные действительными числами.b,b1: одномерные массивы размером 10, заполненные действительными числами.x: одномерный массив размером 10, заполненный действительными числами.n,i,j,k: целочисленные переменные.z,r,g: действительные переменные.
- Заполнение матрицы
Aи вектораbначальными значениями. - Вывод матрицы
Aна экран:- Происходит двойной цикл для обхода элементов матрицы
Aи их вывода на экран. Значения матрицыAсохраняются в матрицуa1.
- Происходит двойной цикл для обхода элементов матрицы
- Вывод вектора
bна экран. - Прямой ход метода Гаусса:
- Прямой ход метода Гаусса выполняется через цикл, в котором происходит вычитание строки матрицы
Aиз следующих строк для обнуления коэффициентов под главной диагональю. Также происходит соответствующее изменение элементов вектораb.
- Прямой ход метода Гаусса выполняется через цикл, в котором происходит вычитание строки матрицы
- Обратный ход метода Гаусса:
- Обратный ход метода Гаусса выполняется через цикл, в котором вычисляются значения корней системы уравнений. Значения корней сохраняются в массив
x.
- Обратный ход метода Гаусса выполняется через цикл, в котором вычисляются значения корней системы уравнений. Значения корней сохраняются в массив
- Вывод корней системы уравнений.
- Выводятся на экран значения корней системы уравнений в формате
x[i]=значение.
- Выводятся на экран значения корней системы уравнений в формате