Программирование и решение задач в пакете MathCAD

       

Программирование итерационных циклов


            Пример 6.3.1. Составить описание П-Ф, вычисляющей факториал числа 

Программирование итерационных циклов
 по формуле

Программирование итерационных циклов
.

                Описание П-Ф с использованием оператора произведения приведено на рис. 6.3.1.

            

Программирование итерационных циклов

                   Рис. 6.3.1. Вычисление факториала числа

Программирование итерационных циклов

            Описание П-Ф с использованием итерационного цикла и оператора break приведено на рис. 6.3.2. Обратите внимание на запись условия в операторе while, а именно  while 1, что обеспечивает повторение тела цикла до тех пор, пока не выполнится условие n = 1, что приведет к выполнению оператора break и выходу из цикла. ¨

            

Программирование итерационных циклов
         
Программирование итерационных циклов

           

                 Рис. 6.3.2. Вычисление факториала числа

Программирование итерационных циклов

            Пример 3.6.2. Дан вектор v, состоящий из n элементов. Составить П-Ф, определяющую первый элемент этого массива, который удовлетворяет условию

Программирование итерационных циклов
, где
Программирование итерационных циклов
— заданные величины.

Описание П-Ф приведено на рис. 6.3.3. Эту же задачу можно реализовать с помощью оператора цикла for, что предотвратит «зацикливание», которое может иметь место в  П-Ф search при неправильном задании исходных данных (например, при задании

Программирование итерационных циклов
). Описание П-Ф приведено на рис. 6.3.4. ¨

Программирование итерационных циклов

Программирование итерационных циклов

Рис. 6.3.3. Реализация алгоритма примера 6.3.2

Программирование итерационных циклов

Программирование итерационных циклов

Рис. 6.3.4. Реализация алгоритма примера 6.3.2

            В двух предыдущих примерах была показана возможность замены оператора while (используемого при программной реализации  итерационного цикла) другими конструкциями. Это обусловлено тем, что в этих примерах параметры цикла изменялись по закону арифметической прогрессии. Однако встречаются циклы, параметры которых изменяются по более сложным соотношениям.  Особенно это характерно для алгоритмов решения нелинейных уравнений. В примере 6.3.3 рассматривается один из таких алгоритмов – метод последовательных предложений.

            Пример 6.3.3. Дано нелинейное уравнение

                                                 

Программирование итерационных циклов
.                                                  (6.3.1)


Необходимо вычислить с точностью
Программирование итерационных циклов
 вещественный корень, лежащий в интервале
Программирование итерационных циклов
, используя метод последовательных приближений (называемый также методом простой итерации). Не останавливаясь на теоретическом обосновании, приведем основные  расчетные соотношения, необходимые для программной реализации этого метода.
            Первоначально исходное уравнение
Программирование итерационных циклов
 заменяется эквивалентным ему уравнением
                                                                      
Программирование итерационных циклов
           .                                                      (6.3.2)
Затем выбираем начальное значение
Программирование итерационных циклов
 из некоторого интервала
Программирование итерационных циклов
, внутри которого находится только один корень уравнения
Программирование итерационных циклов
 (в нашем примере это интервал
Программирование итерационных циклов
). Подставляя это значение в правую часть (6.3.2), получаем первое приближение
Программирование итерационных циклов
. Затем значение
Программирование итерационных циклов
 вновь подставляем в правую часть (6.3.2) и получаем
Программирование итерационных циклов
.
Повторяя этот процесс, получаем последовательность чисел  
Программирование итерационных циклов
                                 (6.3.3)
(это оправдывает название – метод последовательных приближений). Возможны два случая.
Случай 1. Последовательность
Программирование итерационных циклов
 сходится к некоторому числу
Программирование итерационных циклов
, т.е. имеет предел, и тогда этот предел является решением нелинейного уравнения, т.е.
Программирование итерационных циклов
.
            Случай 2. Последовательность
Программирование итерационных циклов
 расходится,
