具有连续分数的Pell方程的解

时间:2017-04-03 06:42:40

标签: matlab continued-fractions

我们知道Pell方程表示为

enter image description here

如果D不是完美的平方,可以通过D的连续分数展开来近似,例如让我们考虑这种方程

enter image description here

61的平方根可以通过以下matlab代码来近似

>> b=sqrt(61);
>> format rat
>> b

b =

    1523/195  

但我有疑问:如何在两个单独的变量中分配结果?即

x=1523 
y=195

来自这个网站 https://www.quora.com/What-is-the-fast-way-to-solve-the-fundamental-solution-of-Pell-equation

我知道解决方案基于分子和计数器,如何在matlab代码中将分数部分分配给x和y?提前谢谢

1 个答案:

答案 0 :(得分:2)

虽然根据定义,无理数不能精确地表示为整数比,但它可以通过有限精度算术中的这种比率近似表示。这可以通过rat函数完成,以达到不同程度的近似值:

>> [n,d] = rat(sqrt(61),1E-4);  (n/d) - sqrt(61)
ans =
   9.5152e-05
>> [n,d] = rat(sqrt(61),1E-8);  (n/d) - sqrt(61)
ans =
  -4.4218e-09
>> [n,d] = rat(sqrt(61),1E-16);  (n/d) - sqrt(61)
ans =
     0

注意到最终0并不表示条款的真正平等;只是等于双精度算术的极限。

相关问题