Я начинающий программист Python без опыта работы с sympy - просто для удовольствия. Я пытаюсь сгенерировать формулы для сумм степеней целых чисел, как описано в последнем видео Mathologer (Power Sums). Следующая программа генерирует следующий набор уравнений. Хотя это правильно, я хотел бы, чтобы полиномы в числителе были факторизованы, где это уместно, а отдельные члены фактически суммировались (т. Е. Общий знаменатель). Я пробовал много "упрощенок", но ничего не работает. Любые идеи?
Программа:
from sympy import S, Matrix, Symbol, simplify, pprint
import math
def bn(n, k):
sign = n%2+k%2 # used to negate odd (0 based) diagonals
n = n+1 # shift triangle up and left
bc = math.factorial(n)//math.factorial(k)//math.factorial(n-k)
if sign == 1: bc = -bc
return bc
if __name__ == "__main__":
N = 5
n = Symbol('n')
v = Matrix([n**i for i in range(1,N+1)])
M = [[bn(i,k) for k in range(0,i+1)]+(N-i-1)*[S(0)] for i in range(0,N)]
eqs = simplify(Matrix(M).inv()*v)
print(eqs.__repr__())
# pprint(eqs, use_unicode=True)
Вывод (примечание: пришлось заменить двойные * на ^):
Matrix([[ n],
[ n*(n + 1)/2],
[ n*(2*n^2 + 3*n + 1)/6],
[ n^2*(n^2 + 2*n + 1)/4],
[n^5/5 + n^4/2 + n^3/3 - n/30]])