見出し画像

楕円曲線とは1?

背景

[要約]
フェルマーの最終定理の証明には楕円曲線を利用するらしい。では、楕円曲線とは?

[文章]
素数を求めるスクリプトでフェルマーの小定理を利用した。では、有名なフェルマーの最終定理とは?ChatGPTによるとフェルマーの最終定理の証明は下のステップ

  1. 楕円曲線 (E) が特定のガロア表現を持つことを示す。

  2. このガロア表現がモジュラー形式に対応することを示す。(谷村-志村予想)

  3. 特定のモジュラー形式が存在しないことを示すことで、対応する楕円曲線も存在しないことを証明する。(リブレット-タイラー定理)

これにより、フェルマーの方程式

$$
( x^n + y^n = z^n )
$$

の非自明な整数解が存在しないことを証明する。
リンクは下記

指数 p ≥ 5 のフェルマー方程式にゼロ以外の整数 解a, b, cがあると仮定します。 対応する Frey 曲線 Eap,bp,cpは 極小判別式 が 2−8 (abc)2pに等しい楕円曲線です。 その導手 N は abc の 根基、つまり、abc を割るすべての異なる素数の積である。 方程式 ap + bp = cp の基本的な考察 で、a, b, c のいずれかが偶数であること、従ってNも偶数であることがわかる。 谷山・志村予想によれば、E はモジュラー楕円曲線です。 N の a, b, c を割るすべての奇素数は p べき 乗に現れるため、 リベットの定理を繰り返し用いれば導手からすべての奇素数を取り除ける。 しかし、モジュラー曲線 X0(2) の種数が 0 であるため、レベル 2 の新形式は存在しないため矛盾 (レベル N の新形式は X0(N) の微分形式)。

wiki

工学としては証明の詳細までは知らないでも、知らない単語があってはいけないでしょう。ということで、まず楕円曲線を理解しよう。

楕円曲線の定義

$$
y^2=x^3+ax+b
$$

で定義される曲線です。さらに必要な条件は

$$
4a^3+27b^2\neq0
$$

楕円曲線の定義

  1. 点の加法: • 楕円曲線上の2つの点 P と Q を結ぶ直線が、もう一つの点 R で曲線と交わるとき、その直線を P + Q の結果とし、 R を x 軸に対して反転した点(すなわち R')が P + Q となります。

  2. 無限遠点: • 楕円曲線には特別な点 O' が存在し、これは無限遠点(または零点)と呼ばれます。この点は加法の単位元として機能します。

  3. 逆元: • 任意の点 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
$$

の場合に楕円曲線が滑らかな曲線にならない理由はどうしてだろう?

この記事が気に入ったらサポートをしてみませんか?