Реферат: Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя

2.1.2. Тестовый пример.

3,2x 1 + 5,4x 2 + 4,2x 3 + 2,2x 4 = 2,6 ,

2,1x 1 + 3,2x 2 + 3,1x 3 + 1,1x 4 = 4,8 ,

1,2x 1 + 0,4x 2 – 0,8x 3 – 0,8x 4 = 3,6 ,

4,7x 1 + 10,4x 2 + 9,7x 3 + 9,7x 4 = –8,4 ,

x 1 = 5, x 2 = –4, x 3 = 3, x 4 = –2.

2.1.3. Описание алгоритма. В данной программе реализован метод Гаусса со схемой частичного выбора.

В переменную n вводится порядок матрицы системы. С помощью вспомогательной процедуры ReadSystem в двумерный массив a и одномерный массив b вводится c клавиатуры расширенная матрица системы, после чего оба массива и переменная n передаются функции Gauss . В фукции Gauss для каждого k -го шага вычислений выполняется поиск максимального элемента в k -м столбце матрицы начинаяя с k -й строки. Номер строки, содержащей максимальный элемент сохраняеется в переменной l . В том случае если максимальный элемент находится не в k -й строке, строки с номерами k и l меняются местами. Если же все эти элементы равны нулю, то происходит прекращение выполнения функции Gauss c результатом false . После выбора строки выполняется преобразование матрицы по методу Гаусса. Далее вычисляется решение системы и помещается в массив x . Полученное решение выводится на экран при помощи вспомогательной процедуры WriteX.

2.1.4. Листинг программы и результаты работы

Uses CRT;

Const

maxn = 10;

Type

Data = Real;

Matrix = Array[1..maxn, 1..maxn] of Data;

Vector = Array[1..maxn] of Data;

{ Процедура ввода расширенной матрицы системы }

Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);

Var

i, j, r: Integer;

Begin

r := WhereY;

GotoXY(2, r);

Write('A');

For i := 1 to n do begin

GotoXY(i*6+2, r);

Write(i);

GotoXY(1, r+i+1);

Write(i:2);

К-во Просмотров: 1024
Бесплатно скачать Реферат: Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя