Математика/5. Математическое моделирование
Ефремов А.А.
Могилёвский
государственный областной институт
развития образования,
Беларусь
Моделирование итерационных процессов
с помощью функциональных уравнений
Под итерационным процессом в данной статье подразумевается
однозначно определённая последовательность повторяющихся операций. Природа
такого рода процессов достаточно многообразна, поэтому, с моей точки зрения,
неверно было бы сводить их лишь к процессам, связанным с теорией приближённых
вычислений.
Итерационные алгоритмы нашли наиболее широкое
применение в программировании. Так, любой цикл (одна из основных
алгоритмических структур) по сути представляет собой итерационный процесс.
В ходе моделирования циклических действий в
подавляющем большинстве случаев нельзя обойтись без применения ЭВМ, поскольку
обычно для этого требуется значительный объём арифметических расчётов. Однако в
основе работы алгоритма так или иначе лежит математический фундамент.
Таким образом, для глубокого понимания сути
итерационных процессов необходимо привлекать аппарат математического анализа, в
частности, теорию функциональных уравнений. Рассмотрим это на конкретном
примере.
Представим себе окружность, по периметру которой
расставлены натуральные числа от 1 до . На каждом шаге стирается (вычёркивается, удаляется) каждое
второе по ходу часовой стрелки число. Отсчёт начинается с 1. Так, на первом
шаге будут удалены все чётные числа. Ясно, что на каждом шаге количество чисел
на окружности уменьшается. Наступит момент, когда останется одно-единственное
число. Зададимся целью выяснить, какое число останется, например, при
.
Введём в рассмотрение функцию , которая представляет собой преобразование, совершаемое над
аргументом (в роли которого выступает окружность с числами). Результатом этого
преобразования является некоторое натуральное число. Таким образом,
.
Легко определить, что ,
,
,
и т.д.
Пользуясь методом математической индукции, можно
показать, что если , где
, то при последовательном вычёркивании каждого второго числа
последним останется число
. Однако этот способ, на мой взгляд, является слишком
«искусственным». Заметить эту закономерность отнюдь не просто.
Попробуем подойти к решению задачи несколько
иначе. Рассмотрим два случая.
1) . После первого шага получим ряд
. Заметим, что если к каждому из оставшихся чисел прибавить
по единице и результат поделить пополам, будем иметь ряд
. Следовательно, имеет место соотношение
. (*)
2) . После первой операции имеем последовательность
. Если к каждому из этих чисел прибавить по единице и результат
поделить на два, получим ряд
. Таким образом, можно записать
. (**)
Из (*) и (**) легко
найти, что весь процесс можно описать системой
Применяя эти
рекуррентные соотношения, запишем
,
,
,
,
,
,
,
,
,
,
.
Как было указано выше, . Выполняя вычисления значений функции
в обратном порядке,
получим, что
.
Поставленную задачу
можно считать решённой. Для любого конечного описанный алгоритм
позволяет получить однозначный ответ.
Литература:
1. Блинков, А.Д. Московские математические регаты / Сост. А. Д. Блинков, Е. С. Горская, В.
М. Гуровиц. // М. : МЦНМО, 2007.
2. Роганов, Е.А. Рекурсия и итерация // Основы информатики и программирования: Учебное пособие.
— М. : МГИУ, 2001.