Skip to main content
 首页 » 编程设计

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

2025年05月04日6小虾米

当我运行这个程序时,最后我没有得到任何解决方案,但应该有一个解决方案(我相信)。知道我做错了什么吗?如果您从 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 处的第一条注释.