Sử dụng các giải pháp được đề xuất từ các câu trả lời trước đây mà tôi thấy rằng sympy thật đáng buồn là không tính cách nhau() của lý do ngay lập tức. Nó bằng cách nào đó bị lẫn lộn. Hơn nữa, danh sách python của các hệ số được trả về bởi * Poly.all_coeffs() * có một ngữ nghĩa khác với một danh sách Mathmatica. Do đó, mệnh đề try-except trong định nghĩa của a().
Các mã sau đây không làm việc và đầu ra, đối với một số giá trị thử nghiệm, đồng ý với câu trả lời được đưa ra bởi công thức Mathematica trong Mathematica 7:
from __future__ import division
from sympy import expand, Poly, binomial, apart
from sympy.abc import x
A = Poly(apart(expand(((1-x**20)**5))/expand((((1-x)**2)*(1-x**2)*(1-x**5)*(1-x**10))))).all_coeffs()
def a(n):
try:
return A[n]
except IndexError:
return 0
def f(n):
v = n // 5
q = v // 20
r = v % 20
return sum(a[r+20*j]* binomial(q+5-j, 5) for j in range(5))
print map(f, [100, 50, 1000, 150])