sympy - 使用“solve()”在分母中找到一个值

时间:2013-11-26 18:47:14

标签: python solver sympy

我一直在寻找一点,我相信我可能会问谷歌错误的问题。如果还有另一个问题也有这个问题,请告诉我。

我相对较新,但文档非常好,所以到目前为止我没有遇到任何问题。我试图从MATLAB转换为Python,我正在测试一些在MATLAB中工作的脚本。我使用的是Python 3.3。

我正试图解决一个相对简单的平等问题而且我失败了。当我运行下面的脚本时,我只收到一个空列表作为输出。

# define the symbols we wish to use
se = symbols('se')

# assign some constants
D = S(0.24)
sn = S(38e6)
Q = S(0.64)

Dprime = 1.0 - D

mc = 1 + (se/sn)

# this is the expression that we wish to make equal to Q
expr = (S(1)/(pi * (mc * Dprime - S(0.5))))

# this should print the value for se
print(solve(Eq(expr, Q),se))

这段代码完全正常工作,直到执行“解决”功能。

>>> Eq(expr, Q)
             1                 
──────────────────── = 0.64
π⋅(2.0e-8⋅se + 0.26)  

我查看了文档,我发现有几个标志可供我使用。我首先尝试了我认为可能相关的那些。然后我尝试了那些我认为不太相关的东西。然后我尝试了所有这些。

我还尝试了对变量输入的各种操作。我留下的其中一个是S(),我理解它是“symplify”函数。也许我过度做了这个,但我怀疑一个人不能过度使用这个功能。

问题似乎与分母中的变量有关。我已经尝试了很多关于sympy文档中包含的示例,所有这些示例都适用于我,因此我对安装本身非常有信心。

感谢您的时间,

Ĵ

2 个答案:

答案 0 :(得分:1)

当然,在寻找答案的过程中,我偶然发现了一些关于使用'scipy'代替'sympy'的问题。碰巧的是,只需放置from scipy import *即可解决问题。

答案 1 :(得分:1)

您想要的旗帜是rational=False。我认为这是SymPy中的一个错误,但可能你的系数2.0e-8太小了。