与 Julia 一起评估非理性

Evaluate Irrational with Julia

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 是基于它的数学定义,而不仅仅是小数点后十三位。

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

示例:

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

这里我设置的精度比仅 200 位所需的精度高一点。

数字是在 GNU MPFR 库中计算的。

Julia 有一个接口用于 SymPy package:

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

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

其他评论:

  • 有关 Julia SymPy 的更长教程以及大量优秀示例,请参阅 here