SymPy - 数字


SymPy 包中的核心模块包含表示Atomics序数的 Number 类。该类有两个子类:Float 类和 Rational 类。Rational 类由 Integer 类进一步扩展。

Float 类表示任意精度的浮点数。

>>> from sympy import Float 
>>> Float(6.32)

上述代码片段的输出如下 -

6.32

SymPy 可以将整数或字符串转换为浮点数。

>>> Float(10)

10.0

Float('1.33E5')# scientific notation

133000.0

转换为浮点数时,还可以指定精度位数,如下所示 -

>>> Float(1.33333,2)

上述代码片段的输出如下 -

1.3

数字 (p/q) 的表示被表示为 Rational 类的对象,其中 q 是非零数字。

>>> Rational(3/4)

上述代码片段的输出如下 -

$\frac{3}{4}$

如果将浮点数传递给 Rational() 构造函数,它将返回其二进制表示形式的基础值

>>> Rational(0.2)

上述代码片段的输出如下 -

$\frac{3602879701896397}{18014398509481984}$

为了更简单的表示,请指定分母限制。

>>> Rational(0.2).limit_denominator(100)

上述代码片段的输出如下 -

$\frac{1}{5}$

当将字符串传递给 Rational() 构造函数时,将返回任意精度的有理数。

>>> Rational("3.65")

上述代码片段的输出如下 -

$\frac{73}{20}$

如果传递两个数字参数,也可以获得 Rational 对象。分子和分母部分可作为属性使用。

>>> a=Rational(3,5) 
>>> print (a) 
>>> print ("numerator:{}, denominator:{}".format(a.p, a.q))

上述代码片段的输出如下 -

3/5

分子:3,分母:5

>>> a

上述代码片段的输出如下 -

$\frac{3}{5}$

SymPy 中的整数类表示任意大小的整数。构造函数可以接受浮点数或有理数,但小数部分被丢弃

>>> Integer(10)

上述代码片段的输出如下 -

10

>>> Integer(3.4)

上述代码片段的输出如下 -

3

>>> Integer(2/7)

上述代码片段的输出如下 -

0

SymPy 有一个RealNumber类,充当 Float 的别名。SymPy 还将 Zero 和 One 定义为可分别通过 S.Zero 和 S.One 访问的单例类,如下所示 -

>>> S.Zero

输出如下 -

0

>>> S.One

输出如下 -

1

其他预定义的 Singleton 数字对象有 Half、NaN、Infinity 和 ImaginaryUnit

>>> from sympy import S 
>>> print (S.Half)

输出如下 -

½

>>> print (S.NaN)

输出如下 -

Infinity 可用作 oo 符号对象或 S.Infinity

>>> from sympy import oo 
>>> oo

上述代码片段的输出如下 -

$\infty$

>>> S.Infinity

上述代码片段的输出如下 -

$\infty$

ImaginaryUnit 数字可以作为 I 符号导入或作为 S.ImaginaryUnit 访问,表示 -1 的平方根

>>> from sympy import I 
>>> I

当您执行上面的代码片段时,您会得到以下输出 -

>>> S.ImaginaryUnit

上述代码片段的输出如下 -

>>> from sympy import sqrt 
>>> i=sqrt(-1) 
>>> i*i

当您执行上面的代码片段时,您会得到以下输出 -

-1