2021年5月1日土曜日

210501

Ruby


(1/e) * Sum_{a_1>=1, a_2>=1, ... , a_n>=1} a_1 * a_2 * ... * a_k / (a_1 + a_2 + ... + a_n)!

O. Furdui, Limits, Series and Fractional Part Integrals
の3章のOpen Problemの一つに
Sum_{a_1>=1, a_2>=1, ... , a_n>=1} a_1 * a_2 * ... * a_n / (a_1 + a_2 + ... + a_n)!
が 有理数 * e と書けるかいう問題があるが、
より一般的に、1 <= k <= n のとき、
Sum_{a_1>=1, a_2>=1, ... , a_n>=1} a_1 * a_2 * ... * a_k / (a_1 + a_2 + ... + a_n)!
が 有理数 * e と書ける。
この有理数すなわち
(1/e) * Sum_{a_1>=1, a_2>=1, ... , a_n>=1} a_1 * a_2 * ... * a_k / (a_1 + a_2 + ... + a_n)!
を出力してみた。

def f(n)
  return 1 if n < 2
  (1..n).inject(:*)
end

def ncr(n, r)
  return 1 if r == 0
  (n - r + 1..n).inject(:*) / (1..r).inject(:*)
end

def A(k, n)
  (0..k - 1).inject(0){|s, i| s + ncr(k - 1, i) / f(i + n).to_r}
end

n = 6
(1..n).each{|i|
  p [i, (1..i).map{|j| A(j, i)}]
}

出力結果
[1, [(1/1)]]
[2, [(1/2), (2/3)]]
[3, [(1/6), (5/24), (31/120)]]
[4, [(1/24), (1/20), (43/720), (179/2520)]]
[5, [(1/120), (7/720), (19/1680), (529/40320), (787/51840)]]
[6, [(1/720), (1/630), (73/40320), (187/90720), (8501/3628800), (6631/2494800)]]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。