2012-10-18 50 views
2

我需要顯示圓周。爲了做到這一點,我想我可以calculata了很多xy兩個值的,所以我所做的:Sympy python圓周

import sympy as sy 
from sympy.abc import x,y 
f = x**2 + y**2 - 1 
a = x - 0.5 
sy.solve([f,a],[x,y]) 

,這就是我得到:

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "/usr/lib/python2.7/dist-packages/sympy/solvers/solvers.py", line 484, in 
solve 
    solution = _solve(f, *symbols, **flags) 
    File "/usr/lib/python2.7/dist-packages/sympy/solvers/solvers.py", line 749, in 
_solve 
    result = solve_poly_system(polys) 
    File "/usr/lib/python2.7/dist-packages/sympy/solvers/polysys.py", line 40, in 
solve_poly_system 
    return solve_biquadratic(f, g, opt) 
    File "/usr/lib/python2.7/dist-packages/sympy/solvers/polysys.py", line 48, in 
solve_biquadratic 
    G = groebner([f, g]) 
    File "/usr/lib/python2.7/dist-packages/sympy/polys/polytools.py", line 5308, i 
n groebner 
    raise DomainError("can't compute a Groebner basis over %s" % domain) 
DomainError: can't compute a Groebner basis over RR 

如何計算y的價值?

+0

您是如何安裝Sympy的?試圖通過PIP – tehmisvh

+0

@tehmisvh安裝時似乎有複雜性,請嘗試再次使用pip進行安裝。這個問題應該在週二發佈0.7.2的時候得到解決。 – asmeurer

回答

1

適合我;也許解決方案和升級一樣簡單?

>>> import sympy 
>>> sympy.__version__ 
'0.7.2' 
>>> import sympy as sy 
>>> from sympy.abc import x,y 
>>> f = x**2 + y**2 - 1 
>>> a = x - 0.5 
>>> sy.solve([f,a],[x,y]) 
[(0.500000000000000, -0.866025403784439), (0.500000000000000, 0.866025403784439)] 

[雖然如果我需要畫一個圓或圓弧我會用r cos(theta), r sin(theta)代替,以使其更容易在正確的順序獲得積分。]

+0

我有一箇舊版本,我會嘗試升級。 –

0

您也可以使用有理數以獲得確切的答案(並避免該錯誤)

In [22]: a = x - Rational(1,2) 

In [23]: sy.solve([f,a],[x,y]) 
Out[23]: 
⎡⎛  ___⎞ ⎛  ___⎞⎤ 
⎢⎜  -╲╱ 3 ⎟ ⎜  ╲╱ 3 ⎟⎥ 
⎢⎜1/2, ──────⎟, ⎜1/2, ─────⎟⎥ 
⎣⎝  2 ⎠ ⎝  2 ⎠⎦