Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
30.04.2013
Размер:
133.63 Кб
Скачать

Московский Технический Университет Связи и Информатики

«Решение линейных уравнений методом Гаусса».

- 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

Соседние файлы в папке laba 1 Реш Лин Ур