2

sympy について少し質問があります。私はライブラリをロードしました:

from sympy import *

プログラムのある時点で、関数を評価したいと思います。

x=Symbol('x', real=True)
sqrt(1-x).subs(x, 9).evalf()
>>> 2.82842712474619*I

Sympy は複雑な値に答えますが、基本的な python のようにエラーが必要です:

sqrt(-1)
>>> ValueError: math domain error

誰かがsympyを使ってそれを行う方法を知っていますか?

4

1 に答える 1

3

私は間違っているかもしれませんが、そのように叫ぶことはできないと思います。これは科学ライブラリであるため、虚数をサポートするために作成されているためですが、少し変更できます。

x=Symbol('x', real=True)
v = sqrt(1-x).subs(x, 9).evalf()

if not v.is_real:
    raise ValueError, "math domain error"

または、関数を作成できます。

def assert_real(v):
    if not v.is_real:
        raise ValueError, "math domain error"
    return v

あなたができるように:

x = Symbol('x', real=True)
v = assert_real(sqrt(1-x).subs(x, 9).evalf())
于 2013-06-13T14:58:21.403 に答える