「nを正の整数(の定数)とする。次の不定方程式
x_1 + 2 * x_2 + … + n * x_n = n …(1)
を満たす0以上の整数 x_1, x_2, …, x_n に対して
(このとき i = 1, 2, …, n に対して 0≦x_i≦[n/i] が成り立つ。)
f(x_1,x_2,…,x_n) = (x_1+x_2+…+x_n)! / (x_1!*x_2!*…*x_n!) …(2)
が最大値をとるときの x_1, x_2, …, x_n を n を使って表せ。」
という問題を 整数の分割に関する問題を一般的に解くために考えたのですが、
途中からの計算方法がわからないのでどなたか計算方法がわかる方がいましたら教えてください。
自分が(ある人の助けを借りて)考えた方針は以下の通りです。
f を微分可能な関数にするため、Γ関数を使って連続化する。Γ(x+1) = x! から(2)式は
f(x_1,x_2,…,x_n) = Γ(1+x_1+x_2+…+x_n) / (Γ(1+x_1)*Γ(1+x_2)*…*Γ(1+x_n)) …(2.1)
と変形できる。ここで、ラグランジュの未定乗数法 (参照サイト
http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/lagrange.htm)を使うと、冒頭の問題は
(つづき)
「制約条件 x_1 + 2*x_2 + … + n*x_n - n = 0 , x_i ≧ 0 (i = 1, 2, …, n) のもとで
(2.1)式が極値をもつときの x_1, x_2, …, x_n を求めるには、
X = [x_1, x_2, …, x_n]^t(Xはn項列ベクトル)とおいて
F(X,λ) = f(X) - λ*(x_1 + 2*x_2 + … + n*x_n - n) に関する極値条件
∂F/∂x_i = (∂f/∂x_i)- i*λ = 0 (i = 1, 2, …, n) …(3)
∂F/∂λ = - (x_1 + 2*x_2 +...+ n*x_n - n) = 0 …(4)
を連立させて解けばいい。ここで ∂f/∂x_i (i = 1, 2, …, n) を計算すると
∂f/∂x_i = { ( ((∂/∂x_i)Γ(1+x_1+x_2+…+x_n)) / Γ(1+x_1+x_2+…+x_n) ) -
( ((d/dx_i)Γ(1+x_i)) / Γ(1+x_i) ) } * f
= {(Γ'(1+x_1+x_2+…+x_n) / Γ(1+x_1+x_2+…+x_n)) - (Γ'(1+x_i) / Γ(1+x_i))}*f …(5)
となる。」
∂f/∂x_i = i*λ に(5)式を代入した式を解くにあたっては
http://mathworld.wolfram.com/GammaFunction.html 内の(14)〜(18)式を使えばいいのかなと
思ったのですが、ここからの計算方法がわかりません。
長文で式など読みにくい点もあると思いますがどなたかよろしくお願いします。