SymPy - liczby
Podstawowy moduł pakietu SymPy zawiera klasę Number, która reprezentuje liczby atomowe. Ta klasa ma dwie podklasy: Float i Rational. Klasa wymierna jest dodatkowo rozszerzona o klasę Integer.
Klasa Float reprezentuje zmiennoprzecinkową liczbę o dowolnej precyzji.
>>> from sympy import Float
>>> Float(6.32)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
6.32
SymPy może konwertować liczbę całkowitą lub ciąg znaków na zmiennoprzecinkowe.
>>> Float(10)
10.0
Float('1.33E5')# scientific notation
133000.0
Podczas konwersji na zmiennoprzecinkową można również określić liczbę cyfr dla dokładności, jak podano poniżej -
>>> Float(1.33333,2)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
1.3
Reprezentacja liczby (p / q) jest reprezentowana jako obiekt klasy Rational, gdzie q jest liczbą niezerową.
>>> Rational(3/4)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
$\frac{3}{4}$
Jeśli liczba zmiennoprzecinkowa zostanie przekazana do konstruktora Rational (), zwraca podstawową wartość swojej reprezentacji binarnej
>>> Rational(0.2)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
$\frac{3602879701896397}{18014398509481984}$
Aby uzyskać prostszą reprezentację, określ ograniczenie mianownika.
>>> Rational(0.2).limit_denominator(100)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
$\frac{1}{5}$
Kiedy łańcuch jest przekazywany do konstruktora Rational (), zwracana jest wymierna liczba o dowolnej precyzji.
>>> Rational("3.65")
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
$\frac{73}{20}$
Obiekt wymierny można również uzyskać, jeśli zostaną przekazane dwa argumenty liczbowe. Części licznika i mianownika są dostępne jako właściwości.
>>> a=Rational(3,5)
>>> print (a)
>>> print ("numerator:{}, denominator:{}".format(a.p, a.q))
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
3/5
numerator:3, denominator:5
>>> a
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
$\frac{3}{5}$
Klasa Integer w SymPy reprezentuje liczbę całkowitą o dowolnej wielkości. Konstruktor może akceptować liczbę zmiennoprzecinkową lub wymierną, ale część ułamkowa jest odrzucana
>>> Integer(10)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
10
>>> Integer(3.4)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
3
>>> Integer(2/7)
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
0
SymPy ma RealNumberklasa, która działa jako alias dla Float. SymPy definiuje również Zero i One jako klasy pojedyncze dostępne odpowiednio z S.Zero i S.One, jak pokazano poniżej -
>>> S.Zero
Dane wyjściowe są następujące -
0
>>> S.One
Dane wyjściowe są następujące -
1
Inne predefiniowane obiekty liczb singletonów to Half, NaN, Infinity i ImaginaryUnit
>>> from sympy import S
>>> print (S.Half)
Dane wyjściowe są następujące -
½
>>> print (S.NaN)
Dane wyjściowe są następujące -
nan
Infinity jest dostępne jako obiekt symbolu oo lub S.Infinity
>>> from sympy import oo
>>> oo
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
$\infty$
>>> S.Infinity
Dane wyjściowe dla powyższego fragmentu kodu są następujące -
$\infty$
Liczba ImaginaryUnit może być importowana jako symbol I lub dostępna jako S.ImaginaryUnit i reprezentuje pierwiastek kwadratowy z -1
>>> from sympy import I
>>> I
Po wykonaniu powyższego fragmentu kodu otrzymasz następujące dane wyjściowe -
i
>>> S.ImaginaryUnit
Dane wyjściowe powyższego fragmentu kodu są następujące -
i
>>> from sympy import sqrt
>>> i=sqrt(-1)
>>> i*i
Po wykonaniu powyższego fragmentu kodu otrzymasz następujące dane wyjściowe -
-1