2

円周を表示する必要があります。xそのために、 の 2 つの値の多くを計算できると思ったので、次の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よいですか?

4

2 に答える 2

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)代わりに使用して、ポイントを正しい順序で簡単に取得できるようにします。]

于 2012-10-18T16:57:46.920 に答える
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  ⎠⎦
于 2012-10-19T05:33:25.613 に答える