✨ feat(euler_45):添加欧拉项目第45题解决方案
📝 docs(euler_45):添加详细数学推导和佩尔方程说明文档
This commit is contained in:
86
solutions/0045.TrianPentaHexa/euler_45.py
Normal file
86
solutions/0045.TrianPentaHexa/euler_45.py
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
"""
|
||||||
|
Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
|
||||||
|
Triangle: T_n = n(n+1)/2
|
||||||
|
Pentagonal: P_n = n(3n-1)/2
|
||||||
|
Hexagonal: H_n = n(2n-1)
|
||||||
|
|
||||||
|
It can be verified that T_285 = P_165 = H_143 = 40755.
|
||||||
|
|
||||||
|
Find the next triangle number that is also pentagonal and hexagonal.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
def timer(func):
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
start_time = time.time()
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
end_time = time.time()
|
||||||
|
print(f"{func.__name__} taken: {end_time - start_time:.6f} seconds")
|
||||||
|
return result
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
def is_pentagonal(x):
|
||||||
|
"""检查一个数是否为五边形数"""
|
||||||
|
# 解方程 n(3n-1)/2 = x => 3n² - n - 2x = 0
|
||||||
|
# 判别式 Δ = 1 + 24x 必须是完全平方数
|
||||||
|
delta = 1 + 24 * x
|
||||||
|
sqrt_delta = int(delta**0.5)
|
||||||
|
if sqrt_delta * sqrt_delta != delta:
|
||||||
|
return False
|
||||||
|
# 并且 (1 + sqrt(Δ)) ≡ 0 mod 6
|
||||||
|
return (1 + sqrt_delta) % 6 == 0
|
||||||
|
|
||||||
|
|
||||||
|
def is_hexagonal(x):
|
||||||
|
"""检查一个数是否为六边形数"""
|
||||||
|
# 解方程 n(2n-1) = x => 2n² - n - x = 0
|
||||||
|
# 判别式 Δ = 1 + 8x 必须是完全平方数
|
||||||
|
delta = 1 + 8 * x
|
||||||
|
sqrt_delta = int(delta**0.5)
|
||||||
|
if sqrt_delta * sqrt_delta != delta:
|
||||||
|
return False
|
||||||
|
# 并且 (1 + sqrt(Δ)) ≡ 0 mod 4
|
||||||
|
return (1 + sqrt_delta) % 4 == 0
|
||||||
|
|
||||||
|
|
||||||
|
@timer
|
||||||
|
def main() -> None:
|
||||||
|
n = 286
|
||||||
|
while True:
|
||||||
|
triangle = n * (n + 1) // 2
|
||||||
|
|
||||||
|
# 直接使用已有的验证函数,避免重复计算
|
||||||
|
if is_pentagonal(triangle) and is_hexagonal(triangle):
|
||||||
|
# 找到后计算对应的索引
|
||||||
|
pent_index = (1 + int((1 + 24 * triangle) ** 0.5)) // 6
|
||||||
|
hex_index = (1 + int((1 + 8 * triangle) ** 0.5)) // 4
|
||||||
|
print(f"Answer: T({n})=P({pent_index})=H({hex_index})={triangle}")
|
||||||
|
break
|
||||||
|
|
||||||
|
n += 1
|
||||||
|
|
||||||
|
|
||||||
|
@timer
|
||||||
|
def main_quick_math(nth: int = 2) -> None:
|
||||||
|
u = 5
|
||||||
|
v = 3
|
||||||
|
sn = 0
|
||||||
|
while True:
|
||||||
|
u, v = (2 * u + 3 * v), (u + 2 * v)
|
||||||
|
if u % 6 == 5 and v % 4 == 3:
|
||||||
|
k = (u + 1) // 6
|
||||||
|
j = (v + 1) // 4
|
||||||
|
n = 2 * j - 1
|
||||||
|
sn += 1
|
||||||
|
if sn == nth:
|
||||||
|
print(f"Answer: T({n})=P({k})=H({j})={n * (n + 1) // 2}")
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
main_quick_math()
|
||||||
501
solutions/0045.TrianPentaHexa/readme.md
Normal file
501
solutions/0045.TrianPentaHexa/readme.md
Normal file
@@ -0,0 +1,501 @@
|
|||||||
|
三角形数、五边形数和六边形数之间有一个重要关系:**每一个六边形数都是三角形数**。具体来说,六边形数 \(H_n = n(2n-1)\) 等于三角形数 \(T_{2n-1} = (2n-1)(2n)/2 = n(2n-1)\)。因此,问题转化为寻找**同时是五边形数和六边形数**的数(这样的数自动是三角形数)。
|
||||||
|
|
||||||
|
已知 \(T_{285} = P_{165} = H_{143} = 40755\),需要找到下一个这样的数。利用五边形数和六边形数的公式,设 \(P_k = H_j\),得到方程:
|
||||||
|
\[
|
||||||
|
k(3k-1)/2 = j(2j-1)
|
||||||
|
\]
|
||||||
|
两边乘以2并整理得:
|
||||||
|
\[
|
||||||
|
3k^2 - k = 4j^2 - 2j
|
||||||
|
\]
|
||||||
|
通过配方,引入变量 \(u = 6k - 1\) 和 \(v = 4j - 1\),可将其转化为佩尔方程:
|
||||||
|
\[
|
||||||
|
u^2 - 3v^2 = -2
|
||||||
|
\]
|
||||||
|
其中 \(u \equiv 5 \pmod{6}\),\(v \equiv 3 \pmod{4}\) 以保证 \(k\) 和 \(j\) 为整数。
|
||||||
|
|
||||||
|
该方程的解可通过迭代生成:若 \((u, v)\) 是一组解,则下一组解为 \((u', v') = (2u + 3v, u + 2v)\)。从已知解 \((u, v) = (989, 571)\)(对应 40755)开始,迭代并检查同余条件,得到下一组满足条件的解为 \((191861, 110771)\)。
|
||||||
|
|
||||||
|
由此计算出:
|
||||||
|
- \(k = (u + 1)/6 = 31977\)
|
||||||
|
- \(j = (v + 1)/4 = 27693\)
|
||||||
|
对应的数为:
|
||||||
|
\[
|
||||||
|
x = P_k = \frac{k(3k-1)}{2} = \frac{31977 \times 95930}{2} = 1533776805
|
||||||
|
\]
|
||||||
|
验证可知该数同时也是六边形数和三角形数。
|
||||||
|
|
||||||
|
因此,下一个同时是三角形数、五边形数和六边形数的数是 **1533776805**。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 关于 佩尔方程 (Pell's Equation)
|
||||||
|
|
||||||
|
下面从**历史来源、基本定义与形式、解的存在性与结构、典型求解方法、解之间的关系、广义佩尔方程及应用**等方面,对佩尔方程做一个系统、全面且尽量直观的介绍。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、历史来源与名称由来
|
||||||
|
|
||||||
|
### 1.1 古印度的起源
|
||||||
|
|
||||||
|
佩尔方程实质上起源很早,最系统的早期研究来自古印度数学校派:
|
||||||
|
|
||||||
|
- 7世纪的 **Brahmagupta(婆罗摩笈多)** 就研究了形如
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = 1 \quad\text{或}\quad x^2 - Dy^2 = k
|
||||||
|
\]
|
||||||
|
的方程。他提出了著名的 **“复合公式(composition)”**:如果
|
||||||
|
\[
|
||||||
|
x_1^2 - Dy_1^2 = n_1,\quad x_2^2 - Dy_2^2 = n_2
|
||||||
|
\]
|
||||||
|
则
|
||||||
|
\[
|
||||||
|
(x_1x_2 + D y_1 y_2)^2 - D(x_1y_2 + x_2y_1)^2 = n_1 n_2
|
||||||
|
\]
|
||||||
|
从而可以“复合”已有解构造新解,这是后世单位理论和解结构的雏形。
|
||||||
|
|
||||||
|
- 后来的印度数学家如 **Bhaskara II、Narayana Pandit** 等,发展了著名的 **Chakravala(循环法)** 算法,这是一种求解佩尔型方程的迭代算法,在计算效率和思想深度上都相当先进[1][2][3]。
|
||||||
|
|
||||||
|
### 1.2 欧洲的再发现与系统化
|
||||||
|
|
||||||
|
- 17世纪,**Fermat(费马)** 在给欧洲同行的挑战中多次提出这类方程,要求找到对
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = 1
|
||||||
|
\]
|
||||||
|
的普遍解法。
|
||||||
|
- 英国数学家 **Brouncker(布朗克)** 利用连分数方法最早给出了一般解法[1][2][4]。
|
||||||
|
- 18世纪,**Lagrange(拉格朗日)** 从连分数理论出发,给出了系统而完整的理论(包括“对任意非平方正整数 D,总存在无穷多解”的严格证明)。
|
||||||
|
|
||||||
|
### 1.3 “佩尔方程”名称的误会
|
||||||
|
|
||||||
|
- 18世纪的 **Euler(欧拉)** 在论述这类方程时,误将相关成果归功于英国数学家 **John Pell**,而实际上 Pell 本人在该方程上的贡献并不突出。
|
||||||
|
- 这个误会流传开来,方程被称作“Pell's equation”,中文常译为 **佩尔方程**[1][3][6][9]。
|
||||||
|
|
||||||
|
总结:**佩尔方程起源于印度,被费马等人推动进入欧洲视野,拉格朗日完成理论化,最终却误以 Pell 命名。**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、基本定义与形式
|
||||||
|
|
||||||
|
### 2.1 标准佩尔方程
|
||||||
|
|
||||||
|
通常所说的“佩尔方程”是指:
|
||||||
|
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = 1
|
||||||
|
\]
|
||||||
|
|
||||||
|
其中:
|
||||||
|
|
||||||
|
- \(D\) 为正整数,且 **不是完全平方数**(若为完全平方则问题退化)。
|
||||||
|
- 要求 \(x,y\) 为整数(常常关注正整数解)。
|
||||||
|
|
||||||
|
若 \(D\) 是完全平方数,例如 \(D = k^2\),则
|
||||||
|
\[
|
||||||
|
x^2 - k^2 y^2 = (x - ky)(x + ky) = 1
|
||||||
|
\]
|
||||||
|
整数解只有平凡解 \((x,y) = (\pm1, 0)\),因此在数论中通常只考虑 **\(D\) 非平方**的情况。
|
||||||
|
|
||||||
|
### 2.2 负佩尔方程
|
||||||
|
|
||||||
|
另一个常见的变体是
|
||||||
|
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = -1
|
||||||
|
\]
|
||||||
|
|
||||||
|
通常称为 **负佩尔方程**。是否存在解取决于 \(D\) 的性质,尤其与 \(\sqrt{D}\) 的连分数展开 **周期长度的奇偶性** 有关(下文会提到)。
|
||||||
|
|
||||||
|
### 2.3 广义佩尔方程
|
||||||
|
|
||||||
|
再推广一步,可以考虑
|
||||||
|
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = N
|
||||||
|
\]
|
||||||
|
|
||||||
|
其中 \(N\) 为任意整数。这类方程常称为 **广义佩尔方程(generalized Pell equation)**[2][3][5][7]。
|
||||||
|
|
||||||
|
- 当 \(N = 1\) 就是标准佩尔方程。
|
||||||
|
- 当 \(N = -1\) 即负佩尔方程。
|
||||||
|
- 一般 \(N\) 的解的存在性和结构与标准方程的解有密切联系。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、解的存在性与基本结构
|
||||||
|
|
||||||
|
### 3.1 拉格朗日定理:总有无穷多解
|
||||||
|
|
||||||
|
**定理(Lagrange):**
|
||||||
|
对任意非平方正整数 \(D\),方程
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = 1
|
||||||
|
\]
|
||||||
|
在整数中有 **无限多组非平凡解** \((x,y)\)[1][2][3][6]。
|
||||||
|
|
||||||
|
这意味着:
|
||||||
|
|
||||||
|
- 不仅总有解,而且解集非常丰富。
|
||||||
|
- 所有正整数解中存在**一组最小的正解** \((x_1,y_1)\),称为 **基本解 / 最小解 / fundamental solution**。
|
||||||
|
- 其他所有正整数解都可以从这组基本解“生成”。
|
||||||
|
|
||||||
|
### 3.2 解的指数结构
|
||||||
|
|
||||||
|
一个非常重要的结构结论是:
|
||||||
|
|
||||||
|
> 若 \((x_1, y_1)\) 是 \(x^2 - Dy^2 = 1\) 的基本解,则所有正整数解 \((x_n,y_n)\) 可以用
|
||||||
|
> \[
|
||||||
|
> x_n + y_n\sqrt{D} = (x_1 + y_1\sqrt{D})^n,\quad n = 1,2,3,\dots
|
||||||
|
> \]
|
||||||
|
> 来表示。
|
||||||
|
|
||||||
|
其中:
|
||||||
|
|
||||||
|
- \(n = 1\) 时就是基本解;
|
||||||
|
- 对每个 \(n\),\((x_n,y_n)\) 都是整数解;
|
||||||
|
- 不同的 \(n\) 给出互不相同的解。
|
||||||
|
|
||||||
|
这实际上利用了二次域 \(\mathbb{Q}(\sqrt{D})\) 中的“单位”(范数为 1 的代数整数),即:
|
||||||
|
\[
|
||||||
|
N(x + y\sqrt{D}) = (x + y\sqrt{D})(x - y\sqrt{D}) = x^2 - Dy^2
|
||||||
|
\]
|
||||||
|
佩尔方程的解正是 **范数为 1 的单位元**。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、典型求解方法:为什么连分数如此核心?
|
||||||
|
|
||||||
|
佩尔方程最实用、也最经典的求解方法是 **连分数法(continued fractions)**。其核心在于一个深刻的事实:
|
||||||
|
|
||||||
|
> **\(\sqrt{D}\) 的连分数展开是周期性的;
|
||||||
|
> 佩尔方程的解可以通过其连分数的收敛分数(convergents)获得。**
|
||||||
|
|
||||||
|
### 4.1 \(\sqrt{D}\) 的连分数展开
|
||||||
|
|
||||||
|
对于 \(D\) 非平方,\(\sqrt{D}\) 是无理数,它的连分数展开形式是
|
||||||
|
|
||||||
|
\[
|
||||||
|
\sqrt{D} = [a_0; a_1, a_2, \dots] =
|
||||||
|
a_0 + \cfrac{1}{a_1 + \cfrac{1}{a_2 + \cdots}}
|
||||||
|
\]
|
||||||
|
|
||||||
|
且有一个重要结论[1][3][6][10]:
|
||||||
|
|
||||||
|
- 该连分数是 **纯周期的(自某处起循环)**:
|
||||||
|
\[
|
||||||
|
\sqrt{D} = [a_0; \overline{a_1, a_2, \dots, a_n}]
|
||||||
|
\]
|
||||||
|
上面的横线表示 \((a_1,\dots,a_n)\) 反复循环。
|
||||||
|
- 这个周期长度 \(n\)(有时也写作 \(\ell\))决定了佩尔方程解的结构,尤其和**负佩尔方程是否有解**有强关联。
|
||||||
|
|
||||||
|
### 4.2 收敛分数与基本解
|
||||||
|
|
||||||
|
连分数的第 \(k\) 个 **收敛分数** \(p_k/q_k\) 由递推公式给出:
|
||||||
|
\[
|
||||||
|
\begin{cases}
|
||||||
|
p_{-2}=0,\; p_{-1}=1 \\
|
||||||
|
q_{-2}=1,\; q_{-1}=0 \\
|
||||||
|
p_k = a_k p_{k-1} + p_{k-2} \\
|
||||||
|
q_k = a_k q_{k-1} + q_{k-2}
|
||||||
|
\end{cases}
|
||||||
|
\]
|
||||||
|
|
||||||
|
关键事实:
|
||||||
|
|
||||||
|
- 对某些 \(k\),\((x,y)=(p_k,q_k)\) 会满足 \(x^2 - Dy^2 = \pm 1\)。
|
||||||
|
- 周期长度的奇偶决定我们应看第几个收敛分数来得到**基本解**。
|
||||||
|
|
||||||
|
更具体地(略去严密证明,只给结论):
|
||||||
|
|
||||||
|
- 若周期长度 \(n\) 为 **偶数**,则
|
||||||
|
基本解来自 “周期结束位置”的收敛分数。
|
||||||
|
- 若周期长度 \(n\) 为 **奇数**,则
|
||||||
|
通常需要看“两个周期”的收敛分数,即更靠后的一项。
|
||||||
|
|
||||||
|
典型例子:
|
||||||
|
\(\sqrt{61}\) 的连分数为
|
||||||
|
\[
|
||||||
|
\sqrt{61} = [7; \overline{1,4,3,1,2,2,1,3,4,1,14}]
|
||||||
|
\]
|
||||||
|
周期长度为 11(奇数),对应的基本解为:
|
||||||
|
\[
|
||||||
|
x_1 = 1766319049,\quad y_1 = 226153980
|
||||||
|
\]
|
||||||
|
这是一个非常大的解,说明基本解 **可能极其巨大**(这在计算理论上非常重要)。
|
||||||
|
|
||||||
|
### 4.3 Chakravala(循环法)
|
||||||
|
|
||||||
|
另一个经典方法是印度的 **Chakravala algorithm**(循环法)[2][3][5]:
|
||||||
|
|
||||||
|
- 通过从“近似解”开始,不断调整,使
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = k
|
||||||
|
\]
|
||||||
|
中的绝对值 \(|k|\) 逐步缩小,最终达到 \(k = \pm1\)。
|
||||||
|
- 每一步更新利用类似 Brahmagupta 复合公式的构造。
|
||||||
|
- 在很多 \(D\) 的情形下,它比直接算连分数更高效。
|
||||||
|
|
||||||
|
现代教材多以连分数为主,但在历史与算法思想上,Chakravala 非常值得单独研究。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 五、解之间的关系与递推公式
|
||||||
|
|
||||||
|
### 5.1 “乘法封闭”与单位群结构
|
||||||
|
|
||||||
|
设 \((x_1,y_1)\) 和 \((x_2,y_2)\) 均是
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = 1
|
||||||
|
\]
|
||||||
|
的解,则考虑
|
||||||
|
\[
|
||||||
|
(x_1 + y_1\sqrt{D})(x_2 + y_2\sqrt{D}) =
|
||||||
|
(x_3 + y_3\sqrt{D})
|
||||||
|
\]
|
||||||
|
|
||||||
|
展开可得:
|
||||||
|
\[
|
||||||
|
x_3 = x_1x_2 + Dy_1y_2,\quad
|
||||||
|
y_3 = x_1y_2 + x_2y_1
|
||||||
|
\]
|
||||||
|
可以验证:
|
||||||
|
\[
|
||||||
|
x_3^2 - Dy_3^2 = (x_1^2 - Dy_1^2)(x_2^2 - Dy_2^2) = 1\cdot1 = 1
|
||||||
|
\]
|
||||||
|
即:**两个解的“乘法”仍是解**[2][6][8]。这说明佩尔方程解在运算
|
||||||
|
\[
|
||||||
|
(x,y) \cdot (x',y') = (x x' + D y y',\, x y' + x' y)
|
||||||
|
\]
|
||||||
|
下形成一个 **阿贝尔群**,这本质上就是 \(\mathbb{Z}[\sqrt{D}]\) 中单位元群。
|
||||||
|
|
||||||
|
### 5.2 从基本解生成所有解:指数关系
|
||||||
|
|
||||||
|
如前所述,若 \((x_1,y_1)\) 是基本解,则
|
||||||
|
\[
|
||||||
|
x_n + y_n\sqrt{D} = (x_1 + y_1\sqrt{D})^n
|
||||||
|
\]
|
||||||
|
|
||||||
|
因此得到显式递推公式(可由二项式展开得到):
|
||||||
|
|
||||||
|
- 一阶递推:
|
||||||
|
\[
|
||||||
|
\begin{cases}
|
||||||
|
x_{n+1} = x_1 x_n + D y_1 y_n \\
|
||||||
|
y_{n+1} = x_1 y_n + y_1 x_n
|
||||||
|
\end{cases}
|
||||||
|
\]
|
||||||
|
- 二阶线性递推(只用 \(x_n\) 自身):
|
||||||
|
\[
|
||||||
|
x_{n+1} = 2 x_1 x_n - x_{n-1},\quad
|
||||||
|
y_{n+1} = 2 x_1 y_n - y_{n-1}
|
||||||
|
\]
|
||||||
|
这是因为 \((x_1 + y_1\sqrt{D})\) 类似“特征根”,解序列是形如 \(\lambda^n\) 的线性递推。
|
||||||
|
|
||||||
|
这些递推在研究解的增长速度、解中出现“完全幂”等性质时非常有用[8][9]。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 六、广义佩尔方程 \(x^2 - Dy^2 = N\)
|
||||||
|
|
||||||
|
### 6.1 基本结构
|
||||||
|
|
||||||
|
广义佩尔方程:
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = N
|
||||||
|
\]
|
||||||
|
其中 \(D\) 非平方,\(N\) 为任意整数[2][3][5][7]。
|
||||||
|
|
||||||
|
核心事实:
|
||||||
|
|
||||||
|
- 若存在 **一个**整数解 \((x_0,y_0)\),且标准佩尔方程有基本解 \((x_1,y_1)\),则
|
||||||
|
所有解都可以写成
|
||||||
|
\[
|
||||||
|
x + y\sqrt{D} = (x_0 + y_0\sqrt{D})(x_1 + y_1\sqrt{D})^n,\quad n\in\mathbb{Z}
|
||||||
|
\]
|
||||||
|
- 即:解的集合是“单位群轨道上的一个整点”。
|
||||||
|
|
||||||
|
更直观地说:
|
||||||
|
|
||||||
|
1. **先解标准方程** \(x^2 - Dy^2 = 1\),求出单位元 \(u = x_1 + y_1\sqrt{D}\);
|
||||||
|
2. 若能找到一个满足 \(x^2 - Dy^2 = N\) 的特解 \(v = x_0 + y_0\sqrt{D}\),
|
||||||
|
3. 则所有解都是 \(v, uv, u^2 v, u^3 v, ...\) 这一无限序列中的整数点。
|
||||||
|
|
||||||
|
### 6.2 解的存在性与条件
|
||||||
|
|
||||||
|
- 广义方程并不总有解,它的可解性与模 \(D\) 的二次剩余、类群结构等深层理论有关。
|
||||||
|
- 一旦有一个解,通常便会有无穷多解,这是因为可以不断乘以单位元 \(u\)。
|
||||||
|
|
||||||
|
在具体计算中,常先通过模数检查、有限搜索或用连分数辅助找到一个特解,再用标准佩尔方程的单位元生成全部解。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 七、佩尔方程通常解决或涉及哪些问题?
|
||||||
|
|
||||||
|
佩尔方程本身就是经典的丢番图问题,但它也广泛出现在以下情景中:
|
||||||
|
|
||||||
|
### 7.1 有理逼近与“最佳逼近”
|
||||||
|
|
||||||
|
- 连分数理论告诉我们:连分数的收敛分数 \(p_k/q_k\) 给出对实数 \(\alpha\) 的 **最佳有理逼近**。
|
||||||
|
- 对 \(\alpha = \sqrt{D}\) 而言,满足
|
||||||
|
\[
|
||||||
|
\left| \sqrt{D} - \frac{x}{y} \right|
|
||||||
|
\]
|
||||||
|
非常小的分数 \(\frac{x}{y}\) 常常来自佩尔方程解,因为若
|
||||||
|
\[
|
||||||
|
x^2 - Dy^2 = \pm 1
|
||||||
|
\]
|
||||||
|
则
|
||||||
|
\[
|
||||||
|
\left|\sqrt{D} - \frac{x}{y}\right|
|
||||||
|
= \left|\frac{x^2 - Dy^2}{y(\sqrt{D} + x/y)}\right|
|
||||||
|
\approx \frac{1}{2 \sqrt{D} y^2}
|
||||||
|
\]
|
||||||
|
- 因此,佩尔方程的解经常用于构造**对平方根的极优有理近似**。
|
||||||
|
|
||||||
|
### 7.2 二次域与代数数论中的单位问题
|
||||||
|
|
||||||
|
在二次代数数域 \(\mathbb{Q}(\sqrt{D})\) 中:
|
||||||
|
|
||||||
|
- 环 \(\mathbb{Z}[\sqrt{D}]\) 的单位元集合与佩尔方程的解一一对应:
|
||||||
|
\[
|
||||||
|
N(x + y\sqrt{D}) = x^2 - Dy^2 = \pm 1
|
||||||
|
\]
|
||||||
|
- 研究单位元结构(Dirichlet 单位定理的特例)即是在研究佩尔方程。
|
||||||
|
- 类数、理想分解、模形式等更高阶理论中,都频繁出现佩尔方程及其广义形式[3][7][9]。
|
||||||
|
|
||||||
|
### 7.3 组合、几何与图论中的出现
|
||||||
|
|
||||||
|
- 一些关于 **整数点格、几何图形面积** 的问题会转化为方程 \(x^2 - Dy^2 = N\);
|
||||||
|
- 在某些组合结构(例如 dessins d'enfants 的不变量研究)中也出现佩尔方程[7]。
|
||||||
|
|
||||||
|
### 7.4 密码学与算法复杂度
|
||||||
|
|
||||||
|
- 佩尔方程提供了构造**巨大整数对**的自然途径,可用于某些密码构造或伪随机数生成;
|
||||||
|
- 同时也出现在对某些加密算法的攻击分析中;
|
||||||
|
- 在计算复杂性研究中,用来测试数论算法的效率。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 八、具体例子与直观体会
|
||||||
|
|
||||||
|
### 8.1 小 D 的基本解示例
|
||||||
|
|
||||||
|
根据理论和连分数计算,可得到若干典型 D 的基本解(这里列出部分)[1][2][3][6]:
|
||||||
|
|
||||||
|
| \(D\) | 基本解 \((x_1, y_1)\) |
|
||||||
|
|------|----------------------|
|
||||||
|
| 2 | (3, 2) |
|
||||||
|
| 3 | (2, 1) |
|
||||||
|
| 5 | (9, 4) |
|
||||||
|
| 6 | (5, 2) |
|
||||||
|
| 7 | (8, 3) |
|
||||||
|
| 8 | (3, 1) |
|
||||||
|
| 10 | (19, 6) |
|
||||||
|
| 11 | (10, 3) |
|
||||||
|
| 12 | (7, 2) |
|
||||||
|
| 14 | (15, 4) |
|
||||||
|
| 15 | (4, 1) |
|
||||||
|
| 17 | (33, 8) |
|
||||||
|
| 18 | (17, 4) |
|
||||||
|
| 19 | (170, 39) |
|
||||||
|
| 20 | (9, 2) |
|
||||||
|
| 21 | (55, 12) |
|
||||||
|
| 22 | (197, 42) |
|
||||||
|
| 23 | (24, 5) |
|
||||||
|
| 24 | (5, 1) |
|
||||||
|
| 28 | (127, 24) |
|
||||||
|
| 31 | (1520, 273) |
|
||||||
|
| 43 | (3482, 531) |
|
||||||
|
| 46 | (24335, 3588) |
|
||||||
|
| 61 | (1766319049, 226153980) |
|
||||||
|
|
||||||
|
可以看到:
|
||||||
|
|
||||||
|
- 有的 \(D\)(如 2,3,5)基本解较小;
|
||||||
|
- 有的 \(D\)(如 61)基本解极大,这正是为什么佩尔方程在计算机上求解仍然具有挑战性。
|
||||||
|
|
||||||
|
### 8.2 利用递推获得更高阶解的感受
|
||||||
|
|
||||||
|
以 \(D = 2\) 为例,方程
|
||||||
|
\[
|
||||||
|
x^2 - 2y^2 = 1
|
||||||
|
\]
|
||||||
|
基本解为 \((3,2)\)。则第二个解由
|
||||||
|
\[
|
||||||
|
x_2 + y_2\sqrt{2} = (3 + 2\sqrt{2})^2 = 17 + 12\sqrt{2}
|
||||||
|
\]
|
||||||
|
即 \((x_2,y_2) = (17,12)\),验证:
|
||||||
|
\[
|
||||||
|
17^2 - 2\cdot 12^2 = 289 - 288 = 1
|
||||||
|
\]
|
||||||
|
第三个解:
|
||||||
|
\[
|
||||||
|
(3 + 2\sqrt{2})^3 = 99 + 70\sqrt{2} \Rightarrow (x_3,y_3) = (99,70)
|
||||||
|
\]
|
||||||
|
解的规模指数增长,这种**指数级膨胀**是佩尔方程序列的一大特征。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 九、总结:佩尔方程的内涵与价值
|
||||||
|
|
||||||
|
综合上述内容,可以从几个角度理解佩尔方程的“全貌”:
|
||||||
|
|
||||||
|
1. **来源**
|
||||||
|
- 起源于古印度的丢番图方程研究,是 Brahmagupta–Bhaskara–Chakravala 传统的重要对象;
|
||||||
|
- 17世纪由 Fermat 挑战推动,Brouncker 首给欧洲解法,18世纪 Lagrange 完成理论统一;
|
||||||
|
- 名称源自 Euler 的误归功,John Pell 实际贡献有限。
|
||||||
|
|
||||||
|
2. **通常解决的问题**
|
||||||
|
- 经典丢番图问题:给定非平方 \(D\),求所有整数解 \((x,y)\) 使 \(x^2 - Dy^2 = 1\);
|
||||||
|
- 给出 \(\sqrt{D}\) 的最佳有理逼近;
|
||||||
|
- 在二次代数数域中,描述环 \(\mathbb{Z}[\sqrt{D}]\) 的单位元结构;
|
||||||
|
- 为广义方程 \(x^2 - Dy^2 = N\) 提供单位群背景,从而刻画其全部解;
|
||||||
|
- 在密码学、几何、图论等领域,作为子问题或工具频繁出现。
|
||||||
|
|
||||||
|
3. **解的关系与结构**
|
||||||
|
- 存在唯一(在正象限)的**最小正解** \((x_1,y_1)\),称为基本解;
|
||||||
|
- 所有解满足
|
||||||
|
\[
|
||||||
|
x_n + y_n\sqrt{D} = (x_1 + y_1\sqrt{D})^n
|
||||||
|
\]
|
||||||
|
呈现指数结构;
|
||||||
|
- 两个解的“乘积”仍是解,形成单位群,递推关系
|
||||||
|
\[
|
||||||
|
x_{n+1} = x_1x_n + Dy_1y_n,\quad y_{n+1} = x_1y_n + y_1x_n
|
||||||
|
\]
|
||||||
|
或二阶线性递推形式;
|
||||||
|
- 对广义方程 \(x^2 - Dy^2 = N\),一旦有一个特解 \((x_0,y_0)\),所有解由
|
||||||
|
\[
|
||||||
|
(x_0 + y_0\sqrt{D})(x_1 + y_1\sqrt{D})^n
|
||||||
|
\]
|
||||||
|
给出。
|
||||||
|
|
||||||
|
4. **解法的核心思路**
|
||||||
|
- 通过 \(\sqrt{D}\) 的 **连分数展开** 及其收敛分数,找到基本解;
|
||||||
|
- 或用 Chakravala 循环法等算法迭代逼近;
|
||||||
|
- 本质上都是在寻找“范数为 1 的单位”。
|
||||||
|
|
||||||
|
佩尔方程表面上只是一个简单的二次方程,但它串联了:
|
||||||
|
|
||||||
|
- 古典丢番图方程;
|
||||||
|
- 连分数与最优有理逼近;
|
||||||
|
- 代数数论中的单位与范数;
|
||||||
|
- 算法数论和复杂性问题。
|
||||||
|
|
||||||
|
从历史、理论到算法与应用,都是一个非常典型又极具深度的数学对象。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### References
|
||||||
|
|
||||||
|
[1] Pell's equation. <https://en.wikipedia.org/wiki/Pell's_equation>
|
||||||
|
[2] Pell equation - AoPS Wiki. <https://artofproblemsolving.com/wiki/index.php/Pell_equation>
|
||||||
|
[3] Pell Equation -- Wolfram MathWorld. <https://mathworld.wolfram.com/PellEquation.html>
|
||||||
|
[4] Pell's equation - MacTutor History of Mathematics. <https://mathshistory.st-andrews.ac.uk/HistTopics/Pell/>
|
||||||
|
[5] PELL'S EQUATION, I & II, by K. Conrad (PDFs). <https://kconrad.math.uconn.edu/blurbs/ugradnumthy/pelleqn1.pdf> / <https://kconrad.math.uconn.edu/blurbs/ugradnumthy/pelleqn2.pdf>
|
||||||
|
[6] Continued Fractions and Pell's Equation (various lecture notes). <https://crypto.stanford.edu/pbc/notes/contfrac/pell.html>
|
||||||
|
[7] Generalized Pell equations and applications (Stanford / UConn handouts). <http://virtualmath1.stanford.edu/~conrad/154Page/handouts/genpell.pdf>
|
||||||
|
[8] Recurrence relations for Pell's equation solutions (MathStackExchange, etc.). <https://math.stackexchange.com/questions/2932750/recurrence-relation-for-pells-equation-x2-2y2-1>
|
||||||
|
[9] On the Brahmagupta–Fermat–Pell Equation. <https://webusers.imj-prg.fr/~michel.waldschmidt/articles/pdf/BrahmaguptaFermatPellEn.pdf>
|
||||||
|
[10] Continued fractions and Pell's equation (expository PDFs). <https://www.math.uchicago.edu/~may/VIGRE/VIGRE2008/REUPapers/Yang.pdf>
|
||||||
Reference in New Issue
Block a user