Нет решений с показателями в python sympy

Когда я запускаю эту программу, в конце я не получаю решения, но оно должно быть (я верю). Любая идея, что я делаю неправильно? Если вы уберете Q из уравнения e2, оно, кажется, работает правильно.

#!/usr/bin/python
from sympy import *

a,b,w,r = symbols('a b w r',real=True,positive=True)
L,K,Q = symbols('L K Q',real=True,positive=True)

e1=K
e2=(K*Q/2)**(a)

print solve(e1-e2,K)

Это работает, если мы делаем следующее:

  • Установите Q=1 или,
  • Замените e2 на e2=(K*a)(Q/2)**(a)

Я все же хотел бы, чтобы это работало по-старому, поскольку мои уравнения более сложны, чем это.


person user1763510    schedule 03.10.2013    source источник
comment
Я ожидаю, что ответ будет: K=(q/2)^(a*a/(1-a)) Который не определен, когда a=1.   -  person user1763510    schedule 03.10.2013
comment
code.google.com/p/sympy/issues/detail?id= 3720 может быть связано?   -  person Greg Whittier    schedule 04.10.2013
comment
Не стесняйтесь открывать проблему в системе отслеживания проблем SymPy по этому поводу. Если solve не находит решения, а оно есть, это считается ошибкой.   -  person asmeurer    schedule 05.10.2013


Ответы (1)


Это просто недостаток solve. solve основан в основном на эвристике, поэтому иногда он не может понять, как решить уравнение, если оно задано в определенной форме. Обходной путь здесь состоит в том, чтобы просто вызвать expand_power_base для выражения, поскольку SymPy может решить K - K**a*(Q/2)**a:

In [8]: print(solve(expand_power_base(e1-e2),K))
[(2/Q)**(a/(a - 1))]

Также стоит отметить, что результат [] из solve никоим образом не означает, что решений нет, а только то, что solve не смог их найти. См. первое примечание по адресу http://docs.sympy.org/latest/tutorial/solvers. HTML.

person asmeurer    schedule 04.10.2013