首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sympy python圆周

Sympy python圆周
EN

Stack Overflow用户
提问于 2012-10-19 00:34:39
回答 2查看 219关注 0票数 2

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

代码语言:javascript
复制
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])

这就是我得到的:

代码语言:javascript
复制
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的值?

EN

回答 2

Stack Overflow用户

发布于 2012-10-19 00:57:47

对我来说很有效;也许解决方案就像升级一样简单?

代码语言:javascript
复制
>>> 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),这样可以更容易地按正确的顺序获得点。

票数 1
EN

Stack Overflow用户

发布于 2012-10-19 13:33:26

您还可以使用有理数来获得准确的答案(并避免这种错误)

代码语言:javascript
复制
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  ⎠⎦
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12959432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档