Итеративный, рекуррентный (или повторный) процесс заключается в подстановке значения функции вместо значения своего аргумента. Встроенными являются два оператора, отличающиеся присутствием или отсутствием одной буквы S в конце имени оператора, это
ITERATES(f(x), x, x0, n);
ITERATE(f(x), x, x0, n).
При наличии в конце имени буквы S результат формируется в виде (n+1)-мерного вектора, содержащего все результаты промежуточных вычислений функции f(x). Первым элементом этого вектора служит начальное значение аргумента x0. При отсутствии S результатом выполнения оператора является значение функции после n-й подстановки. Схема алгоритма показана на рисунке справа.
Итерации применяются в методах численного решения уравнений. Наиболее популярен метод Ньютона для поиска корней алгебраического уравнения вида . Формула итерационного (последовательного) приближения к корню от заданного приближенного значения имеет следующий вид:
или .
Для примера с помощью итерационного метода Ньютона найдем корень следующего уравнения:
.
В соответствии с формулой Ньютона составим функцию для итерационного приближения:
F(x):=.
После исполнения этого выражения функция получит упрощенное значение:
F(x):=.
Области расположения нужных нулей функции F(x) можно получить, построив средствами пакета ее график (см. ниже). В надежде найти максимальный по величине корень, установим начальное значение равным 16, а количество подстановок - 8. Для получения корня с заданной точностью, то есть выводить числа с заданным количеством десятичных разрядов, необходимо заранее в соответствующих опциях сделать нужные установки. В рассматриваемом случае точность определена четырьмя десятичными разрядами:
ITERATES(F(x), x, 16, 8)
[16, 11.95, 9.418, 7.944, 7.232, 7.020, 7.000, 7.000, 7].
Функция f(x) и ее аргумент x могут быть и векторами. Например, для получения ряда Фибоначчи, который определяется рекуррентной формулой
, для и ,
в командной строке необходимо записать следующее выражение:
fib(i) := ITERATES([v2, v1 + v2], v, [0, 1], i).
Здесь вектор fib(i):=v представлен двумерными отрезками ряда (), начальное значение которого принято равным () = (0, 1). Векторная функция v перемещает свой второй элемент на место первого элемента, а второй элемент заменяет суммой первого и второго. Вызвав этот оператор по имени fib(5), получим вектор с шестью векторными компонентами, который показан справа.
Первый столбец такой таблицы можно элемент за элементом выбрать с помощью оператора VECTOR(*) и представить в виде вектора. Для этого через командную строку необходимо ввести следующие две строчки. Вторая строчка является вызовом функции по имени с конкретным значением параметра:
Sfib(n) := VECTOR((fib(n))k1, k, 1, n + 1)
Sfib(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55].