Область применения метода Гаусса к решению прикладных задач. Разработка программы "Решение задач методом Гаусса"
Решение систем алгебраических линейных уравнений методом Гаусса. Вычисление обратной матрицы и определителя. Декомпозиция задачи. Схема взаимодействия интерфейсных форм. Описание процедур и функций. Тестирование разработанного программного продукта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.06.2012 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Как утверждается в книге известного американского математика Валяха, 75% всех расчетных математических задач приходится на решение систем линейных алгебраических уравнений (СЛАУ). Это не удивительно, так как математические модели тех или иных процессов либо сразу строятся как линейные алгебраические, либо сводятся к таковым посредством дискретизации или линеаризации. Поэтому трудно переоценить роль, которую играет выбор эффективного метода способа СЛАУ. Современная вычислительная математика располагает большим арсеналом методов, а математическое обеспечение ЭВМ - многими пакетами прикладных программ, позволяющих решать различные возникающие на практике линейные системы. Чтобы ориентироваться среди методов и программ и в нужный момент сделать оптимальный выбор, нужно разбираться в основах построений методов и алгоритмов, учитывающих специфику постановок задач, знать их сильные и слабые стороны и границы применимости.
Наиболее известным и популярным способом решения СЛАУ является метод Гаусса. Целью данной курсовой работы является следующее: исследовать область применения метода Гаусса к решению различных прикладных задач и
разработать программу «Решение задач методом Гаусса», выполняющую следующие операции:
1) Решение СЛАУ методом Гаусса
2) Нахождение обратной матрицы методом Гаусса
3) Вычисление определителей методом Гаусса
Теоретическая часть
Решение систем алгебраических линейных уравнений методом Гаусса
Система m линейных алгебраических линейных уравнений с n неизвестными (сокращенно СЛАУ) представляет собой систему вида
(1)
Уравнения системы 1 называют алгебраическими потому, что левая часть каждого из них есть многочлен от n переменных , а линейными потому, что эти многочлены имеют первую степень.
Числа называют коэффициентами СЛАУ. Их номеруют двумя индексами: номером уравнения i и номером неизвестного j. Действительные числа называют свободными членами уравнений.
СЛАУ называют однородной, если . Иначе ее называют неоднородной.
Решением СЛАУ, да и вообще всякой системы уравнений, называют такой набор неизвестных
, при подстановке которых каждое уравнение системы превращается в тождество. Любое конкретное решение СЛАУ также называют ее частным решением.
СЛАУ называют совместной, если она имеет какие либо решения. В противном случае ее называют несовместной. Однородная СЛАУ всегда совместна, поскольку нулевой набор значений ее неизвестных всегда является решением. Для неоднородных СЛАУ возможны различные случаи.
Если СЛАУ имеет решение, и притом единственное, то ее называют определенной, а если решение неединственное - то неопределенной. При m=n, т.е. когда системе 1 количество уравнений совпадает с количеством неизвестных, СЛАУ называют квадратной.
Мы остановимся на решении только таких СЛАУ, у которых матрица является квадратной и невырожденной. В этом случае система имеет решение и притом единственное. Для его нахождения используют различные методы.
Если в методе решений СЛАУ зафиксировать определенный порядок преобразований ( а любой численный метод должен базироваться на точном порядке вычислений), то получиться численный метод, известный как метод Гаусса исключения неизвестных или просто метод Гаусса).
Пусть дана система линейных алгебраических уравнений с n неизвестными.
(2)
обозначим через
А =
матрицу коэффициентов системы (2) , через
b =- столбец ее свободных членов, и через
x = - столбец из неизвестных (свободный вектор)
тогда система (2) может быть записана в виде матричного уравнения Ax=b.
При решении СЛАУ методом Гаусса всевозможные преобразования производят не над уравнениями (2), а над так называемой расширенной матрицей системы, которая получается путем добавления к основной матрице А столбца свободных членов b.
Первый этап решения системы уравнений, называемый прямым ходом метода Гаусса , заключается в приведении расширенной матрицы (2) к треугольному виду. Это означает , что все элементы матрицы (2) ниже главной диагонали должны быть равны нулю.
= (3)
Для формирования первого столбца матрицы (4) необходимо из каждой строки (начиная со второй) вычесть первую, умноженную на некоторое число М.
= (4)
В общем виде этот процесс можно записать так:
2-я строка = 2-я строка - М*1-я строка
3-я строка = 3-я строка - М*1-я строка
...
i-я строка = i-я строка - М*1-я строка
...
n-я строка = n-я строка - М*1-я строка
Понятно, что преобразование элементов второй строки будет происходить по формулам:
Так как с целью данных преобразований является обнуление первого элемента строки, то М выбирается из условия:
М =
Элементы третьей строки и коэффициент М можно рассчитать аналогично:
М =
Таким образом преобразование i-й строки будет происходить следующим образом:
Коэффициент М для i-й строки выбирается из условия:
и равен
М =
После проведения подобных преобразований для всех строк матрица (3) примет вид:
Очевидно, что если повторить описанный выше алгоритм для следующих столбцов матрицы (3), причем начинать преобразовывать второй столбец с третьего элемента, третий столбец - с четвертого и т.д., то в результате будет получена матрица (4).
Заметим, что если в матрице (3) на главной диагонали встретиться элемент , равный нулю, то расчет коэффициента
для к-й строки будет невозможен. Избежать деления на ноль можно, избавившись от нулевых элементов на главной диагонали. Для этого перед обнулением элементов в к-м столбце необходимо найти в нем максимальный по модулю элемент, запомнить номер строки, в которой он находиться, и поменять ее местами с к-й.
В результате выполнения прямого метода Гаусса матрица (3) преобразуется в матрицу (4), а система уравнений (2) будет иметь следующий вид:
(5)
Решение системы (5) называют обратным ходом метода Гаусса.
Последнее n-е уравнение системы (5) имеет вид:
.
Тогда, если , то
.
В случае, если и ,
то система (5), а следовательно и система (2) имеет бесконечное множество решений.
При и
система (5) , а значит, и система (2) решения не имеет.
Предпоследнее (n-1)-е уравнение системы (5) имеет вид:
.
Значит
Следующее (n-2)-е уравнение системы будет выглядеть так:
.
Отсюда имеем
или
Таким образом, формула для вычисления i-го значения x будет иметь вид:
Вычисление обратной матрицы методом Гаусса.
Один из методов вычисления обратной матрицы основан на решении систем линейных алгебраических уравнений. Пусть задана некоторая матрица А:
(6)
Необходимо найти матрицу , которая является обратной к матрице А:
(7)
Матрица (7) будет обратной к матрице (6) , если выполняется соотношение
,
где Е - это единичная матрица, или более подробно:
(8)
Результат перемножения матриц из соотношения (8) можно представить поэлементно в виде n-го числа систем линейных уравнений. Умножение матрицы (6) на первый столбец матрицы (7) даст первый столбец единичной матрицы:
.
Система полученная в результате умножения матрицы на i-й столбец матрицы (7) , будет выглядеть следующим образом:
Понятно, что n-я система будет иметь вид:
Решением каждой из приведенной выше систем будет i-й столбец обратной матрицы. Количество систем равно размерности обратной матрицы. Для решения систем линейных алгебраических уравнений можно воспользоваться методом Гаусса.
Вычисление определителя методом Гаусса
Пусть задана матрица (3), необходимо вычислить ее определитель. Для этого матрицу необходимо преобразовать к треугольному виду (4) , а затем воспользоваться свойством, известным из курса линейной алгебры, которое гласит, что определитель треугольной матрицы равен произведению ее диагональных элементов:
.
Преобразование матрицы (3) к виду (4) можно осуществить с помощью прямого хода Гаусса.
Алгоритм вычисления определителя матрицы, представляет собой алгоритм прямого хода метода Гаусса, в процессе выполнения которого проводиться перестановка строк матрицы. Эта операция приводит к смене знака
Практическая часть
Декомпозиция задачи
Декомпозиция задачи представлена на рисунке 2.1.1
Размещено на http://www.allbest.ru/
Рисунок 2.1.1 - Декомпозиция задачи
МЕНЮ ОПЕРАЦИЙ 1.Решить систему линейных уравнений методом Гаусса. 2.Найти обратную матрицу. 3.Вычислить определитель матрицы. 4.Выход. |
Схема взаимодействия интерфейсных форм
Интерфейсные формы схематически представлены на рисунках 2.2.1-2.2.4
Рисунок 2.2.1 - Схематическое изображение формы «Меню операций»
Введите количество переменных ___ Введите матрицу коэффициентов Введите вектор свободных членов |
Размещено на http://www.allbest.ru/
РЕШИТЬ Вектор свободных членов |
Размещено на http://www.allbest.ru/
Рисунок 2.2.2 - Схематическое изображение формы 1
Введите количество переменных ___ Введите квадратную матрицу |
Размещено на http://www.allbest.ru/
НАЙТИ Обратная матрица |
Размещено на http://www.allbest.ru/
Рисунок 2.2.3 - Схематическое изображение формы 2
Введите строк и столбцов ___ Введите квадратную матрицу |
Размещено на http://www.allbest.ru/
НАЙТИ Определитель матрицы равен __ |
Взаимодействие представленных выше интерфейсных форм описано в виде диаграммы переходов состояний интерфейса программы (рисунок 2.2.5).
Размещено на http://www.allbest.ru/
Рисунок 2.2.5 - Диаграмма переходов состояний интерфейса программы
Схема взаимодействия модулей
Программа состоит из двух модулей:
· Модуль интерфейса,
· Модуль решения СЛАУ методом Гаусса.
Модуль решения СЛАУ методом Гаусса состоит из трех процедур:
· Процедура нахождения СЛАУ методом Гаусса
· Процедура нахождения обратной матрицы методом Гаусса
· Процедура нахождения определителя методом Гаусса
Схема взаимодействия модулей представлена на рисунке 2.3.1
Размещено на http://www.allbest.ru/
Рисунок 2.3.1 - Схема взаимодействия процедур модуля
Описание процедур и функций
Описание процедур и функций программы, приведенное в таблице 2.4.1, включает название процедуры, входные и выходные параметры и назначение процедуры.
Таблица 2.4.1 - Описание процедур и функций
Название процедуры |
Входные параметры |
Выходные параметры |
Назначение процедуры |
|
Procedure Gauss (a:matrica; b:massiv; n:integer; var x:massiv; var pr:byte) |
a-матрица коэффициентов при неизвестных b-вектор свободных членов n-размерность СЛАУ |
x-массив решений СЛАУ Pr-признак существования |
Нахождение корней СЛАУ |
|
Function Opredelitel (a:matrica; n:integer):real; |
a-матрица коэффициентов при неизвестных n-размерность СЛАУ |
Det-значение определителя матрицы |
Нахождение определителя матрицы |
|
Procedure Obr_matrica (a:matrica; n:integer; var h:matrica; var pr:byte) |
a-матрица коэффициентов при неизвестных n-размерность СЛАУ |
h-обратная матрица Pr-признак существования |
Нахождение обратной матрицы |
Обоснование выбора структуры представления данных
Основными данными, которые необходимо представлять в программе, являются матрицы и векторы. В качестве структуры представления данных были выбраны динамические массивы, поскольку они позволяют задавать количество строк и столбцов матрицы (элементов в векторе) в процессе выполнения программы. Также динамические массивы можно удалять из памяти в процессе выполнения программы. Это позволяет экономить память.
Руководство пользователю
Для того чтобы решить СЛАУ методом Гаусса необходимо ввести матрицу коэффициентов и векторов свободных членов (рисунок 2.6.1).
Рисунок 2.6.1 - Панель ввода данных
Количество коэффициентов матрицы вектора свободных членов можно ввести, нажав на соответствующую кнопку (рисунок 2.6.2).
Рисунок 2.6.2 - Кнопка введения количества коэффициентов матрицы и вектора свободных членов
Для решения СЛАУ методом Гаусса необходимо нажать кнопку (рисунок 2.6.3).
Рисунок 2.6.3 - Кнопка запуска программы решения СЛАУ методом Гаусса
Результат решения СЛАУ будет представлен в векторе неизвестных (рисунок 2.6.4).
Рисунок 2.6.4 - Панель результата решения СЛАУ
Для нахождения обратной матрицы необходимо ввести коэффициенты квадратной матрицы (рисунок 2.6.5), количество коэффициентов можно ввести с помощью кнопки (рисунок 2.6.6).
Рисунок 2.6.5 - Панель ввода квадратной матрицы
Рисунок 2.6.6 - Кнопка выбора количества коэффициентов матрицы
Для нахождения обратной матрицы необходимо нажать кнопку (рисунок 2.6.7).
Рисунок 2.6.7 - Кнопка запуска программы нахождения обратной матрицы
Результат работы программы будет представлен на панели (рисунок 2.6.8)
Рисунок 2.6.8 - Панель результата нахождения обратной матрицы
Для нахождения определителя необходимо ввести коэффициенты квадратной матрицы (рисунок 2.6.9), количество коэффициентов можно ввести с помощью соответствующей кнопки (рисунок 2.6.10).
Рисунок 2.6.9 - Панель ввода квадратной матрицы
Рисунок 2.6.10 - Кнопка выбора количества коэффициентов матрицы
Для запуска программы необходимо нажать кнопку (рисунок 2.6.11).
Рисунок 2.6.11 - Кнопка запуска программы определителя матрицы
Результат работы программы будет представлен на панели (рисунок 2.6.12)
Рисунок 2.6.12 - Панель результата нахождения определителя
Данные в программу можно ввести двумя способами: с клавиатуры, либо открыть из файла.
При вводе с клавиатуры необходимо задать количество строк/столбцов матрицы и ввести сами элементы матрицы (в случае решения СЛАУ необходимо ввести еще элементы вектора свободных членов).
Для того чтобы очистить форму, нужно нажать на соответствующую кнопку (рисунок 2.6.13).
Рисунок 2.6.13 - Кнопка «Очистить форму»
Для того, чтобы открыть данные из файла, нужно нажать на соответствующую кнопку (рисунок 2.6.14) и выбрать необходимый файл.
Рисунок 2.6.14 - Кнопка «Открыть данные из файла»
Кроме того, программа позволяет сохранять в файл исходные данные и полученный результат. Для этого необходимо нажать на кнопки, представленные на рисунках 2.6.15 и 2.6.16 соответственно.
Рисунок 2.6.15 - Кнопка « Сохранить данные в файл»»
Рисунок 2.6.16 - Кнопка «Сохранить результаты в файл»
Для того, чтобы выйти из файла, нужно нажать на соответствующую кнопку (рисунок 2.6.17)
Рисунок 2.6.17 - Кнопка «Выход»
Тестирование
Тестированием называют процесс выполнения программы с различными исходными данными, для которого заранее известны результаты. В большинстве случаев перебрать все возможные комбинации невозможно, а выборочное тестирование не доказывает правильность программы, так как то, что программа работает на десяти наборах данных, не означает то, что она будет давать правильные результаты на одиннадцатом наборе. Поэтому целью тестирования является обнаружение ошибок.
Соответственно хорошим можно считать тест, обнаруживающий ошибку. Для формирования таких тестов определены две стратегии:
· «белого» или «прозрачного ящика» (крайний правый подход);
· «черного ящика» (крайний левый подход).
При тестировании с использованием стратегии «белого ящика» тесты стараются подобрать так, чтобы хотя бы один раз пройти по каждой ветви алгоритма. Стратегия имеет существенный недостаток: по ней принципиально невозможно обнаружить пропущенный маршрут.
При тестировании с использованием стратегии «черного ящика» структура программы считается неизвестной, и тесты подбираются так, чтобы проверить выполнение всех функций программы, а затем отследить реакцию на ввод некорректных данных.
Оптимальная стратегия проектирования между двумя этими подходами, но ближе к крайнему левому подходу. Он включает создание тестов по классификации исходя из принципа: на каждую используемую функцию, на каждую область и границу изменения какой либо величины, на каждый особый случай хотя бы один тест.
Тест №1. Решение СЛАУ методом Гаусса. Случай, когда СЛАУ имеет единственное решение (3 параметра, 3 уравнения).
Исходные данные:
Ожидаемый результат:
Результат работы программы: при занесении исходных данных, программа выдала результат, приведенный на рисунке 2.7.1
Рисунок 2.7.1 - Окно программы с результатом решения
метод гаусс решение уравнение
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №2. Решение СЛАУ методом Гаусса. Случай, когда СЛАУ имеет единственное решение (4 параметра, 4 уравнения).
Исходные данные:
Ожидаемый результат:
Результат работы программы: при исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.2.
Рисунок 2.7.2 - Окно с результатом решения
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №3. Решение СЛАУ методом Гаусса. Ввод некорректных данных (не все коэффициенты матицы, вектора свободных членов введены).
Исходные данные:
Ожидаемый результат: элементы матрицы коэффициентов и вектора свободных членов не введены или введены неверно.
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.3.
Рисунок 2.7.3 - Окно программы с результатом решения
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №4. Решение СЛАУ методом Гаусса. Случай, когда СЛАУ не имеет решения (4 параметра, 4 уравнения).
Исходные данные:
Ожидаемый результат: система не имеет решения.
Результаты работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.4.
Рисунок 2.7.4 - Окно программы с результатом решения
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №5. Решение СЛАУ методом Гаусса. Случай, когда СЛАУ имеет множество решений (3 параметра, 3 уравнения).
Исходные данные:
Ожидаемый результат: система имеет множество решений (вывод одного из базисных решений).
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.5.
Рисунок 2.7.5 - Окно программы с результатом решения
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №6. Обратная матрица. Случай, когда матрица имеет обратную матрицу.
Исходные данные:
Ожидаемый результат: с помощью пакета Mathcat был получен следующий результат:
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.6.
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №7. Обратная матрица. Случай, когда матрица не имеет обратную матрицу.
Исходные данные:
Ожидаемый результат: обратная матрица не существует.
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.7.
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №8. Вычисление определителя. Случай, когда значение определителя равно числу.
Исходные данные:
Ожидаемый результат: 12
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.8.
Рисунок 2.7.7 - Окно программы с результатом решения
Анализ результата: полученный результат совпадает с ожидаемым.
Тест №9. Вычисление определителя. Случай, когда значение определителя равно числу.
Исходные данные:
Ожидаемый результат: 1120
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.9.
Рисунок 2.7.9 - Окно программы с результатом решения
Анализ результата: полученный результат совпадает с ожидаемым.
Тест № 10. Вычисление определителя. Случай, когда значение определителя равно нулю.
Исходные данные:
Ожидаемый результат: 0
Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.10.
Рисунок 2.7.10 - Окно программы с результатом решением
Анализ результата: полученный результат совпадает с ожидаемым.
Заключение
В результате выполнения данной курсовой работы получен конечный продукт, который представляет собой решения задач с помощью метода Гаусса. Программа рассчитана на широкий круг пользователей, так как может быть использована не только студентами, но и преподавателями, учителями и всеми желающими изучить решение задач с помощью метода Гаусса. Программа значительно экономит время потребителя. Данный продукт включает в себя:
1) Решение систем алгебраических линейных уравнений методом Гаусса
2) Нахождение обратной матрицы методом Гаусса
3) Вычисление определителя методом Гаусса.
Список использованных источников
1. Вержбицкий В.М. Основы численных методов [Текст]: учебное пособие для вузов/ В.М.Вержбицкий; под общ. ред. Л.В. Честной; Мн-во образования РФ, Удмурдский гос. Университет - М.:Высш.шк.,2002. - 840 с.:ил - ISBN 5-06-004020-8(в пер.).
2. Алексеев Е.Р. Турбо Паскаль 7.0 [Текст]: учебное пособие для вузов/ Алексеев Е.Р., Чеснокова О.В., Павлыш Н.Н., Славинская Л.В. - 2-е изд.- М.: НТ Пресс, 2006.- 272с.:ил - ISBN 5-477-00276-Х(в пер.).
3. Канатников А.Н., Крищенко А.П. Аналитическая геометрия [Текст]: Учеб. для вузов. 3-е изд./ Под ред. В.С.Зарубина, А.П.Крищенко. - М.: изд-во МГТУ им. Н.Э. Баумана, 2002. - 388 с.(сер. Математика в техническом университете; вып. 3) - ISBN 5-7038-1671-8 (вып. 3).
4. Шапрута В.В. Delphi 2005. Учимся программировать [Текст]: учебное пособие для вузов/ Шапрута В.В. - М.: НТ Пресс, 2005. - 352 с.: ил. - (самоучитель) - ISBN 5-477-00118-6.
5. Кострикин А.И. Введение в алгебру. Часть 1. основы алгебры: Учебник для вузов. - М.: Физико-математическая литература,2001. - 272 с. - ISBN 5-9221-0167-6.
Приложение А
Общая символьная схема алгоритма.
Символьная схема алгоритма решения СЛАУ методом Гаусса
Символьная схема алгоритма нахождения обратной матрицы с использованием метода Гаусса
Символьная схема алгоритма нахождения определителя матрицы с использованием метода Гаусса
Приложение Б
Код программы
unit modul;
interface
type
massiv=array of real;
matrica=array of array of real;
procedure Gauss(a:matrica;b:massiv;n:integer;
var x:massiv;var pr:byte);
function opredelitel(a:matrica; n:integer):real;
procedure obrmatrica (a:matrica; n:integer;
var h:matrica;var pr:byte);
implementation
procedure Gauss (a:matrica;b:massiv;n:integer;
var x:massiv;var pr:byte);
var i,j,k,r:integer;
max,m,c,s:real;
begin
{прямой ход метода Гаусса}
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
max:=abs(a[k,k]); {пусть диагональный элемент - максимальный}
r:=k; {Номер строки, в которой он находится}
for i:=k+1 to n do
if abs(a[i,k])>max then
begin{Если в строке найдется элемент, превышающий }
max:=abs(a[i,k]); {максимум, сохранить его, а}
r:=i; {также номер строки, в которой он находится}
end;
for j:=1 to n do {Текущая строка меняется местами со}
begin {строкой содержащий максимальный элемент}
c:=a[k,j];
a[k,j]:=a[r,j];
a[r,j]:=c;
end;
{Приведение расширенной матрицы к ступенчатому виду}
c:=b[k];
b[k]:=b[r];
b[r]:=c;
for i:=k+1 to n do
begin
m:=a[i,k]/a[k,k];
for j:=k to n do
a[i,j]:=a[i,j]-m*a[k,j];
b[i]:=b[i]-m*b[k];
end;
end;
{Обратный ход метода Гаусса}
if a[n,n]=0 then{Если последний диагональный элемент равен нулю}
if b[n]=0 then{и последний свободный коэффициент равен нулю, то}
pr:=1{система не имеет решений, иначе , если последний}
else pr :=2{свободный коэффициент не нулевой, то система имеет}
else{бесконечное множество решений}
begin{Если последний диагональный элемент не нулевой}
pr:=0; {переходим к определению решений СЛАУ.}
SetLength(x,n);
x[n]:=b[n]/a[n,n];
for i:=n downto 1 do
begin
s:=0;
for j:=i+1 to n do
s:=s+a[i,j]*x[j];
x[i]:=(b[i]-s)/a[i,i];
end;
end;
function opredelitel (a:matrica; n:integer):real;
var i,j,k,r:integer;
max,m,c,det:real;
begin
det:=1;
for k:=1 to n do
begin
max:=abs(a[k,k]); {пусть диагональный элемент - максимальный}
r:=k; {Номер строки, в которой он находится}
for i:=k+1 to n do
if abs(a[i,k])>max then
begin{Если в строке найдется элемент, превышающий }
max:=abs(a[i,k]); {максимум, сохранить его, а}
r:=i; {также номер строки, в которой он находится}
end;
if r<>k then det:=-det;
for j:=1 to n do{Текущая строка меняется местами со}
begin {строкой содержащий максимальный элемент}
c:=a[k,j];
a[k,j]:=a[r,j];
a[r,j]:=c;
end;
{приведение расширенной матрицы к ступенчатому виду}
for i:=k+1 to n do
begin
m:=a[i,k]/a[k,k];
for j:=k to n do
a[i,j]:=a[i,j]-m*a[k,j];
end;
end;
for i:=1 to n do
det:=det*a[i,i];
opredelitel:=det;
end;
procedure obrmatrica (a:matrica; n:integer;
var h:matrica;var pr:byte);
var i,j:integer;
pr1:byte;
x,b:massiv;
begin
for i:=1 to n do
begin
for j:=1 to n do {формирование вектора свободных членов}
if i=j then
b[j]:=1
else b[j]:=0;
Gauss(a,b,n,x,pr1); {Решение СЛАУ методом Гаусса}
if pr1<>0 then
begin
pr:=1;
exit;
end
else begin
for j:=1 to n do {формирование обратной матрицы}
h[j,i]:=x[j];
pr:=0; end;
end;
end;
end.
Размещено на Allbest.ru
Подобные документы
Сущность метода Гаусса при решении систем линейных уравнений. Элементарные преобразования этого метода. Краткое описание среды визуальной разработки Delphi. Описание основных применяемых процедур и алгоритм роботы программы по решению уравнений.
курсовая работа [1,1 M], добавлен 29.08.2010Разработка программного продукта для решения систем линейных алгебраических уравнений методом Гаусса с помощью ЭВМ. Математическое описание объекта моделирования, начальные и граничные условия. Алгоритм реализации задачи. Использование модуля CRT.
курсовая работа [269,6 K], добавлен 07.01.2016Матричная форма записи системы линейных уравнений, последовательность ее решения методом исключений Гаусса. Алгоритмы прямого хода и запоминания коэффициентов. Решение задачи о сглаживании экспериментальных данных с помощью метода наименьших квадратов.
курсовая работа [610,7 K], добавлен 25.06.2012Применение численного метода решения систем линейных алгебраических уравнений, используемых в прикладных задачах. Составление на базе метода матрицы Гаусса вычислительной схемы алгоритма и разработка интерфейса программы на алгоритмическом языке.
курсовая работа [823,9 K], добавлен 19.06.2023Системы линейных алгебраических уравнений. Решение систем уравнений графическим способом. Разработка программного кода модуля, реализующего приближенное решение систем линейных уравнений графическим способом. Отладка программного модуля "Метод Гаусса".
курсовая работа [858,5 K], добавлен 01.12.2013Решение системы линейных уравнений с матричными элементами и свободными членами с использованием метода Гаусса с выбором главного элемента, основанного на приведении матрицы системы к треугольному виду с помощью нахождения элементов главной диагонали.
лабораторная работа [71,1 K], добавлен 10.12.2014Сферы использования компьютеров, сущность и языки программирования. Применение модифицированного метода Гаусса и расширенной матрицы для решения системы линейных алгебраических уравнений (СЛАУ). Разработка программы, системные требования для ее работы.
курсовая работа [657,1 K], добавлен 09.01.2014Изучение основных этапов проектирования программных систем, создание прикладной программы, которая выполняет решение систем линейных алгебраических уравнений методом Гаусса. Вычисление определителя и обращение матриц. Листинг разработанной программы.
курсовая работа [563,3 K], добавлен 12.07.2012Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.
курсовая работа [1,2 M], добавлен 15.06.2013Описание методов вычисления определителя матрицы. Математическое решение задачи с применением метода исключения Гаусса с выбором главного элемента. Схема алгоритма программы, описание переменных и структур данных, текст программы на языке Pascal.
курсовая работа [438,8 K], добавлен 16.02.2011