J では、階乗や三角関数など、いくつかの関数が verb として実装されています。そのうちの一部を、ここで紹介します 1。
床関数・天井関数
床関数 (floor) は <.
、天井関数 (ceiling) は >.
(どちらも monad) です。
<.1.2
1
<._1.2
_2
>.1.2
2
>._1.2
_1
max・min
<.
と >.
を dyad として使うと、引数のうち小さい方 / 大きい方を返します。
1 <. 2 NB. min
1
1 >. 2 NB. max
2
/
と組み合わせると、リストの中で最小 / 最大の値を求められます。
<./ 2 5 0 _2 1
_2
最大公約数・最小公倍数
+.
(dyad) は最大公約数 (GCD) を、*.
(dyad) は最小公倍数 (LCM) を求めます。
12 +. 16
4
12 *. 16
48
引数が boolean (0 / 1) の場合は、+.
は論理和 (or)、*.
は論理積 (and) を表します。
0 +. 1
1
0 *. 1
0
階乗
!
(monad) は階乗を計算します。自然数以外も引数にとることができます (ガンマ関数を用いて計算されるため)。
!5 NB. 5!
120
!
(dyad) は、組合せの総数を求める計算です。
3 ! 5 NB. C(5, 3)
10
指数関数・対数関数
x の y 乗 (指数) を計算するには、^
(dyad) を使います。
2 ^ 3
8
一方で、対数は、^.
(dyad) で求められます。
2 ^. 8 NB. log(2, 8)
3
^
も ^.
も、monad として使った場合、底を e (ネイピア数) として計算されます。
三角関数
o.
は、三角関数などの計算に使われます 2。
NB. 1r3p1 は 1/3 * π^1 = π/3 (60°)
1 o. 1r3p1 NB. sin(π/3)
0.866025
2 o. 1r3p1 NB. cos(π/3)
0.5
3 o. 1r3p1 NB. tan(π/3)
1.73205
左の引数で、関数を指定します。(例えば、1 は sin、2 は cos を表します。) なんと 25 種類 3 の関数を使うことができるのですが、多すぎるので割愛します。
複素数
j.
は、実数から複素数を作る verb です。
j. 2
0j2
1 j. _1
1j_1
_1 j. 2 * 3
_1j6
複素数から実部・虚部を取り出す機能もあります。
+.2j3 NB. 実部・虚部のリスト
2 3
9 o. 2j3 NB. 実部
2
11 o. 2j3 NB. 虚部
3
複素数の計算は基本的に実数と同じ verb を使いますが、1 つだけ注意が必要です。+
(monad) は、引数が complex のとき共役複素数を返します。
+2j3
2j_3
素数
p:
(monad) を使うと、n 番目の素数を求めることができます。
p:3 NB. 3 番目の素数
7
p:i.10 NB. 最初の 10 個の素数
2 3 5 7 11 13 17 19 23 29
q:
(monad) は、素因数分解を行います。
q:120
2 2 2 3 5
[ 前 : 様々な数値 ] [ 目次 ] [ 次 : ユニコード文字列 ]