如何将十进制数转换为符号表示?



有了sympy,我知道你可以这样做:

In [37]: sqrt(8) / sqrt(27)
Out[37]: 2*sqrt(6)/9
In [38]: pprint(sqrt(8) / sqrt(27))
2⋅√6
────
9  

有一个复数,我想用同样的"符号"来表示。方式:

In [39]: z = complex(1,2)

长度:

In [42]: Abs(z)
Out[42]: 1.73205080756888

现在我想把这个数字表示为:

In [46]: pprint(sqrt(3))
√3

不要使用complex类型,因为它只能使用浮点数表示复数。请使用SymPy的I:

In [1]: from sympy import I
In [2]: z = 1 + 2*I
In [3]: z
Out[3]: 1 + 2⋅ⅈ
In [4]: abs(z)
Out[4]: √5
同样值得注意的是,有时SymPy可以将浮点数转换回猜测的符号形式:
In [5]: e = abs(complex(1, 2))
In [6]: e
Out[6]: 2.23606797749979
In [7]: from sympy import nsimplify
In [8]: nsimplify(e)
Out[8]: √5