Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python的分数模块中处理大数_Python_Python 3.x_Math_Fractions_Continued Fractions - Fatal编程技术网

在Python的分数模块中处理大数

在Python的分数模块中处理大数,python,python-3.x,math,fractions,continued-fractions,Python,Python 3.x,Math,Fractions,Continued Fractions,编辑:已解决,但由于解决方案在评论中,我无法接受我自己的解决方案,请参考评论,直到明天它仍然是开放的。再次向这个伟大的社区及其人民表示衷心的感谢 可选上下文:我正在计算Pell方程的解 在页面的按钮上是一个表,表中的值为D->x,y。 我的代码对除D=61之外的所有值都非常有效。我相信这可能与x和y的值非常大有关,也许分数模块不能处理这么大的数字,并且有溢出? 我观察到,无论我以分数或小数形式给出输入/起始值,都会改变我的解(但只适用于D=61)。 为什么我的代码在值为D=61时失败?我需要更

编辑:已解决,但由于解决方案在评论中,我无法接受我自己的解决方案,请参考评论,直到明天它仍然是开放的。再次向这个伟大的社区及其人民表示衷心的感谢

可选上下文:我正在计算Pell方程的解

在页面的按钮上是一个表,表中的值为D->x,y。 我的代码对除D=61之外的所有值都非常有效。我相信这可能与x和y的值非常大有关,也许分数模块不能处理这么大的数字,并且有溢出? 我观察到,无论我以分数或小数形式给出输入/起始值,都会改变我的解(但只适用于D=61)。 为什么我的代码在值为D=61时失败?我需要更改/使用什么才能使其正常工作?非常感谢您的时间和帮助

代码:

来自数学导入sqrt,楼层
从分数进口分数
def续_分数(D):
#为了确保把小数转换成分数没有问题,我把所有的东西都变成了分数(这不应该也不会影响输出)
#输入是D的值,输出是带有(x,y)的元组
D=分数(sqrt(D))
aS=[]
a0=D
r1=分数(D-楼层(D))
a=分数(a0-r1)
r=分数(-1)
计数=0

而分数(1/r1)
意味着将
r1
的倒数作为一个不精确的浮点数进行计算,然后找到该不精确数的有理近似值。您希望分数(1,r1)直接指定分数的分子和分母,而不会出现任何近似错误。

分数(1/r1)
意味着将
r1
的倒数计算为不精确的浮点数,然后找到该不精确数的有理近似值。您希望
分数(1,r1)
直接指定分数的分子和分母,而不会出现任何近似错误。

非常感谢GalAbra和jasonharper的回答。在明确知道这是一个感知问题(谢谢加拉布拉)后,我知道我需要更多的小数来表示sqrt(D)。我使用了Python中的十进制模块:

from decimal import *
getcontext().prec = 1000
D = Fraction(Decimal(D).sqrt())

有了这个和jasonharper建议的改变(再次感谢你),现在一切都好了。

非常感谢GalAbra和jasonharper的回应。在明确知道这是一个感知问题(谢谢加拉布拉)后,我知道我需要更多的小数来表示sqrt(D)。我使用了Python中的十进制模块:

from decimal import *
getcontext().prec = 1000
D = Fraction(Decimal(D).sqrt())

有了这个和jasonharper建议的更改(再次感谢您),现在就可以了。

如果您有任何问题,请与我联系。解决方法是感谢您的帮助。我还有两个问题:1。我的程序既没有给出解决方案“A”,也没有给出解决方案“B”(为什么?)。我已经有一种感觉,这可能是一个溢出错误(现在我很确定),但我仍然不知道如何修复它/如何在Python中修复它。Python中的int有无限大小,但是分数模块呢?我能做些什么来修复分数模块的溢出?如果您有任何问题,请与我联系。解决方法是感谢您的帮助。我还有两个问题:1。我的程序既没有给出解决方案“A”,也没有给出解决方案“B”(为什么?)。我已经有一种感觉,这可能是一个溢出错误(现在我很确定),但我仍然不知道如何修复它/如何在Python中修复它。Python中的int有无限大小,但是分数模块呢?我能做些什么来修复分数模块的溢出?非常感谢您的帮助,但我更改了它,它仍然会产生相同(错误)的结果。非常感谢您的帮助,但我更改了它,它仍然会产生相同(错误)的结果。