2016-09-02 19 views
15

Julia ma wbudowaną stałą pi, z typem Irrational.Ocena Irracjonująca z Julią

julia> pi 
π = 3.1415926535897... 

julia> π 
π = 3.1415926535897... 

julia> typeof(pi) 
Irrational{:π} 

Pochodzący z SymPy, który ma funkcję N() chciałbym ocenić pi (lub innych Irrational S, taki jak e, golden, itd.) Do N cyfr.

In [5]: N(pi, n=50) 
Out[5]: 3.1415926535897932384626433832795028841971693993751 

Czy to możliwe? Zakładam, że pi opiera się na matematycznej definicji, a nie tylko na trzynastu miejsc po przecinku.

Odpowiedz

17

Oczywiście, można ustawić dokładność BigFloat i używać big(π). Zwróć uwagę, że dokładność jest binarna; jest liczony w bitach. Powinieneś być bezpieczny, jeśli ustawisz precyzję na co najmniej log2(10) + 1 razy większą liczbę cyfr.

Przykład:

julia> setprecision(BigFloat, 2000) do 
      @printf "%.200f" big(π) 
     end 
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196 

Tutaj mam ustawić precyzję nieco wyższe niż to musi być za jedyne 200 cyfr.

Cyfry są obliczane w bibliotece GNU MPFR.

+3

Działa idealnie. Wydaje mi się, że mogę używać 'Int (ceil ((log2 (10)))) również dla doskonałej precyzji! (Zastępuje potrzebę "+ 1" i dodatkowych obliczeń.) – 2Cubed

11

Julia posiada interfejs dla SymPy package:

# Pkg.add("SymPy") ## initial installation of package 
using SymPy 
julia> N(PI, 50) 
3.14159265358979323846264338327950288419716939937508 

Zauważ, że SymPy używa wielkich liter PI odróżnić to obiekt z małymi literami pi w rodzimej Julia. Będziesz także potrzebował natywnej wersji Sympy zainstalowanej na komputerze, aby uzyskać pełną funkcjonalność.

Inne uwagi:

  • zobaczyć here przez dłuższy tutorial Julia SymPy z wieloma dobrymi przykładami.