Uma fração como 5x-4/(x-2)(x+1) pode ser expressa como a soma de 2 frações parciais da forma A/(x-2), B/(x+1), em que A e B são inteiros diferentes de zero. Quando somadas, as frações parciais são equivalentes à original.
Dada uma fração de entrada como uma string (por exemplo, 5x-4/(x-2)(x+1)), escreva uma função que retorne uma lista de frações parciais em formato de string, de modo que A e B sejam substituídos pelos inteiros diferentes de zero apropriados para criar corretamente a fração parcial correspondente.
partial_fractions("5x-4/(x-2)(x+1)") -> ["2/(x-2)", "3/(x+1)"]
# 5x-4/(x-2)(x+1) = A/(x-2) + B/(x+1)
# 5x-4 = A(x+1) + B(x-2)
# Multiply through by denominator to remove fractions.
# Use substitution into x to set to zero one term at a time to find the
# constants A & B:
# Set x = 2, then B(x-2)=0 so A = 5(2)-4 / 3 = 2
# Set x = -1, then A(x+1)=0 so B = 5(-1)-4 / -3 = 3O numerador de entrada será sempre um único termo. Ele pode ser um inteiro diferente de zero ou uma expressão linear em x: ax+b, ax-b ou b-ax, em que a e b são inteiros diferentes de zero, a é positivo na forma b-ax e b é positivo na forma ax-b. Também pode ser um termo em x, como ax, em que a é um inteiro diferente de zero.
O denominador de entrada terá no mínimo 2 e no máximo 3 termos. Cada termo está entre parênteses, e cada termo é uma expressão linear em x conforme definido no parágrafo anterior. Não haverá termos repetidos no denominador, portanto você sempre poderá usar o método de substituição com segurança (consulte o exemplo acima).
As frações parciais devem ser retornadas na ordem em que seus denominadores aparecem no denominador da fração de entrada. Se uma fração parcial for negativa, ela deverá começar com o caractere - (por exemplo, o caso de teste 1).
Não use espaços dentro de uma expressão de fração parcial. A fração de entrada também não terá espaços; o denominador é indicado por /.
Se você não tiver certeza sobre a matemática, os Recursos deverão ajudar.