Оцените иррациональность с Джулией
Julia имеет встроенную константу pi
, с типом Irrational
.
julia> pi
π = 3.1415926535897...
julia> π
π = 3.1415926535897...
julia> typeof(pi)
Irrational{:π}
Начиная с SymPy, который имеет функцию N()
, я хотел бы оценить pi
(или другие Irrational
s, такие как e
, golden
и т.д.), до n цифр.
In [5]: N(pi, n=50)
Out[5]: 3.1415926535897932384626433832795028841971693993751
Возможно ли это? Я предполагаю, что pi
основан на его математическом определении, а не только на тринадцати десятичных знаках.
Ответы
Ответ 1
Конечно, вы можете установить точность BigFloat
и использовать big(π)
. Обратите внимание, что точность двоичная; он подсчитывается в битах. Вы должны быть в безопасности, если вы установите точность, по крайней мере, на log2(10) + 1
раз число цифр, которое вам нужно.
Пример:
julia> setprecision(BigFloat, 2000) do
@printf "%.200f" big(π)
end
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196
Здесь я установил точность немного выше, чем она должна быть всего на 200 цифр.
Цифры вычисляются в библиотеке GNU MPFR.
Ответ 2
У Julia есть интерфейс для пакета Sympy:
# Pkg.add("SymPy") ## initial installation of package
using SymPy
julia> N(PI, 50)
3.14159265358979323846264338327950288419716939937508
Обратите внимание, что SymPy использует верхний регистр PI
, чтобы отличить его от нижнего регистра PI
в родной Джулии. Вам также понадобится встроенный Sympy, установленный на вашем компьютере, чтобы получить полную функциональность здесь.
Другие комментарии:
- см. здесь для более подробного руководства по Julia SymPy с большим количеством хороших примеров.