楕円曲線とは1?
背景
[要約]
フェルマーの最終定理の証明には楕円曲線を利用するらしい。では、楕円曲線とは?
[文章]
素数を求めるスクリプトでフェルマーの小定理を利用した。では、有名なフェルマーの最終定理とは?ChatGPTによるとフェルマーの最終定理の証明は下のステップ
楕円曲線 (E) が特定のガロア表現を持つことを示す。
このガロア表現がモジュラー形式に対応することを示す。(谷村-志村予想)
特定のモジュラー形式が存在しないことを示すことで、対応する楕円曲線も存在しないことを証明する。(リブレット-タイラー定理)
これにより、フェルマーの方程式
$$
( x^n + y^n = z^n )
$$
の非自明な整数解が存在しないことを証明する。
リンクは下記
工学としては証明の詳細までは知らないでも、知らない単語があってはいけないでしょう。ということで、まず楕円曲線を理解しよう。
楕円曲線の定義
$$
y^2=x^3+ax+b
$$
で定義される曲線です。さらに必要な条件は
$$
4a^3+27b^2\neq0
$$
楕円曲線の定義
点の加法: • 楕円曲線上の2つの点 P と Q を結ぶ直線が、もう一つの点 R で曲線と交わるとき、その直線を P + Q の結果とし、 R を x 軸に対して反転した点(すなわち R')が P + Q となります。
無限遠点: • 楕円曲線には特別な点 O' が存在し、これは無限遠点(または零点)と呼ばれます。この点は加法の単位元として機能します。
逆元: • 任意の点 P に対して、その逆元 -P は点 P の x 軸に対する反転です。
グラフを書いてみよう
スクリプト
import numpy as np
import matplotlib.pyplot as plt
# 楕円曲線の係数を設定(2種類の組み合わせ)
coefficients = [
(-1, 1),
(1, -1)
]
# xの範囲を設定
x = np.linspace(-2, 2, 400)
# 楕円曲線のy値を計算する関数
def elliptic_curve(x, a, b):
y_squared = x**3 + a*x + b
# y_squared が非負のときのみ平方根を取る
y = np.sqrt(np.maximum(y_squared, 0))
return y
# グラフの描画
plt.figure(figsize=(10, 8))
for i, (a, b) in enumerate(coefficients):
y = elliptic_curve(x, a, b)
# サブプロットを作成
plt.subplot(2, 1, i + 1)
# yの正の部分
plt.plot(x, y, label=r'$y = \sqrt{x^3 + %dx + %d}$' % (a, b))
# yの負の部分
plt.plot(x, -y, label=r'$y = -\sqrt{x^3 + %dx + %d}$' % (a, b))
# 楕円曲線の式を表示
plt.title(r'Elliptic Curve $y^2 = x^3 + %dx + %d$' % (a, b))
plt.xlabel('x')
plt.ylabel('y')
plt.axhline(0, color='black',linewidth=0.5)
plt.axvline(0, color='black',linewidth=0.5)
plt.grid(color = 'gray', linestyle = '--', linewidth = 0.5)
plt.legend()
plt.tight_layout()
plt.show()
結果
$$
4a^3+27b^2=0
$$
の場合は?
つまり、a=-1、b=0.3849001794597505
こうなると。
一旦まとめ
$$
4a^3+27b^2=0
$$
の場合に楕円曲線が滑らかな曲線にならない理由はどうしてだろう?
この記事が気に入ったらサポートをしてみませんか?