2.1.4
Структура разрабатываемой программы показана на блок-схемах основной части и
вспомогательных модулей
|
Основная часть программы |
||
|
Процедура ввода |
Функция вычисления |
Процедура вывода |
2.1.5 Листинг и результат работы программы
Program Metod_Gauss;CRT; maxn = 10;= Real;= Array[1..maxn] of Data;= Array[1..maxn, 1..maxn] of Data;
{ Процедура ввода расширенной матрицы }
Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);r, i, j: Integer;:= WhereY;(2, r);('A');i := 1 to n do begin(i*6+2, r);(i);(1, r+i+1);(i:2);;((n+1)*6+2, r);('b');i := 1 to n do beginj := 1 to n do begin(j * 6 + 2, r + i + 1);(a[i, j]);;((n + 1) * 6 + 2, r + i + 1);(b[i]);;;
{ Процедура вывода результатов }WriteX(n :Integer; x: Vector); i: Integer;i := 1 to n do('x', i, ' = ', x[i]);
End;
{ Функция, реализующая метод Гаусса }
Function Gauss(n: Integer; a: Matrix; b: Vector; var x:Vector): Boolean;, l, i, j: Integer;, q, t: Data;k := 1 to n - 1 do begin
{ Ищем строку l с максимальным элементом в k-ом столбце}
m := 0;:= 0;i := k to n doAbs(a[i, k]) > m then begin:= i;:= Abs(a[i, k]);;
{ Если у всех строк от k до n элемент в k-м столбце нулевой,
то система не имеет однозначного решения }
If l = 0 then begin:= false;
Exit;;
{ Меняем местами l-ую и k-ую строки }
If l <> k then beginj := 1 to n do begin:= a[k, j];[k, j] := a[l, j];[l, j] := t;;:= b[k];[k] := b[l];[l] := t;;
{ Преобразуем матрицу }i := k + 1 to n do begin:= a[i, k] / a[k, k];j := 1 to n doj = k then[i, j] := 0[i, j] := a[i, j] - q * a[k, j];[i] := b[i] - q * b[k];;;
{ Вычисляем решение }[n] := b[n] / a[n, n];i := n - 1 downto 1 do begin:= 0;j := 1 to n-i do:= t + a[i, i + j] * x[i + j];[i] := (1 / a[i, i]) * (b[i] - t);;:= true;; n, i: Integer;: Matrix ;, b: Vector;
Begin;('Программа решения СЛАУ по методу Гаусса');;('Введите порядок матрицы системы (макс. 10)');('>');(n);(n > 0) and (n <= maxn);
Writeln;('Введите расширенную матрицу системы');
ReadSystem(n, a, b);;Gauss(n, a, b, x) then begin
Writeln('Результат вычислений по методу Гаусса');(n, x);('Данную систему
нельзя решить по методу Гаусса');;.
.1.6 Пример работы программы решения СЛАУ по методу Гаусса
Введите порядок матрицы системы (макс. 10) >4
Введите расширенную матрицу системы1 2 3 b
3 4 -2 11
2 -1 -1 4
3 -2 4 11
Результат вычислений по методу Гаусса= 3= 1= 1
Скриншот 1. Результат работы программы при n = 3
Скриншот 2. Результат работы программы при n = 7
Скриншот 3. Аншлаг при Δ = 2·8 - 4·4 = 0.
Список использованной литературы
1. Малыхина М.П. Программирование на языке высокого уровня Turbo Pascal. - Спб.: БХВ-Петербург, 2006, 544 с.
. Немнюгин С.А. Turbo Pascal. - Спб.: Питер, 2002. - 496 с.
. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: Нолидж, 1997. - 616 с.
. Гусева А.И. Учимся программировать: PASCAL 7.0. Задачи и методы их решения. - М.: Диалог-МИФИ, 1997. - 256 с.
. Дьяконов В.П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ: Справочник. - М.: Наука. Гл. ред. физ. -мат. лит., 1987. - 240 с.
. Сапаров В.Е., Максимов Н.А. Системы стандартов в электросвязи и радиоэлектронике: Учебное пособие для вузов. - М. - Радио и связь, 1985. - 248 с.
. ГОСТ 19.701-90 (ИСО 5807-85). “Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения”/ Cб. ЕСПД. - М.: Изд-во стандартов, 1996. - 157 с.
. Бахвалов Н., Жидков Н., Кобельков Г. Численные методы. М.: Лаборатория базовых знаний, 2001.632 с.
. Форсайт Дж., Малькольм М., Моулер К. Машинные методы математических вычислений / Пер. с англ. М.: Мир, 1980.177с.
. Самарский А.А., Гулин А.В. Численные методы: Учебное пособие для ВУЗов. М.: Наука, 1989.432с.