т.е. не имеет предела, и в этом случае метод не применим.
            Приведем условие, являющееся достаточным для сходимости метода последовательных приближений.
            Пусть на отрезке
Программирование итерационных циклов
 имеется единственный корень уравнения
Программирование итерационных циклов
, и во всех точках этого отрезка справедливо неравенство
                                                       
Программирование итерационных циклов
.                                                    (6.3.4)
Если при этом выполняется и условие
                                                            
Программирование итерационных циклов
,                                         (6.3.5)
то итерационный процесс (6.3.3) сходится, а за нулевое приближение можно брать любое
Программирование итерационных циклов
.
            Заметим, что чем меньше величина q в (6.3.4), тем быстрее сходится последовательность
Программирование итерационных циклов
 к своему пределу
Программирование итерационных циклов
. В качестве приближенного значения корня можно принять приближение
Программирование итерационных циклов
, удовлетворяющее условию


                                              
Программирование итерационных циклов
,                                         (6.3.6)
где
Программирование итерационных циклов
 — заданная точность вычисления корня, входящая в неравенство
                                                    
Программирование итерационных циклов
,                                          (6.3.7)         
Программирование итерационных циклов
 — точное значение корня.
       Вернемся к уравнению нашего примера и преобразуем его к виду (6.3.2). Получаем
Программирование итерационных циклов
(знак минус появился из-за отрицательности искомого корня), т.е.
Программирование итерационных циклов
. Проверим выполнение условия (6.3.4) графическим способом, используя графику MathCAD (см. рис. 6.3.5).
Программирование итерационных циклов

Программирование итерационных циклов

                         Рис. 6.3.5. Проверка условия (6.3.4)
Из графика видно, что в качестве величины
Программирование итерационных циклов
 в условии (6.3.4) можно принять значение 0.5, которое удовлетворяет условию (6.3.4).
Для проверки условия (6.3.5) построим график функции
Программирование итерационных циклов
 на интервале
Программирование итерационных циклов
 (см. рис. 6.3.6). Видно, что условие (6.3.5) также выполняется – на всем интервале
Программирование итерационных циклов
 функция
Программирование итерационных циклов
 удовлетворяет условию
Программирование итерационных циклов
.
            Вывод: метод последовательных приближений для любого
Программирование итерационных циклов
 сходится к точному решению нелинейного уравнения (6.3.1).
                       
Определим величину
Программирование итерационных циклов
 в условии окончания итераций (6.3.6):
                                             
Программирование итерационных циклов

            Описание П-Ф, реализующей метод последовательных приближений приведено на рис. 6.3.7. Здесь же показаны вычисленное приближенное значение корня и его проверка. Имя функции 
Программирование итерационных циклов
 является формальным параметром. Для предотвращения «зацикливания» итерационной процедуры (6.3.3) используется оператор цикла  for (обсуждение см. в примере 5.3.4).  Заметим, что  переменные 
Программирование итерационных циклов
,  используемые в  теле П-Ф, являются простыми переменными, имена которых имеют нижние индексы (вводимые после нажатия клавиши
Программирование итерационных циклов
 – «десятичная точка»). ¨
Программирование итерационных циклов

        
Рис. 6.3.6. Проверка условия (6.3.5)
         
Программирование итерационных циклов

Программирование итерационных циклов

Программирование итерационных циклов

Рис.  6.3.7. Программная реализация метода
последовательных приближений
Задание 6.3.1. Дано нелинейное уравнение
Программирование итерационных циклов
.
Составьте П-Ф для вычисления корня уравнения, лежащего в интервале
Программирование итерационных циклов
, методом последовательных приближений. Для организации итерационного цикла используйте оператор цикла while (см. пример 5.3.3). ?
Задание 6.3.2. Дано нелинейное уравнение
Программирование итерационных циклов
.
Составьте П-Ф для вычисления двух корней уравнения, лежащих в интервалах [–7, –1] и [2, 12], методом последовательных приближений с точностью 0.001. Для организации итерационного цикла используйте оператор цикла while (см. пример 5.3.3). ?

Содержание раздела