Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
решение интеграла методом левых прямоугольников...docx
Скачиваний:
7
Добавлен:
22.09.2019
Размер:
550.85 Кб
Скачать

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:

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

Рассмотрим работу программы при некорректном вводе данных:

  1. Неверный путь/имя файла:

  1. Попытка ввода символов для численного значения:

Аналогично работает тестирование для остальных численных значений

  1. Попытка ввода не натурального числа разбиений

Это основные тесты для программы. Программа прошла успешное тестирование, как на корректную работу, так и на корректное вычисление интегралов.