У меня есть функция с именем f = 0.5/(z-3). Я хотел бы знать, что бы коэффициенты p и q были, если f было записано в следующем виде: q/(1-p * z), но, к сожалению, функция sympy match возвращает None. Я делаю что-то неправильно? или какой правильный способ сделать что-то подобное? Вот код:Соответствующие коэффициенты в Python SymPy Pattern Matching
z = symbols('z')
p, q = Wild('p'), Wild('q')
print (0.5/(z-3)).match(q/(1-p*z))
EDIT: Мой ожидается ответ: Q = -1/6, р = 1/3
Один из способов конечно
p, q = symbols('p q')
f = 0.5/(z-3)
print solve(f - q/(1-p*z), p, q,rational=True)
Но Я не знаю, как это сделать при сопоставлении шаблонов, или если он способен делать что-то подобное.
Заранее спасибо =)
@NPE Я отредактировал вопрос –
'q/(1-p * z)' равно '(q/p)/(1/p-z)' если 'p! = 0'. И '(0.5/(z-3)). Match ((q/p)/(1/p-z), old = True)' возвращает '{q_: -0.166666666666667, p_: 1/3}'. Однако я не знаю, как найти это преобразование алгоритмически. – unutbu
Использование 'solve' кажется хорошим методом для меня. – asmeurer