【问题标题】:No solutions with exponents in python sympypython sympy中没有指数的解决方案
【发布时间】:2013-10-03 19:47:01
【问题描述】:

当我运行这个程序时,我最终没有得到解决方案,但应该有一个解决方案(我相信)。知道我做错了什么吗?如果你从 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)

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

【问题讨论】:

  • 我希望答案是:K=(q/2)^(a*a/(1-a)) 当 a=1 时没有定义。
  • 随时在 SymPy 问题跟踪器中打开有关此问题的问题。如果solve 没有找到解决方案并且有解决方案,则认为这是一个错误。

标签: python sympy


【解决方案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 的第一个注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多