APL/J言語:パワー(繰り返し)とインバース(逆関数)

^:(キャレットコロン、パワー、繰り返し)接続詞の機能は^(キャレット、べき乗)関数と似ていると言えます。左側の動詞を右側の引数回数繰り返します。

   ]a=: 10^ b=: i.5
1 10 100 1000 10000
   b
0 1 2 3 4
   %:a
1 3.16228 10 31.6228 100
   %: %: a
1 1.77828 3.16228 5.62341 10
   %: ^: 2 a
1 1.77828 3.16228 5.62341 10
   %: ^: 3 a
1 1.33352 1.77828 2.37137 3.16228
   %: ^: b a
1      10     100    1000   10000
1 3.16228      10 31.6228     100
1 1.77828 3.16228 5.62341      10
1 1.33352 1.77828 2.37137 3.16228
1 1.15478 1.33352 1.53993 1.77828
   (cos=: 2&o.) ^: b d=:1
1 0.540302 0.857553 0.65429 0.79348
   ] y=: cos ^: _ d
0.739085
   y=cos y
1

動詞cosを続けて作用すると、ある値に収斂します。無限に繰り返したときの結果(cos ^: _)がこの収斂値です。

^:(キャレットコロン、パワー、繰り返し)接続詞の右側引数を負の値_1にすると、左側引数の動詞の逆関数になります。

   %: ^: _1 b
0 1 4 9 16
   *: b
0 1 4 9 16
   %: ^: (-b) b
0 1     2         3         4
0 1     4         9        16
0 1    16        81       256
0 1   256      6561     65536
0 1 65536 4.30467e7 4.29497e9

演習:
11.1 二乗の関数*:(ほしコロン、アスタリスクコロン)は二乗根関数%:(パーセントコロン、ルート)の逆関数である。したがって%:^:_1は*:と同等の関数である。ボキャブラリーの中に同じような関係にある原始動詞を探し、実験せよ。

   ^ i.5   NB.^(キャレット、べき乗)は^.(ログ)の逆関数
1 2.71828 7.38906 20.0855 54.5982
   ^. i.5
__ 0 0.693147 1.09861 1.38629
   (^ ^:_1) i.5
__ 0 0.693147 1.09861 1.38629
   (^. ^:_1) i.5
1 2.71828 7.38906 20.0855 54.5982

   10&^ i.5
1 10 100 1000 10000
   10&^. i.5
__ 0 0.30103 0.477121 0.60206
   (10&^ ^:_1) i.5
__ 0 0.30103 0.477121 0.60206
   (10&^. ^:_1) i.5
1 10 100 1000 10000