Вычисление определенного интеграла. Следующий пример иллюстрирует применение стека для решения задачи, в которой часть работы выполняется по тому же алгоритму
Следующий пример иллюстрирует применение стека для решения задачи, в которой часть работы выполняется по тому же алгоритму, что и вся работа. Каждое значение интеграла будем вычислять по формуле прямоугольников (хотя применяемый метод безразличен и можно было бы использовать любой).
Вычисляем два очередных приближения интеграла –
- как площадь одного прямоугольника:
- как площадь двух прямоугольников:
Если два приближения отличаются друг от друга более чем на назначенную меру погрешности eps, делим интервал интегрирования (a,b) пополам, и левую половину сразу обработаем тем же алгоритмом, а обработку правой отложим на потом – в стек. В противном случае , I2 – окончательный ответ. Прибавим его к уже вычисленной части результата и поинтересуемся, не осталось ли отложенной на потом работы в стеке. Если ДА, то возьмемся за ее выполнение, если НЕТ – решение получено.
Текст функции, использующей ручное ведение стека для реализации рекурсии, приведен ниже:
#include <math.h>
#include <values.h>
struct INTERVAL{
Дата добавления: 2014-12-02; просмотров: 870;