代码之家  ›  专栏  ›  技术社区  ›  Rick Regan

有没有办法合理化Pari/GP中的小数点?

  •  1
  • Rick Regan  · 技术社区  · 17 年前

    我正在寻找一种在PARI/GP计算器(GP)中将十进制值转换为分数的自动方法。例如,我想将0.759765625转换为389/512。我知道我可以通过键入“759765625/10^9”手动执行此操作,但我希望使用更简单的方法,如“合理化(0.759765625);”将在Maxima工作。

    如果它不能直接做到这一点,也许有一个函数可以计算小数位数?然后我可以将10提升到该函数的结果。(函数必须计算0的前导小数位数才有用。)

    3 回复  |  直到 13 年前
        1
  •  3
  •   Rick Regan    17 年前

    使用bestappr()函数;对于给定的示例,使用bestappr(0.759765625,10^9)。 (回答由PARI/GP邮件列表提供。)

    警告:在使用\p命令调用bestappr之前,请确保将精度设置得足够高。

        2
  •  3
  •   K.B.    13 年前

    参数的位数。它将使用所有内部可用的数字:

    ? bestappr(Pi)
    %1 = 17004845848539028973023/5412810546621363616752
    
        3
  •  0
  •   Thomas Baruchel    10 年前

    a) 使用 lindep

    x=Pi;digits=7;l=lindep([x,1],digits);-l[2]/l[1]
    

    b) 使用连分数,每当遇到较大的偏商时停止(下面,我将限制固定为1000):

    x=Pi;maxquot=1000;p0=0;p1=1;q0=1;q1=0;a=floor(x);while(a<maxquot,p2=a*p1+p0;q2=a*q1+q0;p0=p1;p1=p2;q0=q1;q1=q2;x=1/frac(x);a=floor(x));p1/q1
    
    推荐文章