Skip to main content
 首页 » 编程设计

python之Sympy python 周长

2025年05月04日6leader

我需要显示一个圆周。为了做到这一点,我认为我可以为很多 x 计算 y 的两个值,所以我做了:

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 的值?

请您参考如下方法:

对我有用;也许解决方案就像升级一样简单?

>>> 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) 来代替,这样更容易获得正确的点顺序。]