Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая работа / Устаревшая КР (СТАРАЯ ОФОРМЛЕНИЕ Вычисление определенного интеграла)

.pdf
Скачиваний:
1
Добавлен:
10.12.2024
Размер:
667.36 Кб
Скачать

2 ОБЗОР СПОСОБОВ ОРГАНИЗАЦИИ ДАННЫХ ОБОСНОВАНИЕ ВЫБОРА СТРУКТУРЫ ДАННЫХ

ДЛЯ ЭФФЕКТИВНОГО ВЫПОЛНЕНИЯ ОПЕРАЦИЙ

Данные в программе могут быть организованы различными способами.

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

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 - Алгоритм вывода результатов из файла