サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2014/01/19

楕円曲線で遊ぶ その3−PARI/GPを使ってプログラム

「楕円曲線論入門」の本には、こちらで紹介した問題が載っていますが、これには続きがあります。3次曲線 上には、有理点P1=(-2,3), P2=(-1,4), P3=(2,5), P4=(4,9), P5=(8,23)のほかに、有理点
P6=-P1+2P3
P7=3P1-P3
がある。これを求めよ。またこれら以外にもう1点整座標をもつものがある。その点P8を求めよ。

最初の部分、P6とP7の計算は難しくありません。せっせと手計算してP6=(43, 282),P7=(52, 375)を求めました。その後PARI/GPを使って検算もしました。問題は後半のP8を求める方。本には「多分、プログラムできる計算機が必要だろう。計算機を使わないのなら忍耐力を要するだろう」と書かれています。PARI/GPにはプログラム機能があるので、この問題を解くのに使ってみようと思いました。

E = ellinit([0,0,0,0,17]);
p10=[-2,3];
p20=[-1,4];
p30=[2,5];
p40=[4,9];
p50=[8,23];
p60=[43,282];
p70=[52,375];
p11=ellpow(E,p10,2);
p22=ellpow(E,p20,2);
p33=ellpow(E,p30,2);
p44=ellpow(E,p40,2);
p55=ellpow(E,p50,2);
p66=ellpow(E,p60,2);
p77=ellpow(E,p70,2);
p2210=elladd(E,p22,p10)
p2230=elladd(E,p22,p30)
p2240=elladd(E,p22,p40)
p2250=elladd(E,p22,p50)
p2260=elladd(E,p22,p60)
p2270=elladd(E,p22,p70)

2〜8行目は7つの点の定義。普通のプログラミング言語のように"="でつないで変数定義ができます。右辺は2次元の点の定義([x座標,y座標])。式の後にセミコロンを書くと式の定義になり、セミコロンを書かないと(16〜21行目のように)値の表示になります。9〜15行目で点p10〜p70の2倍を計算しています。16〜21行目では

2P2+P1
2P2+P3
2P2+P4
2P2+P5
2P2+P6
2P2+P7

を計算しています。上記プログラムをgpScriptというファイル名で保存して、実行した結果がこれ(色付き部分は入力した箇所。\r ファイル名でプログラムを読み込んで実行する)。

? \r gpScript
%16 = [94/25, 1047/125]
%17 = [5234, 378661]
%18 = [52, -375]
%19 = [202904/15625, -91751917/1953125]
%20 = [1164787/273529, -1388597754/143055667]
%21 = [4, -9]
?

これによると2P2+P3=(5234, 378661)が求めるP8です。確かにこれは手計算では大変でしょう。

PARI/GPで扱えるプログラムはC言語に似たシンタックスで、if文やforループもあるようです。これは面白い。ちょっといろいろプログラミングしてみたくなりました。

スポンサーサイト

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1810-8e276786

■  カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。