Курсовая работа: Вычисление определителя матрицы прямым методом

1) Подпрограмма создания формы и ввода начальных данных в массив.

В данной подпрограмме задается начальное число столбцов и строк матрицы (ее порядок), вводятся заголовки матрицы, строк и столбцов в соответствии с заданным размером.

2) Подпрограмма изменения порядка матрицы;

В данной подпрограмме формируется новая матрица, исходя из данных, введенных пользователем, вводятся новые заголовки матрицы, строк и столбцов в соответствии с заданным размером.

3) Подпрограмма фильтрации вводимых пользователем данных, при нажатии на кнопки клавиатуры;

Данная подпрограмма разрешает пользователю вводить в матрицу только цифры, разделитель дробной и целой части и знак «-». Ввод других символов запрещается. Также в этой подпрограмме производится замена неверного разделителя на верный.

4) Подпрограмма вычисления определителя.

В данной подпрограмме происходит заполнение массива данных, поочередно для каждого столбца производится выбор главного элемента (наибольшего по модулю), затем строки меняются местами и производится приведение матрицы к верхней треугольной форме, т.е. когда ниже главной диагонали содержатся только нулевые элементы. Согласно вышеприведенным формулам производится вычисление значения детерминанта и полученный результат выводится на экран.

2.2 Схема алгоритма

На рисунке 1 представлен алгоритм работы программы при возникновении события OnCreate. Процедура TForm1.FormCreate(Sender: TObject).


Рис. 1. Алгоритм работы программы при возникновении события OnCreate

На рисунке 2 представлен алгоритм работы программы при нажатии на кнопку «Изменить размерность массива». Процедура TForm1.Button2Click(Sender: TObject).


Рис. 2. Алгоритм работы программы при нажатии на кнопку «Изменить размерность массива»

На рисунке 3 представлен алгоритм работы программы при вводе данных с клавиатуры (событие OnKeyPress). Процедура TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char).


Рис. 3. Алгоритм работы программы при при вводе данных с клавиатуры (событие OnKeyPress). Процедура TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char)

На рисунке 4 представлен алгоритм работы программы при нажатии на кнопку «Расчет». Процедура TForm1.Button1Click(Sender: TObject).

алгоритм программа pascal матрица определитель


Рис. 4. Алгоритм работы программы при нажатии на кнопку «Расчет»


3. ТЕКСТ ПРОГРАММЫ

3.1 Описание переменных и структур данных

При выполнении программы используются следующие переменные: N – максимальное число строк (столбцов) массива; r, c,max, j, z, p, s, zam – номера строк и столбцов и количество производимых замен строк – все они являются переменными типа integer (целое), переменные detA, k, buf – детерминант, коэффициент и буфер, используемый при замене строк – переменные типа extended (действительное число), а также переменная А – массив, тип массива – двумерный (Massiv = array[1..Nmax,1..Nmax] of extended).

При запуске программы возникает событие «создание формы» (OnCreate), процедура TForm1.FormCreate(Sender: TObject). При этом задается количество строк и столбцов двумерного массива (по умолчанию 4 и 4) StringGrid1.RowCount := N+1; StringGrid1.ColCount := N+1; но ячейки первой строки и первого столбца не редактируемые, они используются для вывода надписей над строками и столбцами, для чего используются функции StringGrid1.Cells [0,r] := ' r = ' + IntToStr(r) и StringGrid1.Cells [c,0] := ' c = ' + IntToStr(c). Вывод данных поочередно в каждую из этих ячеек производится посредством стандартной инструкции for … to … do begin … end.

Нажатие на кнопку влечет за собой возникновение события OnClick процедура TForm1.Button2Click(Sender: TObject). Данные о количестве строк и столбцов массива считываются из поля Edit1. Так как численное значение переменной N имеет целочисленный тип для преобразования строковой записи числа, находящегося в переменной Edit1.Text в целое, используется стандартная функция N:=StrToInt(Edit1.Text).

20
??? ????? ????????????? ?????? ? ???? StringGrid1 ?????????? ??????? OnKeyPress, ????????? TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char). ??????????? ??????????? ?????????? case Key of, ??????? ????????? ??????????? ????????????? ?????, ?????????? ?????????? ???????? ????????????? ??????. ??????????? ???? ?????? ????, ??????????? (DecimalSeparator), ????? ??????? ? ??????? ??????? Backspace. ??????????? ?????????? if Key <> DecimalSeparator then ???????????? ????? ??????? ?? ???? ????????? ????????? ???????? ?????????: ??????????? ?????????? ?? ??????????, ???? ?? ?????? ??????? (Key := DecimalSeparator), ???? ??????????? ??????????? ??? ?????????. ???? ????????? ???????? ??????????? (else key := Chr(0)).

При нажатии на кнопку возникает событие (OnClick), процедура TForm1.Button1Click(Sender: TObject). Задаются начальные значения переменных max:= 1, detA := 1,zam:=0. Производится заполнение массива (A[c,r]:=StrToFloat(StringGrid1.Cells[c,r])), свойство StringGrid1.Cells[c,r] определяет содержимое ячейки с табличными координатами (c,r), строковые значения переменных, находящихся в ячейках (c,r) преобразуются в вещественный тип посредством стандартной инструкции StrToFloat. Стандартная инструкция for … to … do begin … end позволяет выполнять несколько раз действия, заключенные в этой инструкции. Функция abs(A[c,j]) возвращает модуль аргумента.

Инструкция if (stringgrid1.cells [c,r] > stringgrid1.cells [c-1,r]) and (stringgrid1.cells [c,r] < stringgrid1.cells [c+1,r]) thenbegink := k+1; end; используется для выбора одного из вариантов развития программы, т.е. в случае выполнения данного условия число «особых» элементов увеличивается на 1 (k := k+1), если нет, то цикл повторяется до предпоследнего элемента матрицы. Реализует этот выбор стандартная инструкция for … to … do begin … end. Так как переменная detAдействительное число, то для ее преобразования в строковый вид используется инструкция FloatToStrF(detA,fffixed,6,3). Функция zam mod 2 – проверка на четность количества замен строк, если число нечетное, то определитель умножается на -1.

К-во Просмотров: 410
Бесплатно скачать Курсовая работа: Вычисление определителя матрицы прямым методом