Разработка калькулятора, решающего системы уравнений с тремя неизвестными
Введение
В настоящее время компьютеры способны облегчить работу человеку в любой
сфере деятельности, так как с помощью вычислительных машин есть возможность
автоматизировать многие задачи, тем самым сэкономить время на повторяющихся
действиях. Компьютеры могут производить труднейшие для человека вычисления за
секунды, а также исключают ошибки вычислений.
Огромное быстродействие вычислительных машин открывает новые широкие
возможности для применения общих математических методов исследования в
проблемах разных ветвей науки.
В данной курсовой работе рассматривается задача разработки программы,
имитирующей работу калькулятора, где вид обрабатываемых данных: система
уравнений с тремя неизвестными.
В первом разделе рассмотрена математическая модель задачи нахождения
решений матричного уравнения.
Во втором разделе рассмотрено проектирование программного модуля, также
описана схема модуля и рассмотрен пользовательский интерфейс.
В третьем разделе рассмотрен тест программного модуля.
1.
Постановка задачи
.1 Математическая
модель задачи
Системой уравнений называют множество уравнений с n неизвестными(n ≥ 2), для которых требуется найти значения неизвестных,
удовлетворяющих одновременно всем уравнениям системы.
Системой
m линейных уравнений с n неизвестными , ,…, или
линейной системой, называется система вида
++…+=,
++…+=,
.
. . . . . . . . . . . . . . . .
++…+=, (1.1)
где
, - числа. Числа (i =
1, 2, …,m; k = 1, 2, …, n) называются коэффициентами, (i = 1, 2, …, m) - свободными членами.
Коэффициенты обозначены буквой c
двумя индексами i и k : первый указывает номер уравнения, второй - номер
неизвестной, к которой относится данный коэффициент.
Решением
линейной системы (1.1) называется упорядоченная совокупность n
чисел , , …, , (1.2)
Подстановка
которых вместо , ,…, соответственно (=, =, …, =) обращает в тождество каждое из уравнений этой системы.
Линейную
систему (1.1) можно записать в матричном виде. Матрица
=, (1.3)
составленная
из коэффициентов линейных уравнений системы (1.1), называется основной матрицей
системы. Матрица
=, (1.4)
полученная
из основной присоединением столбца свободных членов, называется расширенной
матрицей системы (1.1).
Рассмотрим
столбцовые матрицы, составленные из неизвестных и свободных членов:
X =, B =. (1.5)
Поскольку
матрица А согласована с матрицей Х (число столбцов матрицы А равно числу строк
матрицы Х ), то можно найти произведение
АХ
=.
Элементами этой столбцовой матрицы являются левые части уравнений системы
(1.1), поэтому на основании определения равенства матриц
АХ = В. (1.6)
Таким образом, система линейных уравнений записана в виде одного
матричного уравнения (1.6), где А, Х, В определяются формулами (1.3) и (1.5);
эта запись системы называется матричной.
Каждой линейной системе соответствует единственная пара матриц А, В и
обратно: каждой паре матриц - единственная система. Система (1.1) может быть
записана в таком виде
…. (1.7)
Если
( , , …, ) - решение системы (1.1), то матрица
С
= (1.8)
Называется
вектор-решением этой системы. Матрица (1.8) удовлетворяет уравнению (1.6).
Определителем
системы n линейных уравнений с n неизвестными , ,…,
++…++…+=,
++…++…+=,
.
. . . . . . . . . . . . . . . . . (1.9)
++…++…+=
Называется
определитель матрицы из коэффициентов уравнений этой системы:
Δ =.
(1.10)
Обозначим
через определитель, полученный заменой в определителе Δ столбца из коэффициентов при неизвестной столбцом свободных членов системы (6.9):
=, (1.11)
где
k =1, 2,…, n.
Линейная
система (1.9) называется невырожденной, если ее определитель отличен от нуля (Δ ≠ 0).
Теорема
1. Невырожденная линейная система (1.9) имеет единственное решение
, , …, , (1.12)
где
Δ
и (k =
1, 2, …, n) определены соответственно формулами (1.10) и (1.11).
Эта теорема называется теоремой Крамера, а формулы (1.12) - формулами Крамера.
Следствие
из теоремы Крамера: Если однородная линейная система
++…+= 0,
++…+= 0,
.
. . . . . . . . . . . . . . . .
++…+= 0
имеет
ненулевое решение, то ее определитель Δ равен нулю.
Систему
(1.9) n линейных уравнений с n неизвестными
можно записать в матричном виде АХ = В, (1.13)
Если
система является невырожденной, т.е. det A
≠ 0, то она имеет единственное
решение
, (1.15)
где - матрица, обратная матрице А, а B
определяется третьей из формул (1.14).
1.2
Входные данные
Входными данными для решения поставленной задачи является значения
коэффициентов матрицы А и матрицы В. При необходимости отредактировать исходные
данные надо сначала ввести индекс редактируемого элемента, а затем только
нужное значение коэффициента матрицы. Все значения вводятся с клавиатуры.
Входные данные в курсовом проекте приведены в таблице 1.
Таблица 1 - Входные данные
Название
|
Обозначение
|
Диапазон возможных значений
|
1
|
2
|
3
|
Пункт меню 1
|
сh 2
|
1-5 3
|
Значения коэффициентов
матрицы А
|
А[i][j]
|
Ограничений нет
|
Значения коэффициентов
матрицы В
|
Ограничений нет
|
Индекс редактируемого
элемента
|
[i][j]
|
1-3
|
1.3
Выходные данные
Результатом работы программы является нахождение коэффициентов матрицы Х.
Выходные данные представлены в таблице 2.
Таблица 2 - Выходные данные
Название
|
Вид представления
|
Вывод
|
Исходную матрицу системы
|
А[0][0]…А[0][n] B[0] ………………………. A[n][0]…A[n][n]
B[n]
|
На экран, в файл “log.txt”
|
Определитель
|
det
|
|
Коэффициенты искомой
матрицы Х, т. е. неизвестные коэффициенты системы уравнений
|
Х[i]
|
|
1.4
Требования к надежности
Все ошибки, возникающие при выполнении программы, возможная реакция
программы на них и методы их исправления представлены в таблице 3.
Таблица 3 - Требования к надежности
Причина возникновения
ошибки
|
Реакция программы
|
Метод ее исправления
|
Ввод несуществующего пункта
меню.
|
Выдается сообщение,
повторяется запрос.
|
Заново ввести данные
|
Ввод неверного формата
числа
|
Выдается сообщение,
повторяется запрос
|
Заново ввести данные
|
Исходные данные не
соответствуют требуемому типу
|
Выдается сообщение,
повторяется запрос.
|
Заново ввести данные
|
Невозможно открыть файл
|
Выдается сообщение об
ошибке
|
Проверить существование
файла.
|
2.
Проектирование программного модуля
.1
Структурная диаграмма программного модуля
Иерархическая структура алгоритма представлена на рисунке 1.
Рисунок 1- Структурная диаграмма программного модуля
int main - основная функция программы.
int menu - вывод основного меню на экран и возврат номера
выбранной функции.
double control - контроль
формата вводимых значений.
float dop - вычисление
алгебраического дополнения.
2.2
Разработка схемы программного модуля и ее описание
Рисунок 2- Блок- схема функции menu.
уравнение линейный программа тестирование
Рисунок 3.Лист 1- Блок-схема функции dop
Рисунок 3.Лист 2 - Блок- схема функции dop.
Рисунок 4.Лист 1 - Блок-схема функции main
Рисунок 4.Лист 2 - Блок-схема функции main
Рисунок 4.Лист 3 - Блок-схема функции main
Рисунок 4.Лист 3 - Блок-схема функции main
Рисунок 4.Лист 4 - Блок-схема функции main
Рисунок 4.Лист 5 - Блок-схема функции main
2.3 Разработка пользовательского интерфейса
Пользовательский интерфейс представлен в виде меню, в котором пункты
выбираются с помощью нажатия соответствующей клавиши. При выборе первого пункта
меню пользователь будет вводить исходные данные. При неверном вводе некоторых
элементов можно отредактировать данные с помощью пункта меню «Редактирование
данных» (рис.6).
Рисунок 5- Иерархия меню
Рисунок 6 - Ввод и редактирование данных
При выборе пункта меню “Вывод решения”, пользователь увидит содержимое
файла “log.txt”.
Рисунок 7-Вывод решения
3.
Тестирование программного модуля
Тестирование разработанной программы представлено в таблице 4.
Таблица 4 - Тестирование программного модуля
Входные данные
|
Реакция программы
|
Требуемое действие
|
Тест 1: Ввод
несуществующего пункта меню.
|
Ввод: 6
|
Сообщение об ошибке ввода:
Такого пункта нет! Введите от 1 до5.
|
Повторить ввод пункта меню.
|
Тест 2: Ввод пункта меню
буквами или другими знаками, кроме цифр.
|
Ввод: р
|
Сообщение об ошибке ввода:
Такого пункта нет! Введите от 1до 5.
|
Ввод пункта меню цифрами.
|
Тест 3: Пункт меню не был
введен.
|
Ввод: (нет)
|
Сообщение об ошибке ввода:
Такого пункта нет! Введите от 1до 5.
|
Ввести пункт меню.
|
Тест 4: Ввод исходных
данных (коэффициентов уравнения) другими знаками, кроме цифр.
|
Запрос: Введите
коэффициенты уравнений. Ввод: у
|
Сообщение об ошибке:
ОШИБКА! Неверный формат числа. Введите значения заново.
|
Ввод исходных данных цифрами.
|
Тест 5: Ввод индекса
редактируемого элемента другими знаками, кроме цифр.
|
Запрос: Введите индекс
редактируемого элемента <i, j> . Ввод: k
|
Сообщение об ошибке ввода:
ОШИБКА! Неверный формат числа. Введите значения заново.
|
Ввод редактируемого
элемента цифрами.
|
Тест 6: Исходные данные
введены правильно ( в том числе и пункт меню). Проверка правильности
вычислений.
|
Запрос: Введите
коэффициенты уравнений: Ввод: A[1][1]=1 A[1][2]=2 A[1][3]=3 B[1]=4 A[2][1]=5 A[2][2]=6 A[2][3]=7
B[2]=8 A[3][1]=9 A[3][2]=1 A[3][3]=2 B[3]=3
|
Вывод результатов
вычислений. Определитель=-36.00 Искомая матрица: Х=. При расчетах в Excel получены
результаты -36.00 0 -1 2
|
|
Заключение
В данном курсовом проекте была рассмотрена задача разработки программы,
имитирующей работу калькулятора, где вид обрабатываемых данных: система
уравнений с тремя неизвестными. Алгоритм программы реализован в среде Visual C++ 6.0. Выполнены все пункты задания. В программе предусмотрена
обработка большого количества ошибок ввода. Тестирование показало, что
программа