J: 반복

J: 반복 (Intro 23)

J 입문 23장에서는 반복(iteration)과, 거듭제곱 접속사(^:)·안건(@.)·제어 구조를 통한 명시적 반복, 그리고 근(根) 탐색 루프를 설명해요.

출처: 문서

본문

프로세스, 또는 유사한 프로세스 수열의 반복을 반복(iteration)이라 불러요. 많은 반복은 */b, a*/b, a*b에서처럼 암묵적(implicit)이에요. 명시적 반복은 거듭제곱 접속사(^:), 자기 참조를 가진 안건(@.), 그리고 제어 구조에 의해 제공돼요:


   (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^:qp^:q^:_ 형태가 흔히 유용해요.

f가 연속 함수이고 f i와 f j가 부호가 다르면, f r이 0이 되도록 i와 j 사이에 근(根) r이 반드시 있어요. 목록 b=:i,j는 근을 감싼다(bracket a root)고 말해요. 더 좁은 감쌈은 b의 평균과, f를 적용했을 때 그 결과가 평균의 결과와 부호가 다른 b의 那 원소와 함께 제공돼요. 따라서:


   f=: %: - 4:                 NB. A sample function

   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

연습문제 (Exercises)

23.1

함수 root를 사용해 f=: 6&-@! 같은 다양한 함수의 근을 찾아 보세요.

23.2

함수 fn=: +/\(반복적으로 i.n에 적용하면 도형수(figurate numbers)를 만드는)를 실험하고, 함수 fn^:(?@3:)의 동작을 설명해 보세요.

더 알아보기 (Learn more)

출처: Intro 23. Iteration