Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка / MetRec02-1

.htm
Скачиваний:
18
Добавлен:
09.12.2013
Размер:
4.3 Кб
Скачать

Алгоритмические языки и программирование Задача 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.

Соседние файлы в папке Методичка