我们知道Pell方程表示为
如果D不是完美的平方,可以通过D的连续分数展开来近似,例如让我们考虑这种方程
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?提前谢谢
答案 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
并不表示条款的真正平等;只是等于双精度算术的极限。