Программирование итерационных циклов
Пример 6.3.1. Составить описание П-Ф, вычисляющей факториал числа
![](image/image496.gif)
![](image/image497.gif)
Описание П-Ф с использованием оператора произведения приведено на рис. 6.3.1.
![](image/image498.gif)
Рис. 6.3.1. Вычисление факториала числа
![](image/8-1-1-opredelenie-nelinejnogo-uravnenija_8.gif)
Описание П-Ф с использованием итерационного цикла и оператора break приведено на рис. 6.3.2. Обратите внимание на запись условия в операторе while, а именно while 1, что обеспечивает повторение тела цикла до тех пор, пока не выполнится условие n = 1, что приведет к выполнению оператора break и выходу из цикла. ¨
![](image/image499.gif)
![](image/image500.gif)
Рис. 6.3.2. Вычисление факториала числа
![](image/8-1-1-opredelenie-nelinejnogo-uravnenija_8.gif)
Пример 3.6.2. Дан вектор v, состоящий из n элементов. Составить П-Ф, определяющую первый элемент этого массива, который удовлетворяет условию
![](image/image501.gif)
![](image/image502.gif)
Описание П-Ф приведено на рис. 6.3.3. Эту же задачу можно реализовать с помощью оператора цикла for, что предотвратит «зацикливание», которое может иметь место в П-Ф search при неправильном задании исходных данных (например, при задании
![](image/image503.gif)
![](image/image504.gif)
![](image/image505.gif)
Рис. 6.3.3. Реализация алгоритма примера 6.3.2
![](image/image506.gif)
![](image/image507.gif)
Рис. 6.3.4. Реализация алгоритма примера 6.3.2
В двух предыдущих примерах была показана возможность замены оператора while (используемого при программной реализации итерационного цикла) другими конструкциями. Это обусловлено тем, что в этих примерах параметры цикла изменялись по закону арифметической прогрессии. Однако встречаются циклы, параметры которых изменяются по более сложным соотношениям. Особенно это характерно для алгоритмов решения нелинейных уравнений. В примере 6.3.3 рассматривается один из таких алгоритмов – метод последовательных предложений.
Пример 6.3.3. Дано нелинейное уравнение
![](image/image508.gif)
Необходимо вычислить с точностью
![](image/image509.gif)
![](image/image510.gif)
Первоначально исходное уравнение
![](image/image001.gif)
![](image/image511.gif)
Затем выбираем начальное значение
![](image/image512.gif)
![](image/image440.gif)
![](image/image001.gif)
![](image/image510.gif)
![](image/image513.gif)
![](image/image514.gif)
![](image/image515.gif)
Повторяя этот процесс, получаем последовательность чисел
![](image/image516.gif)
(это оправдывает название – метод последовательных приближений). Возможны два случая.
Случай 1. Последовательность
![](image/image517.gif)
![](image/image518.gif)
![](image/image519.gif)
Случай 2. Последовательность
![](image/image517.gif)
т.е. не имеет предела, и в этом случае метод не применим.
Приведем условие, являющееся достаточным для сходимости метода последовательных приближений.
Пусть на отрезке
![](image/image440.gif)
![](image/image511.gif)
![](image/image520.gif)
Если при этом выполняется и условие
![](image/image521.gif)
то итерационный процесс (6.3.3) сходится, а за нулевое приближение можно брать любое
![](image/image522.gif)
Заметим, что чем меньше величина q в (6.3.4), тем быстрее сходится последовательность
![](image/image517.gif)
![](image/image518.gif)
![](image/image523.gif)
![](image/image524.gif)
где
![](image/image033.gif)
![](image/image525.gif)
![](image/image518.gif)
Вернемся к уравнению нашего примера и преобразуем его к виду (6.3.2). Получаем
![](image/image526.gif)
![](image/image527.gif)
![](image/image528.gif)
![](image/image529.gif)
Рис. 6.3.5. Проверка условия (6.3.4)
Из графика видно, что в качестве величины
![](image/image530.gif)
Для проверки условия (6.3.5) построим график функции
![](image/image531.gif)
![](image/image510.gif)
![](image/image510.gif)
![](image/image531.gif)
![](image/image532.gif)
Вывод: метод последовательных приближений для любого
![](image/image533.gif)
Определим величину
![](image/image534.gif)
![](image/image535.gif)
Описание П-Ф, реализующей метод последовательных приближений приведено на рис. 6.3.7. Здесь же показаны вычисленное приближенное значение корня и его проверка. Имя функции
![](image/image531.gif)
![](image/image536.gif)
![](image/image537.gif)
![](image/image538.gif)
Рис. 6.3.6. Проверка условия (6.3.5)
![](image/image539.gif)
![](image/image540.gif)
![](image/image541.gif)
Рис. 6.3.7. Программная реализация метода
последовательных приближений
Задание 6.3.1. Дано нелинейное уравнение
![](image/image542.gif)
Составьте П-Ф для вычисления корня уравнения, лежащего в интервале
![](image/image543.gif)
Задание 6.3.2. Дано нелинейное уравнение
![](image/image544.gif)
Составьте П-Ф для вычисления двух корней уравнения, лежащих в интервалах [–7, –1] и [2, 12], методом последовательных приближений с точностью 0.001. Для организации итерационного цикла используйте оператор цикла while (см. пример 5.3.3). ?