- •Томский государственный университет систем управления и радиоэлектроники (тусур)
- •Программа вычисления интеграла методом левых прямоугольников.
- •Реферат Курсовая работа 31стр., 8 рис., 4 прил., 2 источника, 7 схем.
- •1.3.Вычисление интеграла методом левых прямоугольников
- •1.4.Точное решение интеграла
- •1.5.Абсолютная и относительная погрешность вычисления
- •2.Описание методики тестирования программы
- •3.Руководство пользователя по работе с программой.
- •4.Блок-схемы программ
- •5.Отображение трех графиков на одном экране.
- •Заключение.
- •Использованная литература:
- •Приложение а.
- •Приложение в.
- •Integral.Cpp – вычисление интеграла методом левых прямоугольников и получение точного решения интеграла
- •Приложение с.
- •Приложение d.
1.3.Вычисление интеграла методом левых прямоугольников
Метод прямоугольников — метод численного интегрирования функции одной переменной, заключающийся в замене подынтегральной функции на многочлен нулевой степени, то есть константу, на каждом элементарном отрезке. Если рассмотреть график подынтегральной функции, то метод будет заключаться в приближённом вычислении площади под графиком суммированием площадей конечного числа прямоугольников, ширина которых будет определяться расстоянием между соответствующими соседними узлами интегрирования, а высота — значением подынтегральной функции в этих узлах. Алгебраический порядок точности равен 0[1].
Если отрезок является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по формуле левых прямоугольников:
В нашем случае h = (x2 – x1) / n– ширина одного прямоугольника.
Для вычисления значения функции создана функция
float y(float x, float a, float b, float c, int k)
Где x – значение аргумента,a, b, c – коэффициенты уравнения,k – номер уравнения (нумерация с 0).
Тогда функция вычисления интеграла методом левых прямоугольников имеет вид:
floatintegr(float x1, float x2, int n, float a, float b, float c, int k)
{//вычисление интеграла методом левых прямоугольников
float h = (x2 - x1) / n,//ширина одного прямоугольника
znInt = 0;//значение интеграла (сумма площадей прямоугольников)
for(inti = 0; i< n; i++)//вычисление суммы
znInt += h * y(x1 + i * h, a, b, c, k);
returnznInt;
}
1.4.Точное решение интеграла
Точное решение интеграла вычисляется стандартным способом вычисления определенного интеграла: разность значений первообразной функции от верхнего и нижнего пределов интегрирования. Или в нашем случае:
floatintegrToch(float x1, float x2, float a, float b, float c, int k)
{//точное решение интеграла = первообразная(х2) - первообразная(х1)
returnyPervoobr(x2, a, b, c, k) - yPervoobr(x1, a, b, c, k);
}
Где yPervoobr(floatx, floata, floatb, floatc, intk) – функция, вычисляющая значение первообразной от аргумента x уравнения k с коэффициентами a, b, c.
1.5.Абсолютная и относительная погрешность вычисления
Абсолютная погрешность вычисления находится как модуль разности между точным и приближенным решением[2]
А относительной погрешностью приближённого числа называется отношение абсолютной погрешности приближённого числа к самому этому числу в процентном соотношении.
Так в нашем случае
fabs(pribl - toch) – абсолютная погрешность;
fabs(pribl - toch) / toch * 100 – относительная погрешность.
Где pribl – приближенное решение интеграла (методом левых прямоугольников), toch – точное решение интеграла.
2.Описание методики тестирования программы
Протестируем на корректное вычисление интеграла.
Файл «test.txt» содержит данные и находится в папке программы:
То есть пределы интегрирования [1, 4], a=2, b=0, c=3 – коэффициенты в уравнениях, n = 10 – число интервалов разбиения.
Большие значения погрешностей обусловлено малым количеством отрезков разбиения. При увеличении числа разбиений вычисления интеграла погрешность должна уменьшаться. Протестируем это условие.
Для n = 50:
Для n = 100:
Действительно, при увеличении числа отрезков разбиения погрешность вычисления уменьшается.
Рассмотрим работу программы при некорректном вводе данных:
Неверный путь/имя файла:
Попытка ввода символов для численного значения:
Аналогично работает тестирование для остальных численных значений
Попытка ввода не натурального числа разбиений
Это основные тесты для программы. Программа прошла успешное тестирование, как на корректную работу, так и на корректное вычисление интегралов.