我有一個方程我試圖解決。 SymPy live控制檯可以在他們的網站上獲得正確的結果。然而,當我試圖在本地計算機上重現相同的結果時,我得到了一個ConditionSet
,我無法解決方程式。本地vs SymPy live的不同結果 - 分裂問題?
完全相同的等式不能在本地求解。我不確定是否可能出現錯誤(但我正在導入__future__.division
),缺少LaTex庫或其他設置?
下面是SymPy命令住:
Python console for SymPy 1.0 (Python 2.7.12)
These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)
Warning: this shell runs with SymPy 1.0 and so examples pulled from other documentation may provide unexpected results.
Documentation can be found at http://docs.sympy.org/1.0.
>>> a = Eq(309.07*(1+x)**(-1/12) + 309.07*(1+x)**(-2/12)+309.07*(1+x)**(-3/12) + 309.07*(1+x)**(-4/12) + 309.07*(1+x)**(-5/12) + 309.07*(1+x)**(-6/12) + 309.07*(1+x)**(-7/12), 1500)
>>> solveset(a, x, domain=S.Reals)
結果打印乳膠:
{2.17102109654962}
在這裏,當地的python腳本:
from __future__ import division
from sympy import *
init_printing()
x, y, z, t = symbols('x y z t')
k, m, n = symbols('k m n', integer=True)
f, g, h = symbols('f g h', cls=Function)
a = Eq(309.07*(1+x)**(-1/12) + 309.07*(1+x)**(-2/12)+309.07*(1+x)**(-3/12) + 309.07*(1+x)**(-4/12) + 309.07*(1+x)**(-5/12) + 309.07*(1+x)**(-6/12) + 309.07*(1+x)**(-7/12), 1500)
b = solveset(a, x, S.Reals)
print b
結果打印在ASCII文本:
ConditionSet(x, Eq(309.07*(x + 1)**(-0.583333333333333) + 309.07*(x + 1)**(-0.5) + 309.07*(x + 1)**(-0.416666666666667) + 309.07*(x + 1)**(-0.333333333333333) + 309.07*(x + 1)**(-0.25) + 309.07*(x + 1)**(-0.166666666666667) + 309.07*(x + 1)**(-0.0833333333333333) - 1500, 0), (-oo, oo))
我使用Python 2.7
和SymPy 1.0
我將不勝感激任何幫助......
也許Sympy Live使用Sympy的開發版本?在任何情況下,使用'solve'而不是'solveset'給出答案。然而,當你在尋找一個數值解決方案時,使用'nsolve'是最好的選擇,因爲它會使(相同)結果快得多。 – Stelios