Лабы / _labs / var13chisleniemetodi / laba 1 Реш Лин Ур / LABA1_13
.DOCМосковский Технический Университет Связи и Информатики
«Решение линейных уравнений методом Гаусса».
- 2004 г. -
Текст задания: Решить систему линейных уравнений методом Гауса
|
{ |
0.2x1+2x2-2.4x3=11.04 0.5x1-3.5x2+1.1x3=-3.66 1.6x1+1.15x2+4x3=2.82 |
Решение в ручную:
Запишем коэффициенты системы, обозначим уравнения буквами
|
А1 |
0.2 |
2 |
-2.4 |
11.04 |
(11)) |
|
А2 |
0.5 |
-3.5 |
1.1 |
-3.66 |
(12)) |
|
А3 |
1.6 |
1.15 |
4 |
2.82 |
(13)) |
Преобразовывая полученную матрицу методом гаусса получаем
Конечную систему уравнений
|
{ |
1.6x1+1.15x2+4x3=2,82 -14,85x2+23,2x3=-85,5 10,796x3=-30,887 |
Таким образом, система приведена к треугольному виду. Из последнего уравнения следует x3=-2.861, затем, последовательно получаем x2=1.288, x1=7.989. Решение системы {7,989; 1.288; -2.861}.
Блок - схемы алгоритмов:
Структурная схема алгоритма метода Гаусса:
нет
да
Входные параметры:
N1 – число строк
N2 – число столбцов
a() – массив коэффициентов системы
х() – решение системы
Процедура приведения матрицы к треугольному виду:
t
= a(i,j) t
= a(i,j) t
= a(i,j) t
= a(i,j)


Входные параметры:
N1 – число строк
N2 – число столбцов
a() – массив коэффициентов системы
Выходные параметры:
a() – массив коэффициентов треугольной матрицы
Входные параметры:
a() – массив коэффициентов треугольной матрицы
N1 – число строк
Выходные параметры:
х() – решение системы
Текст программы:
Program metodGauss;{Программа написана Филипповым Андреем група РЭ0301
Численные методы лаба 1 метод Гаусса }
Uses crt;
Const n1 = 3;
n2 = 4;
{
n1 - chislo strok
n2 - chislo stolbcov
}
Type Imas = array[1..n1+1] Of Real;
Tmas = array[1..n2] Of Imas;
Procedure masIn (Var a:Tmas; const n1,n2:integer);
Var i,j:Integer;
Begin
For i:=1 To n1 Do
For j:=1 To n2 Do
Begin
Write('a(',i,',',j,')=');
Readln(a[i,j]);
End;
For i:=1 To n1 Do
If a[i,i]=0 Then
Begin
Writeln('Не выполнены условия привидения матрицы');
Readln;
Break;
End;
writeln('Поздравляем массив введён. Продолжить?');
readln;
clrscr;
end;
procedure masout(Var a:tmas; const n1, n2:integer);
var i,j:integer;
Begin
for i:=1 to n1 do begin writeln;
for j:=1 to n2 do begin
write (a[i,j]:0:3,' ');
end;
end;
end;
Procedure Gauss (Var a:Tmas; Const n1,n2:Integer);
Var i,j,k,n:Integer;
t:Real;
Begin
For i:=1 To n1-1 Do
Begin
t:=a[i,i];
For k:=1 To n2 Do
a[i,k]:=a[i,k]/t;
For n:=i+1 To n1 Do
Begin
t:=a[n,i];
For j:=1 To n2 Do
a[n,j]:=a[n,j]-t*a[i,j];
writeln('Промежуточная матрица');
masout(a,n1,n2);
readln;
End;
End;
End;
Procedure Res(Const a:Tmas; Const n1:Integer; Var x:Imas);
Var i,k:Integer;
s:Real;
Begin
x[n1]:=a[n1,n1+1]/a[n1,n1];
For i:=n1-1 DownTo 1 Do
Begin
s:=0;
For k:=i+1 To n1 Do
s:=s+a[i,k]*x[k];
x[i]:=a[i,n1+1]-s;
End;
End;
Var j:integer;
a:Tmas;
x:Imas;
Begin {Main}
clrscr;
masIn(a,n1,n2);
writeln('Исходная матрица:');
masOut(a,n1,n2);
readln;
Gauss(a,n1,n2);
Res(a,n1,x);
writeln;
write('Ответ: ');
For j:=1 To n1 Do
Write('x',j,'=',x[j]:0:3,' ');
Readln;
End.
Результаты работы программы:


Проверка на Mathcad

