我正在寻找一个自动化的方式把一个十进制值到在PARI / GP计算器(GP)的级分。例如,我想转成0.759765625512分之389。我知道我可以手动在“10分之759765625^ 9”打字做到这一点,但我想更简单的方法,比如“合理化(0.759765625);”将工作在最大值。

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

有帮助吗?

解决方案

在彩2.5,则可以直接使用bestappr(x)中,而无需指定额外 数的位数的说法。它会使用所有可用的内部数字:

? bestappr(Pi)
%1 = 17004845848539028973023/5412810546621363616752

其他提示

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

这仍然具有的小数位数必须手动指定的缺点,但是这可以被克服:所述第二参数来bestappr()可以制成一个非常大的功率的10,比最长的小数较大,你将永远需要 “合理化”。

注意:确保主叫bestappr,使用\ p命令之前设置精度足够高

做的两个伟大的方式:

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top