Pythonでペル方程式を解くプログラムを書きました。 ペル方程式とはディオファントス方程式の一つで以下のような形をしているものです。 ペル方程式を変形すると、 となります。よって、Dの平方根の有理数近似をx/yとすると、(x, y)が解の候補となりそうです。 有理数近似には、連分数展開が使えそうです。 実際に、ペル方程式の解を(x, y)とすると、x/yは√Dのconvergentとなる[1]ことが証明できます。よってconvergentを列挙し、方程式を満たすかどうか調べれば不足なくペル方程式の解を求めることが出来ます。 上の計算手続きで方程式の解を求めることができますが、コンピュータを使って計算する場合は注意点があります。 浮動小数点演算を使って平方根の連分数展開を行うと誤差が大きくなってしまい、正しい結果が得られないということです。これを回避するために、整数演算のみで平方根の連分数