当我运行这个程序时,最后我没有得到任何解决方案,但应该有一个解决方案(我相信)。知道我做错了什么吗?如果您从 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)
不过,我仍然希望它以原来的方式工作,因为我的方程式比这更复杂。
请您参考如下方法:
这只是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 处的第一条注释.
