Методичка / MetRec02-1
.htmАлгоритмические языки и программирование Задача 2-1 Вычислить площадь заданной фигуры методом прямоугольников Рис. 2-1 Рассмотрим в качестве примера следующую задачу
Пусть требуется с помощью метода прямоугольников вычислить площадь S фигуры, очерченной сверху линией, заданной функцией F(x,y), снизу - координатной осью X, слева - осью Y и справа - вертикальной прямой x=xB. На рис. 2-1 приведено изображение этой фигуры.
Опишем один из возможных алгоритмов вычисления S по шагам Определим все параметры функции F(x,y).
В нашем случае - это эллипс. Его формула:
((x-x0)*(x-x0))/(A*A) + ((y-y0)*(y-y0))/(B*B) = 1. (2-1)
Все параметры формулы: x0, y0, A и B должны быть определены.
Напомним, что x0 и y0 - координаты центра эллипса, A и B - его радиусы вдоль осей X и Y. Выбираем в качестве параметра сканирования переменную x. Определяем ее начальное xA и конечное xB значения.
В нашей задаче xA=0, xB мы должны вычислить как правый корень уравнения 2-1 при y=0. Задаем переменной x начальное значение x=xA. Задаем число разбиений N отрезка [xA,xB], например N=100. Вычисляем величину шага сканирования Dx или ширину элементарного прямоугольника. В нашем случае Dx = (xB - xA)/N. Задаем начальное значение 0 переменной, в которой мы будем суммировать площади прямоугольников разбиения: S=0.
На этом подготовительные операции можно считать завершенными. Входим в цикл.
Подставляем текущее значение x в формулу 2-1 и вычисляем значение y.
Естественно, формулу для этого требуется преобразовать. Вычисляем площадь текущего i-го прямоугольника: Ds = Dx * y. Добавляем в переменную S вычисленную площадь Ds :
S:=S + Ds. Делаем шаг в цикле. Для этого параметр x увеличиваем на Dx. Проверяем, не дошли ли мы до конца отрезка [xA,xB].
Если не дошли - то цикл продолжим, т.е. еще раз выполним шаги 8-12,
Если дошли до конца отрезка - цикл завершаем, перейдем на шаг 13. Полученное значение S являются приближенным решением задачи. Далее используем это значение для дальнейшей обработки - вывода данных в соответствующих ячейках таблицы.
ПРИМЕЧАНИЯ Задачу или шаг 12 лучше возложить на оператор цикла FOR, который сам изменяет счетчик или переменную цикла и следит, чтобы эта переменная была в заданном интервале (например,
FOR I:=0 TO N DO ОПЕРАТОР; при этом ОПЕРАТОР будет выполняться N раз).
Данный оператор должен задаваться при входе в цикл, т.е. на шаге 8.
Приведенный пример рассматривает лишь один из вариантов использования метода прямоугольников. Здесь высота (значение y) каждого прямоугольника вычисляется по его левому краю.
Возможны и другие варианты: высота может быть определена по середине основания прямоугольника или по его правому краю,
При этом алгоритм должен быть соответственно изменен.
Кроме того приведенный алгоритм можно упростить.
Во-первых, ряд действий несложно объединить.
Во-вторых, умножение в цикле (шаг 9) Dx * y можно осуществить всего один раз после выхода из цикла. В этом случае в цикле нужно суммировать высоты прямоугольников и сохранять это значение в некой переменной (например, yS). Тогда, после завершения цикла в этой переменной будем иметь общую длину элементарных прямоугольников. Умножив ее на ширину прямоугольника, а она одинакова у всех них, получим результат:
S = Dx * yS.