当我运行这个程序时,最后我没有得到任何解决方案,但应该有一个解决方案(我相信)。知道我做错了什么吗?如果您从 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 处的第一条注释.
关于python - 在 python sympy 中没有指数的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19167958/