$$T_n = \sum_{i=1}^n {i}$$
$$n! = \prod_{i=1}^n {i}$$
There are also raising and falling versions of the factorial:
$$x^{\overline n} = \prod_{i=0}^n {x+i}$$
$$x^{\underline n} = \prod_{i=0}^n {x-i}$$
Here is the corresponding code:
(def triangular-number
(let [sum (partial apply +)]
(comp sum range inc)))
(def factorial
(let [product (partial apply *)
upto (comp (partial map inc) range)]
(comp product upto)))
(defn rising-factorial
[x n]
(apply * (map (partial + x) (range 0 n))))
(defn falling-factorial
[x n]
(apply * (map (partial - x) (range 0 n))))
(defn choose
[n k]
(/ (falling-factorial n k)
(factorial k)))
(defn multichoose
[n k]
(/ (rising-factorial n k)
(factorial k)))
The multichoose function is incredibly important because all polytopic numbers, including triangular-numbers and tetrahedral numbers can be expressed with it.
(def triangular-number
#(multichoose % 2))
(def tetrahedral-number
#(multichoose % 3))
(def pentatope-number
#(multichoose % 4))
This is the relationship between factorials and triangular-numbers. Triangular-numbers can be expressed in terms of factorials probably because the higher hyper operator, multiplication, encodes more information then addition.
No comments:
Post a Comment