РЕФЕРАТ
Курсовая работа 18с, 4 рисунка, 3 таблицы, 1 источник, 2 приложения.
ВЫЧИСЛЕНИЕ ИНТЕГРАЛА, РАЗРАБОТКА, ГАУСС-ЛЕЖАНДР, С++
Объектом исследования являются квадратуры Гаусса-Лежандра.
Цель работы – разработка программы приближенного вычисления определенного интеграла.
Разработанная программа позволяет получить приближенное значение интеграла, и погрешность расчётов.
В ходе разработки был использован метод Гаусса-Лежандра.
Программное обеспечение создано при помощи компилятора GNU C++ и среды редактирование SUBLIME. Пояснительная записка выполнена в редакторе Microsoft Word 2012
Оглавление
1.Введение. 5
2.Описание метода решения задачи 6
3.Описание программы.. 8
3.1 Описание файла main.cpp. 8
3.2 Описание файла input_number.cpp. 8
4. Описание методики тестирования программы.. 9
5. Руководство пользователя по работе с программой. 10
5.1. Установка программы. 10
5.2. Запуск программы. 10
5.3. Ввод данных с клавиатуры. 10
5.4. Ввод данных из файла. 11
5.5. Примечание. 11
6.Заключение. 12
Список использованных источников. 13
Приложение А Блок-схема программы.. 14
Приложение Б Листинг программы.. 15
Файл main.cpp. 15
Файл input_number.cpp. 18
Введение
Главной целью работы является разработка программного продукта, который позволяет существенно ускорить вычисление интеграла путем автоматизации. И впоследствии использоваться в учебном процессе и в научных расчетах.
В основу программного продукта заложен метод Гаусса-Лежандра для трех функций:
Задачи: реализовать ввод данных с проверкой на корректность, вычислить интеграл, вывести полученные данные и погрешности для анализа.
2.Описание метода решения задачи
Идею метода поясняет рис. 2.1. В методе трапеций, к примеру, погрешности аппроксимации суммируются для каждого интервала (рис. 2.1а), причем при заданном шаге мы не можем уменьшить погрешность, поскольку краевые точки интервала жестко заданы. Напротив, в методе высокоточных квадратур функция на искомом интервале аппроксимируется полиномом, который в зависимости от его параметров пересекает искомую функцию в нескольких точках (например, в двух в случае квадратичной функции) и эти точки мы можем подобрать таким образом, чтобы скомпенсировать наилучшим образом погрешности аппроксимации с разными знаками (рис. 2.1б). Далее, значение интеграла вычисляется на рассматриваемом интервале как сумма значений функции в данных точках с соответствующими весами. При этом, как правило, высокая точность расчетов достигается уже для аппроксимирующих полиномов невысокой степени (2–6). [1]
Рисунок 2.1 – Пример вычисления интеграла
В квадратурах Гаусса–Лежандра изначально рассматривается задача вычисления интеграла на отрезке [−1, 1]:
Где xi – веса с которыми берутся значения функции в точках xi.
Для произвольного интервала интегрирования функция сводится к следующему виду
-Уравнение для произвольного интервала
Где
Квадратуры Гаусса-Лежандра требуют минимум вычислений для достижения заданной точности интегрирования
Таблица 2.1 – Весовые коэффициенты и значения аргумента
Число точек в квадратуре | Весовые коэффициенты | Значения аргумента | Погрешность аппроксимации |
w0 = 1 w1 = 1 | x0 = −0, 577350269 x1 = +0, 577350269 | ∼ f (4)(x) | |
w0 = 0, 555555556 w1 = 0, 888888889 w2 = 0, 555555556 | x0 = −0, 774596669 x1 = +0, 000000000 x2 = +0, 774596669 | ∼ f (6)(x) | |
w0 = 0, 347854845 w1 = 0, 652145155 w2 = 0, 652145155 w3 = 0, 347854845 | x0 = −0, 861136312 x1 = −0, 339981044 x2 = +0, 339981044 x3 = +0, 861136312 | ∼ f (8)(x) | |
w0 = 0, 236926885 w1 = 0, 478628670 w2 = 0, 568888889 w3 = 0, 478628670 w4 = 0, 236926885 | x0 = −0, 906179846 x1 = −0, 538469310 x2 = +0, 000000000 x3 = +0, 538469310 x4 = +0, 906179846 | ∼ f (10)(x) | |
w0 = 0, 171324492 w1 = 0, 360761573 w2 = 0, 467913935 w3 = 0, 467913935 w4 = 0, 360761573 w5 = 0, 171324492 | x0 = −0, 932469514 x1 = −0, 661209386 x2 = −0, 238619186 x3 = +0, 238619186 x4 = +0, 661209386 x5 = +0, 932469514 | ∼ f (12)(x) |
Описание программы
Программа состоит из двух файлов в одном исполнена основная логика программы, во втором проверка вводимых данных
Описание файла main.cpp
В программе используются следующие константы:
Глобальные переменные:
double a1,b1,c1 – коэффициенты функции
int func_chose– вид функции
double a,b – пределы интегрирования
int type_input – выбор ввода данных
int n – количество разбиений.
Ход выполнения программы:
Запускаем функцию start, в которой выводим информацию о программе.
далее запрашиваем выбор расчетной формулы, предоставляем выбор откуда брать входные данные(Вводить руками, брать из файла). Проверяем введённые данные выполняем расчет. Выводим полученные значения (Приближенное, точное значение интеграла, и абсолютную и относительную погрешности). Завершаем программу.
Описание файла input_number.cpp
В файле функция input_number принимает на вход 3 аргумента: набор символов для вывода на экран пользователю при запросе данных, и минимальное и максимальное значения при которых считанные данные будут актуальны.
При вызове функции пока не будут получены удовлетворительные значения, запрашивается ввод данных, их проверка и в случае успеха результат ввода или же повторный запрос данных.
Листинг программы представлен в приложении Б.