>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь

23. Итерация

Повторение процесса (или последовательность подобных процессов) называется итерацией. Бо́льшая часть итераций делается неявно, как в */b , a*/b, и a*b ; явную итерацию можно осуществить при помощи союза в степени (^:), союза сообразно (@.) с вызовом себя ($:) и управляющих конструкций:
   (cos=: 2&o.) ^: (i.6) b=: 1
1 0.540302 0.857553 0.65429 0.79348 0.701369

   ]y=: cos^:_ b
0.739085

   y=cos y
1
Пример cos^:_ иллюстрирует тот факт, что бесконечная итерация может иметь смысл (тоесть она оканчивается) если повторяемый процесс сходится.

Управляемая итерация процесса p осуществляется при помощи p^:q , где результат q определяет количество повторений p , которые будут сделаны. Полезны так же выражения вида $:@p^:q и p^:q^:_.

Если функция f непрерывна, а f i и f j отличаются знаком, то это значит, что между i и j находится корень r , такой, что f r равно нулю. Тогда говорят, что список b=:i,j локализует корень. Более точную локализацию можно осуществить, взяв среднее b вместе с точкой из b , применение f к которой отличается знаком от значения функции в средней точке. Тоесть:
   f=: %: - 4:                 NB. Тестовая функция для примера

   root=: 3 : 0
m=. +/ % #
while. ~:/y
do.
if. ~:/ * f ({.,m) y
   do. y=. ({.,m) y
 else. y=. ({:,m) y
end.
end. m y
)

   b=: 1 32
   root b
16

   f b,root b
_3 1.65685 1.77636e_15

Упражнения

23.1   Используйте функцию root для нахождения корней различных функций, как например f=: 6&-@!

23.2   Поэкспериментируйте с функцией fn=: +/\ (производящей, при повторном применении к i.n , фигурные числа), обьясните поведение функции fn^:(?@3:)




>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь