Pell方程解法+连分数自己整理

1、首先学习一下连分数。

      连分数:维基百科。

     连分数表示的算法会学习一下。

    

 

考虑实数 r。设 i 是 r 的整数部分,而 f 是它的小数部分。则 r 的连分数表示是 [i; …],这里的“…”是 1/f 的连分数表示。习惯上用分号取代第一个逗号。

要计算实数 r 的连分数表示,写下 r 的整数部分(技术上 floor)。从 r 减去这个整数部分。如果差为 0 则停止;否则找到这个差的倒数并重复。这个过程将终止,当且仅当 r 是有理数。

找出 3.245 的连分数
3\,3.245 - 3\,= 0.245\,1 / 0.245\,= 4.082\,
4\,4.082 - 4\,= 0.082\,1 / 0.082\,= 12.250\,
12\,12.250 - 12\,= 0.250\,1 / 0.250\,= 4.000\,
4\,4.000 - 4\,= 0.000\,停止 
3.245 的连分数是 [3; 4, 12, 4]
3.245 = 3 + \cfrac{1}{4 + \cfrac{1}{12 + \cfrac{1}{4}}}

数 3.245 还可以表示为连分数展开 [3; 4, 12, 3, 1];参见下面的有限连分数。

这个算法适合于实数,但如果用浮点数实现的话,可能导致数值灾难。作为替代,任何浮点数是一个精确的有理数(在现代计算机上分母通常是 2 的幂,在电子计算器上通常是 10 的幂),所以欧几里得GCD算法的变体可以用来给出精确的结果。


2.PELL方程的解法。

 

若一个丢番图方程具有以下的形式:

x^2 - ny^2= 1

n为正整数,则称此方程为佩尔方程(英文:Pell's equation 德文:Pellsche Gleichung)

n是完全平方数,则这个方程式只有解(\pm 1, 0)(实际上对任意的n(\pm 1, 0)都是解)。对于其余情况,拉格朗日证明了佩尔方程总有解。而这些解可由\sqrt{n}连分数求出。


\tfrac{p_i}{q_i} 是\sqrt{n}的连分数表示:[a_{0}; a_{1}, a_{2}, a_{3}, \,\ldots ]的渐近分数列,由连分数理论知存在 i 使得(pi,qi) 为佩尔方程的解。取其中最小的 i,将对应的 (pi,qi) 称为佩尔方程的基本解,或最小解,记作(x1,y1) ,则所有的解(xi,yi) 可表示成如下形式:

x_i + y_i\sqrt n = (x_1 + y_1\sqrt n)^i.

或者由以下递推公式得到:

可怜\displaystyle x_{i+1} = x_1 x_i + n y_1 y_i,可怜
\displaystyle y_{i+1} = x_1 y_i + y_1 x_i.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值