用朱莉娅评估非理性

时间:2016-09-02 01:54:34

标签: constants julia sympy evaluation

Julia有内置常量pi,类型为Irrational

julia> pi
π = 3.1415926535897...

julia> π
π = 3.1415926535897...

julia> typeof(pi)
Irrational{:π}

来自具有N()功能的SymPy,我想评估pi(或其他Irrational,例如egolden等等。)到n位数。

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

这可能吗?我假设pi基于其数学定义,而不仅仅是十三个小数位。

2 个答案:

答案 0 :(得分:16)

当然,您可以设置BigFloat精度并使用big(π)。注意精度是二进制的;它以位数计算。如果将精度设置为所需位数的至少log2(10) + 1倍,则应该是安全的。

示例:

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

在这里,我将精度设置为仅需要200位数的高度。

数字在GNU MPFR库中计算。

答案 1 :(得分:10)

Julia有SymPy package的界面:

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

请注意,SymPy使用大写PI将其对象与原生Julia中的小写pi区分开来。您还需要在计算机上安装本机SymPy才能在此处获得完整功能。

其他评论:

  • 请参阅here以获取有关Julia SymPy的更长篇教程,其中有很多很好的例子。