python - Sympy函数评估

标签 python sympy evaluate

我有一个关于 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 来做到这一点吗?

最佳答案

我可能是错的,但我不认为你可以让它那样大喊大叫,因为那是一个科学库,所以它是为了支持虚数而设计的,但你可以稍微改变一下:

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())

关于python - Sympy函数评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090073/

相关文章:

c - 使用 C 语言计算中缀表达式的最简单方法是什么?

python - psycopg2、Redshift 和 unittest 的并发问题

python - 如何将文本小部件内容设置为 Python/Tkinter 中的变量值?

python - 使用 Python 查找矩阵的特征多项式的零点

python - 在 Sympy 中,如何定义像 f(x) 这样的通用函数,以便 sympy.diff(f(x), x) 返回 f' 而不是 0。

javascript - 在没有严格比较的情况下,哪些值被评估为 true 和 false?

java - 评估代码,区分负数和负数?

python - 在 python 中从响应中解压 msgpack

Python:变量的使用及其区别 ("a, b = 0, 1"VS "a = 0", "b = 1")

python - Sympy多项式求解器可以根据多项式的重数列出多项式的零点吗?