Python sympy solve()无法找到解决方案

Python sympy solve()无法找到解决方案,python,python-2.7,sympy,Python,Python 2.7,Sympy,我现在有一个相当基本的代码,应该是用来解下面所示的方程,但它并没有收敛到一个解。它只是挂在一个脉冲上 简单地打印公式就可以得到 1.42857142857143*y**(-2.0)*((0.166666666666667*y**2.0 + 0.833333333333333)**3.5- 1.0) == -0.5704*(-y**2.0 + 1.0)**(-0.5) 当插入wolfram或maple时,会产生正确的解决方案。~=0.696256 所以我想弄明白为什么辛菲不能解这个方程 方程式应

我现在有一个相当基本的代码,应该是用来解下面所示的方程,但它并没有收敛到一个解。它只是挂在一个脉冲上

简单地打印公式就可以得到

1.42857142857143*y**(-2.0)*((0.166666666666667*y**2.0 + 0.833333333333333)**3.5- 1.0) == -0.5704*(-y**2.0 + 1.0)**(-0.5)
当插入wolfram或maple时,会产生正确的解决方案。~=0.696256

所以我想弄明白为什么辛菲不能解这个方程

方程式应该是这样的

如果Symphy不能用来解这个方程,我可以用什么来代替

谢谢


菲尔

如果你只关心数值解,不要使用
solve
。它真的很难找到一个象征性的解决办法。但是多项式的符号解通常是相当复杂的,一般来说它们并不存在

如果只需要数值解,请使用
nsolve

In [60]: nsolve(eqn, 0)
Out[60]: mpc(real='0.69625557901731519', imag='-3.4211388289180104e-49')
(0是对解决方案的猜测)。那里的虚部小到可以忽略。您可以使用
N(解决方案,chop=True)
将其删除

如果您确实关心符号解决方案,另一条建议是避免使用浮点指数。使用有理或整数指数。为了以符号方式求多项式的根,必须首先将其转换为实际多项式,即具有整数系数的多项式。这意味着浮点系数必须转换为有理数。但这通常会导致大量的数据,从而导致非常大的程度(我怀疑这就是为什么这最终会挂在你的头上,考虑一下:

In [61]: gamma
Out[61]: 1.4

In [62]: Rational(gamma)
Out[62]:
3152519739159347
────────────────
2251799813685248

发生了什么?有错误吗?什么都没有发生。我想它在解决它时遇到了困难,所以我得到的只是一个脉冲“u”我不认为这个方程太复杂,所以我不知所措。可能是非整数次幂?顺便说一句,这里的另一个区别是
solve
试图找到所有的解,而
solve
只给出一个。
In [61]: gamma
Out[61]: 1.4

In [62]: Rational(gamma)
Out[62]:
3152519739159347
────────────────
2251799813685248