рефераты рефераты
Главная страница > Курсовая работа: Вычисление определителя матрицы прямым методом  
Курсовая работа: Вычисление определителя матрицы прямым методом
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

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

Запишем общие формулы метода Гаусса. Пусть проведено исключение к элементов из (k-1)-го столбца. Тогда останутся строки с ненулевыми элементами ниже главной диагонали.

Умножим k-ю строку на число

 m > k (3)

и вычтем из m-й строки. Первый ненулевой элемент этой строки обратится в нуль, а остальные изменятся по формулам

(4)

 k < m(5)

Проведя вычисления по этим формулам при всех указанных индексах, обратим в нуль элементы k-го столбца, лежащие ниже главной диагонали. Аналогичная процедура приводит матрицу системы к верхней треугольной форме, при этом весь процесс приведения называется прямым ходом метода Гаусса.

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

(6)

где k- количество перестановок строк при использовании метода исключения с выбором главного элемента.

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

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

Важным достоинством данного метода, является то, что вычисление определителя требует примерно (2/3)n³ операций, что несравнимо меньше с  операциями, при вычислении определителя по правилу Крамера, поэтому метод Гаусса с выбором главного элемента наиболее применим при обработке данных на компьютере.


2. АЛГОРИТМ РАБОТЫ ПРОГРАММЫ

2.1 Структура алгоритма и данных

Задача вычисления определителя матрицы разбивается на несколько подзадач:

1)  Заполнение массива начальными данными;

2)  Изменение порядка матрицы по желанию пользователя и заполнение нового массива;

3)  Ввод и фильтрация вводимых пользователем данных в массив;

4)  Вычисление детерминанта;

4.1) Ввод исходных данных в массив

4.2) Выбор главного элемента;

4.3) Замена строк местами;

4.4) Заполнение нового массива;

4.5) Приведение матрицы к верхнему треугольному виду;

4.6) Вычисление определителя матрицы.

Согласно вышеприведенной структуре, программа будет состоять из четырех подпрограмм:

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]) возвращает модуль аргумента.

Страницы: 1, 2, 3

рефераты
Новости