
3. Разработка алгоритма
Предположим для решения задачи вычисления интеграла выбран метод прямоугольников. Изложим этот метод с помощью рис.4.2. Идея метода заключается в следующем. Промежуток интегрирования (а,в)разделим наnравных частей. В результате на оси х образуются точкиx0=a,х1, х2, ... ,хn=b. Строим на полученных отрезках прямоугольники покрывающие площадь фигуры образованной кривойf(x), осью х, и прямыми параллельными оси у, проведенными в точкахx0,х1,...,хn. Прямоугольники могут быть вписанными, как на нашем рисунке, либо описывающими вычисляемую площадь. Ведем следующие обозначения:y0=f(x0), y1=(x1),...,yn=f(xn), h=(b-a)/n. Тогда интеграл вычисляется по следующей формуле:
Jn=h(y0+y1+...+yn-1).
x0=а
xn=b
x2
x1
y=f(x)
y
x
Рис.4.2. .Вычисление интеграла методом прямоугольников
Точность метода определяется количеством интервалов на которое разбивается промежуток интегрирования. Увеличение числа интерваловповышает точность вычисления интеграла.
Чтобы добиться заданной точности, например e, поступают следующим образом:
Разбивают промежуток интегрирования на nинтервалов.
Вычисляют значение интеграла Jn.
Увеличивают число интервалов в 2 раза.
Вычисляют значение интеграла J2n
Если J2n - Jne, то заданная точность достигнута, в противном случае продолжают процесс, увеличения числа отрезков.
После выбора метода необходимо разбить его на самые элементарные шаги так, чтобы в результате получился алгоритм.
Алгоритм - это четкая последовательность действий, определяющих порядок преобразования исходных данных к искомому результату.
Процесс разработки алгоритма называется алгоритмизацией.
Каждый алгоритм должен удовлетворять следующим свойствам: массовости, однозначности, конечности.
- Массовость.Свойство, которое означает, что алгоритм должен позволять решать не одну конкретную задачу, а множество задач этого класса. Например, для решения задачи вычисления интеграла, алгоритм должен быть составлен так, что изменив подинтегральную функцию, либо границы интегрирования, по предложенному алгоритму можно было вычислить другой интеграл.
- Однозначность(детерминированность). Это свойство означает, что алгоритм при одних и тех же данных должен приводить к одному и тому же результату.
- Конечность.За конечное число шагов алгоритма должен быть получен результат либо выдано сообщение о невозможности его получения.
Алгоритм может быть описан словесно, в виде дерева либо с помощью блок схем.
Блок-схема - это подробное графическое представление алгоритма: порядка решения задачи, конкретных действий в виде набора определенных блоков, соединенных совокупностью направленных связей. Блоки представляют собой геометрические фигуры различных форм, каждая из которых характеризует особенности выполняемых действий и принимаемых решений (рис.4.3). Связи показывают переходы от одних блоков к другим. Форма для описания действий внутри блоков произвольная.
Блоки в блок-схеме должны иметь стандартное начертание (рис.4.3)и могут быть в большей или меньшей степени детализированы. Если программист начинающий, то блоки должны быть более детализированы и только квалифицированный программист может позволить себе обобщенные блоки.
Рис.4.3. Основные блоки: а) начало; б) конец; в) ввод данных; г) вывод данных; д) вычислительный блок; е) условный блок.
При разработке алгоритма необходимо придерживаться следующих правил:
1) Первоначально необходимо представить алгоритм из укрупненных блоков. Укрупненные блоки обычно нумеруются, так как в дальнейшем они будут представлены с помощью более детализированных блок-схем. Для задачи вычисления интеграла можно предложить следующую укрупненную блок схему (рис.4.4). Здесь блоки ввода-вывода и вычисления интегралов требуют детализации.
2) На втором шаге необходимо расписать алгоритмы для укрупненных блоков. В нашем случае это блоки1,2,3.
3) При решении больших задач уровней детализации может быть несколько. Это позволяет привлечь к составлению программ несколько программистов и быстрее справиться с решением задачи.
Рис.4.4. Блок-схема алгоритма вычисления интеграла
Специалист любой области должен владеть процессом алгоритмизации, не зависимо от того решает ли он вычислительную задачу или нет. Процессу алгоритмизации можно обучаться на примерах решения различных бытовых задач (алгоритм выбора различной аппаратуры, с учетом таких факторов как качество, ограничение на цену, местонахождение магазина и.т.п.). Необходимо научиться любую ситуацию и ваше поведение в ней представлять в виде алгоритма, и записывать его с помощью блок схем либо дерева.