Курсовая работа / Устаревшая КР (СТАРАЯ ОФОРМЛЕНИЕ Вычисление определенного интеграла)
.pdf2 ОБЗОР СПОСОБОВ ОРГАНИЗАЦИИ ДАННЫХ ОБОСНОВАНИЕ ВЫБОРА СТРУКТУРЫ ДАННЫХ
ДЛЯ ЭФФЕКТИВНОГО ВЫПОЛНЕНИЯ ОПЕРАЦИЙ
Данные в программе могут быть организованы различными способами.
Необходимо правильно выбрать тип структур данных, которые будут использоваться в программе, чтобы обеспечить максимальную производительность, а также чтобы сделать процесс разработки наиболее удобным и эффективным.
2.1 Массив
Массив является примитивной структурой данных. Представляет собой именованную типизированную область памяти, в которой ячейки идут последовательно друг за другом. Массив может быть статическим или динамическим. На основе массива создаются производные от него типы данных, например, стеки и очереди[1].
2.2 Стек
Стек – абстрактный тип данных, представляющий собой список элементов, которые организованны по принципу LIFO (last in – first out,
«последним пришел – первым вышел»). Первым из стека удаляется элемент,
который был помещен туда последним. Существуют различные реализации стека. Например, стек может быть реализован на массиве, на односвязном списке, на двусвязном списке и так далее[2].
2.3 Очередь
Очереди – этот вид структуры такой же, как и стек, но работает по принципу FIFO (first in – first out, «первым пришел – первым ушел»). Первым
из очереди удаляется элемент, который был помещен туда первым. Из очереди всегда выводится элемент, который находится в ее голове. Очередь поддерживает те же операции, что и стек, за исключением того, что операции pop и top работают с другим концом очереди[3].
2.4 Двухсторонняя очередь
Двухсторонняя очередь –абстрактный тип данных в котором элементы можно добавлять и удалять как в конец, так и в начало. Данная структура поддерживает эффективное извлечение элемента из любого конца. Позволяет эффективно добавлять и удалять элементы как в начале, так и в конце очереди[4].
2.5 Словарь
Словарь – это ассоциативный массив, в котором данные хранятся в паре по принципу «ключ/значение». Словари могут быть с повторяющимися парами, либо с уникальными. Ключ всегда должен быть уникален. В качестве ключа можно указать любой неизменяемый объект, например: число, строку или кортеж. Элементы словаря могут содержать элементы произвольного типа данных и иметь неограниченную степень вложенности[5].
2.6 Выбор структуры данных
Для хранения и обработки результатов вычислений программы используется массив структур Result, каждая из которых хранит информацию о методе численного интегрирования, достигнутой точности, значении интеграла и количестве итераций.
3 ОПИСАНИЕ ПРОГРАММЫ
3.1 Общие сведения
В ходе выполнения курсовой работы была создана программа с консольным интуитивно понятным интерфейсом для работы с словарями для операционной системы Windows. В ней выполняются все условия,
обозначенные в техническом задании, и содержатся все необходимые компоненты, инструменты для корректной работы.
3.1.1 Наименование программы
Название данного приложения — «Калькулятор интегралов». Данное название напрямую связывается с темой курсовой работы и отражает назначение будущего приложения, заключающееся в численном вычислении определенных интегралов методами средних, Симпсона и Ньютона-Котеса.
Английский вариант названия: «Integral Calculator». Краткое наименование: «IC».
3.1.2 Программное обеспечение, необходимое для функционирования
программы
Для корректного функционирования данного программного продукта необходимо, чтобы на персональном компьютере или ноутбуке пользователя была установлена ОС от компании Microsoft, а именно Windows (Windows 10).
Также требуется наличие графического адаптера, чтобы устройство могло справляться с обработкой отображения консоли приложения. Другие требования к устройству пользователя не предусмотрены.
3.1.3 Язык программирования, на котором написана программа
Для написания программы был выбран язык программирования С++, за
его доступность, понятность и высокую производительность.
3.2 Функциональное назначение программы (классы решаемых задач и функциональные ограничения на применения)
Данная программа предназначена для численного вычисления определенных интегралов. Функциональные цели приложения включают выполнение следующих операций: выбор метода интегрирования (метод средних, метод Симпсона, метод Ньютона-Котеса для m=5), задание границ интегрирования и значения точности, а также отображение результатов на экране и сохранение их в файл. Разработанное приложение предназначено для упрощения расчетов интегралов и проверки правильности выполнения вычислений.
Приложение имеет некоторые функциональные ограничения.
Пользователь должен вручную задать границы интегрирования и точность, а
также выбрать один из предложенных методов вычисления. Результаты текущего сеанса сохраняются в файл, из которого их можно будет просмотреть позднее.
3.3 Описание логической структуры программы
Программа реализована на языке программирования C++ с
использованием процедурного подхода. Сама программа относительно проста и не требует применения объектно-ориентированного программирования.
Исходный код программы представлен в Приложении A.
3.3.1 Алгоритмы, используемые в программе
Для написания программы необходимо подключить следующие
библиотеки:
•fstream — для работы с файлами и сохранения результатов сеансов;
•iostream — для работы с вводом и выводом данных через консоль;
•cmath — для выполнения математических операций (например,
вычисление функций);
•iomanip — для форматирования вывода чисел с заданной точностью,
•string — для работы со строкам.
3.3.1.1 Алгоритм запуска программы
В начале программы пользователю предлагается ввести пределы интегрирования и точность, а потом выводится текстовое меню с 6 пунктами на выбор, которые реализованы с использованием конструкции switch-case:
1.Вычисление интеграла методом средних
2.Вычисление интеграла методом Симпсона
3.Вычисление интеграла методом Ньютона-Котеса
4.Вывод результатов текущего сеанса
5.Просмотр сохраненных результатов
6.Выход
•Во первом, втором и третьем пунктах пользователю предлагается выбрать метод вычисления определенного интеграла. Результаты сохраняются в массив.
•В четвертом пункте осуществляется вывод всех результатов текущего сеанса на экран.
•В пятом пункте пользователю предоставляется возможность просмотреть результаты, сохраненные в текстовом файле из предыдущих сеансов.
•В шестом пункте выполняется завершение работы программы.
Таким образом, алгоритм программы включает в себя выбор метода,
ввод параметров, вычисление результата, сохранение и просмотр результатов.
Блок-схема алгоритма представлена на рисунке 3.1.
Рисунок 3.1 - Алгоритм основной программы
3.3.1.2 Алгоритм вычисления определенного интеграла методом средних
Алгоритм использует метод средних прямоугольников для численного интегрирования функции на интервале [a, b]. Он разделяет интервал на n
равных частей и вычисляет сумму значений функции в серединах каждого подынтервала, увеличивает количество интервалов вдвое и повторяет процесс до тех пор, пока разница между текущим и предыдущим значением интеграла не станет меньше заданной точности eps. Алгоритм возвращает итоговое значение интеграла и количество итераций.
Алгоритм представлен на рисунке 3.2
Рисунок 3.2 - Алгоритм вычисления определенного интеграла методом средних
3.3.1.3 Алгоритм вычисления определенного интеграла методом
Симпсона
Алгоритм использует метод Симпсона для численного интегрирования функции на интервале [a, b]. Он делит интервал на nnn равных частей и вычисляет сумму значений функции в узлах с коэффициентами 4 и 2 для четных и нечетных точек соответственно, что соответствует правилам Симпсона, каждый раз увеличивает n вдвое и пересчитывает значение интеграла до тех пор, пока разница между текущим и предыдущим значением интеграла не станет меньше заданной точности eps. Алгоритм возвращает итоговое значение интеграла и количество итераций.
Алгоритм представлен на рисунке 3.3
Рисунок 3.1 - Алгоритм вычисления определенного интеграла методом Симпсона
3.3.1.4 Алгоритм вычисления определенного интеграла методом
Ньютона-Котеса
Алгоритм использует метод Ньютона-Котеса (для m=5) для численного интегрирования функции на интервале [a, b]. Он делит интервал на nnn
участков, каждый из которых состоит из 5 подучастков, и вычисляет сумму значений функции с учетом заданных весов для каждой точки, постепенно увеличивает количество участков вдвое и пересчитывает интеграл до тех пор,
пока разница между текущим и предыдущим значением интеграла не станет меньше заданной точности eps. Алгоритм возвращает итоговое значение интеграла и количество итераций.
Алгоритм представлен на рисунке 3.4
Рисунок 3.4 - Алгоритм вычисления определенного интеграла методом Ньютона-
Котеса
3.3.1.5 Алгоритм вывода результатов текущего сеанса
Алгоритм выводит на экран текущие результаты вычислений, для каждого результата отображает название метода, точность, значение интеграла и количество итераций.
Алгоритм представлен на рисунке 3.5
Рисунок 3.1 - Алгоритм вывода результатов текущего сеанса
3.3.1.6 Алгоритм вывода результатов из файла
Читает и выводит на экран содержимое файла results.txt, поочередно выводит строки файла, содержащие результаты предыдущих сеансов вычислений.
Алгоритм представлен на рисунке 3.6
Рисунок 3.6 - Алгоритм вывода результатов из файла
