Sympy 中函数域的格式化输出

Formatted output of the function domain in Sympy

我正在尝试以可读的方式打印函数的域。但是,对于某些函数,定义域非常复杂。例如,周期函数 tan(x) 或 tan(x + 10):

tan(x) 的期望结果:
x ≠ π / 2 + π * n 或至少 Interval.open(-π / 2, π / 2)

tan(x) 的实际结果:
Complement(Reals, Union(ImageSet(Lambda(_n, 2*_n*pi + pi/2), Integers), ImageSet(Lambda(_n, 2*_n*pi + 3*pi/2), Integers)))

代码:

from sympy import tan, S
from sympy.calculus.util import continuous_domain

x = S('x')
function = tan(x)
print(continuous_domain(function, x, S.Reals))

问题:
有没有办法为 Sympy 中的任何函数格式化间隔(在本例中为函数的域)的输出?

我不确定您的工作环境是什么,但是使用启用了 unicode 的控制台 pprint 将显示如下:

In [2]: pprint(continuous_domain(function, x, S.Reals))
    ⎛⎧        π │      ⎫   ⎧        3⋅π │      ⎫⎞
ℝ \ ⎜⎨2⋅n⋅π + ─ │ n ∊ ℤ⎬ ∪ ⎨2⋅n⋅π + ─── │ n ∊ ℤ⎬⎟
    ⎝⎩        2 │      ⎭   ⎩         2  │      ⎭⎠

这个输出显示的是定义域是除点 pi/2 + 2 n pi3 pi/2 + 2 n pi 之外的实数集。理想情况下,这将被简化为 pi/2 + n pi,但该简化尚未实施。

如果您使用的是 Jupyter 笔记本,那么 display 更好,或者您可以使用 init_printing() 设置默认显示模式。看这里:

https://docs.sympy.org/latest/tutorial/printing.html