在python sympy中没有指数的解决方案

时间:2013-10-03 19:47:01

标签: python sympy

当我运行这个程序时,我最终得不到任何解决方案,但应该有一个解决方案(我相信)。知道我做错了什么吗?如果从e2方程中取走Q,它似乎可以正常工作。

#!/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)

我仍然希望它以原始方式工作,因为我的方程比这更复杂。

1 个答案:

答案 0 :(得分: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上的第一个注释。