Zeilberger's Algorithm
MaximaではZeilberger's Algorithmが実装されているので、使ってみた。
load(zeilberger)$
/* Zeilberger 出力を自動でシフトして係数リストにする関数 */
shifted_zeilberger_coeffs(F_expr, k, n) := block(
[Z, m],
print("----------------------------------------"),
print("Applying Zeilberger to F =", F_expr),
Z : Zeilberger(F_expr, k, n)[1][2],
m : length(Z) - 1,
map(lambda([c], factor(subst(n = n-m, c))), Z)
)$
F(a) := a^k * binomial(n,k) * binomial(2*n,k)$
/* A005809 */
Z : shifted_zeilberger_coeffs(F(1), k, n)$
print("A005809 coefficients:", Z)$
/* A026000 */
Z : shifted_zeilberger_coeffs(F(2), k, n)$
print("A026000 coefficients:", Z)$
/* A387928 */
Z : shifted_zeilberger_coeffs(F(3), k, n)$
print("A387928 coefficients:", Z)$
出力結果
----------------------------------------
Applying Zeilberger to F = binomial(n, k) binomial(2 n, k)
A005809 coefficients: [3 (3 n - 2) (3 n - 1), - 2 n (2 n - 1)]
----------------------------------------
k
Applying Zeilberger to F = 2 binomial(n, k) binomial(2 n, k)
A026000 coefficients: [(n - 1) (2 n - 3) (10 n - 3),
3 2
220 n - 506 n + 334 n - 63, - n (2 n - 1) (10 n - 13)]
----------------------------------------
k
Applying Zeilberger to F = 3 binomial(n, k) binomial(2 n, k)
A387928 coefficients: [16 (n - 1) (2 n - 3) (11 n - 3),
3 2
649 n - 1475 n + 964 n - 180, - 2 n (2 n - 1) (11 n - 14)]