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 pi
和 3 pi/2 + 2 n pi
之外的实数集。理想情况下,这将被简化为 pi/2 + n pi
,但该简化尚未实施。
如果您使用的是 Jupyter 笔记本,那么 display
更好,或者您可以使用 init_printing()
设置默认显示模式。看这里:
我正在尝试以可读的方式打印函数的域。但是,对于某些函数,定义域非常复杂。例如,周期函数 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 pi
和 3 pi/2 + 2 n pi
之外的实数集。理想情况下,这将被简化为 pi/2 + n pi
,但该简化尚未实施。
如果您使用的是 Jupyter 笔记本,那么 display
更好,或者您可以使用 init_printing()
设置默认显示模式。看这里: