Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

2018-01-01から1年間の記事一覧

macOS mojave にmysql8ではなくmysql5.7をインストールする

普通に $ brew install mysql とするとmysql8がインストールされてしまいます。 mysql5のデータベースを8にマイグレートする余裕などありません。 mysql5.7をインストールするには以下のようにします。 $ brew install mysql@5.7 コマンドパスを通すため、.b…

楕円曲線の有理点の数の求め方 schoof アルゴリズムその3

アルゴリズムの実際の計算をもう少し詳しくみていきます。 が成り立つかどうかの計算をみていきます。 まず、この式はがreductionの最終結果がxのみの多項式で分母と分子があるということを意味します。 lは奇数なのでにはyは入らないです。 そして、で割り…

macOS の git gc で warning: unable to unlink '.git/objects/ff/xxx': Operation not permitted

macOS で git gcしたときに、warning: unable to unlink '.git/objects/ff/xxx': Operation not permitted というメッセージが表示される現象の対応方法です。 .git ディレクトリに移動して、以下のコマンドを打ちます。 chflags -R nouchg * error: failed …

楕円曲線のn等倍点の多項式(division polynomial)

楕円曲線の点(x, y)をn倍した点(n torsion point)はx,yの具体的な多項式で表せます。 としたとき、n倍点の座標(X, Y)は以下となります。 はdivision polynomialと呼ばれており、以下の漸化式で定義されます。 はmが奇数のとき、xの任意次数の関数。 mが偶数…

楕円曲線の有理点の数の求め方 schoof アルゴリズムその2

楕円曲線の有理点の数の求め方 schoof アルゴリズムその1 - Pebble Coding の続きです。 を素数 l=2, 3, 5, ...について計算するアルゴリズムは以下の通りです。 素体, 楕円曲線とします。 まず、l=2の場合は、の値が1かどうか調べます。 ここでgcdはxの素…

中国剰余定理で2式の場合の解を求める

中国剰余定理とは、2式の場合を互いに素とするとき、 を満たす整数xがの範囲内にただ一つ存在するというものです。 xの求め方はこうです。 まずを満たす(p, q)のセットを一つ求めます。 以下のアルゴリズムを用います。 37x+10y = 1 を拡張されたユークリッ…

37x+10y = 1 を拡張されたユークリッドの互除法で解いてみる

37と10は違いに素なので、は整数解(x, y)を持ちます。 この解を求める方法を拡張されたユークリッドの互除法と呼ぶようです。 具体的には、の形でaをbで割った余りをaに置き換える操作を余りが0になるまで繰り返します。 とおきます。 とおきます。 とおきま…

素体上の1変数多項式の商と余り

こちら 多項式の割り算、商と余り - Pebble Coding の1変数多項式の商と余りを拡張し、素体上での計算をみてみます。 (nがxの最大次数)を、 (mがxの最大次数)() で割ることが考えるとき、以下のようにしてxの最大次数を下げていけばよさそうです。 例えば、 …

xcode address sanitizerでヒープ破壊箇所を検出する

xcode address sanitizerでヒープ破壊箇所を検出してみます。 - (void)viewDidLoad { [super viewDidLoad]; uint8_t* a = malloc(16); memset(a, 0, 17); } 普通に実行してみると、 どこで破壊されているのか分かりませんね。 これをソースの行レベルで検出…

素体をpythonで実装する

素体 (pは素数)をpythonで実装してみました。 なお、計算効率については考慮していません。 #!/usr/bin/env python3 class F: def __init__(self, p, v): self.p = p self.v = v self.normalize() def normalize(self): self.v = self.v % self.p def __add_…

中国の剰余定理で3つの式がある場合を解く

を解きます。 これを満たすaは0以上、未満に一つしかありません。 とおけます。 とおけます。 が解となります。 一次不定方程式ax+by=cの整数解 | 高校数学の美しい物語

1変数多項式の四則演算をpythonで実装する

1変数多項式の四則演算をpythonで実装してみました。 係数は整数の範囲としています。 加算、減算、乗算、剰余を実装します。 剰余では割られる側の最大次数の係数は1のみに限定します。 以下、実装です。 #!/usr/bin/env python3 from fractions import gcd…

多項式の割り算、商と余り

多項式の割り算、商と余りの求め方をみていきます。 1変数xの2つの多項式A(x), B(x)を考えます。多項式の係数は全て整数とします。 次数の大きい方をA(x), 次数の少ない方をB(x)とし、 ここでは次数の少ない方の多項式の最大次数の係数は1としておきます。 …

ユークリッドの互除法とpython3で最大公約数(GCD)を求める

2つの整数の最大公約数を求めるアルゴリズムとしてユークリッドの互除法があります。 2つの整数を割り算して余りを求める操作を繰り返し、余りが0になったら終了するアルゴリズムです。 pythonで2つの整数の最大公約数を求める関数gcd()を実装したのがこち…

有限体の楕円曲線の有理点の数とZ関数

有限体の楕円曲線の有理点の数からZ関数を導いていきます。 定理1 qを素数とし、有限体上の楕円曲線Eの有理点について、 とおきます。 また、の解を複素数とおきます。 すると、有限体 上の楕円曲線Eの有理点の数は、 となります。 証明は省略します。 ここ…

有限群の元のべき乗の位数

ラグランジュの定理 Gが有限群、 ならgの位数は群Gの位数の約数である。 この定理より、以下の定理が導かれます。 gが群Gの位数n>0の元でなら、の位数は である。 例: (65537は素数です)の場合、 の位数は

中国の剰余定理

中国の剰余定理 で m, n は互いに素とする。 つまり、 を満たすはの範囲にただ一つ存在する。 中国剰余定理の証明と例題(二元の場合) | 高校数学の美しい物語 これは、2つの値の場合ですが、もっと拡張します。 を異なる素数とし、 ... を満たすxはの範囲…

ハッセの定理の証明に必要な知識

ハッセの定理の証明には長い道のりと知識が必要です。 ブログに書ける量ではありませんので、どのようにして証明されるのかの概要だけを見ていきたいと思います。 ハッセの定理 Eを有限体 (qは素数のべき)上の楕円曲線とする。 この楕円曲線の位数すなわち、…

複素数体の楕円曲線等分点の群構造を調べる その3

やっと本命の定理です。 定理 Eを体K上の楕円曲線として、nを正の整数とする。 体Kの標数がnを割り切らないまたは0のとき、Eのn等分点のなす群はとの直積に等しい。 体Kの標数がp>0で, , であるとき、 または である。 この定理の証明はものすごく長いので、…

複素数体の楕円曲線等分点の群構造を調べる その2

今度は3等分点を考えます。 まず、複素数体の楕円曲線の標数が2でも3でもないことを仮定します。 標数というのは、こちら 標数 - Wikipedia によると、複素数の単位元(実数の1)をn個加算したものが、ゼロ元(実数の0)になる場合のnです。 つまり、複素数体の…

複素数体の楕円曲線等分点の群構造を調べる その1

今までは、素体の等分点の群構造を調べてきましたが、ここから複素数体の楕円曲線の等分点の群構造を調べていきます。 正確には複素数体に無限遠点(O)を追加した体での等分点です。 無限遠点がないと単位元がなくなってしまいますからね。 複素数体となると…

secp256k1の群構造

secp256k1は素体で、 群位数は L = 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141 = 115792089237316195423570985008687907852837564279074904382605163141518161494337 であり素数ですから、巡回群(cyclic group)です。 つま…

コーシーの定理(群論)

コーシーの定理(群論) 有限群Gの位数をnとする。nの素因数pを位数にもつ部分群は必ず存在する。 例えば位数)の有限群がある場合、 位数の部分群は存在するということである。

投資関連本

バフェットの銘柄選択術 バフェットの義娘、メアリーバフェットによる、ウォーレンバフェットの株投資術について具体的に記した書籍です。 億万長者をめざすバフェットの銘柄選択術作者: メアリー・バフェット,デビッド・クラーク,井手正介,中熊靖和出版社/…

仮想通貨取引の基本知識

仮想通貨取引について最低限の知っておくべき基本的な知識についての解説を行おうと思います。 取引所と販売所とFX 仮想通貨を売ったり買ったりする方法として、取引所と販売所とFXというサービスを使います。 ここでは例としてBitFlyerという会社を用います…

仮想通貨取引で利益を出すには?

仮想通貨取引で利益を出す方法はたくさんありますが、メジャーな方法のみを挙げてみます。利益を出すには、通貨を安く買って高く売る。これが基本になりますが、いくつものバリエーションがあります。 裁量トレード スキャルピング 人が自分の判断とタイミン…

おすすめの金融系映画3本

おすすめの金融系映画3本を紹介します。 いずれも、2008年のリーマンショックを題材にしたものです。 マネー・ショート華麗なる大逆転 サブプライムローンの暴落の予兆にいち早く気づき、相場の暴落によって、利益を上げることに成功する人々とそれを取り巻…

仮想通貨投資と納税

仮想通貨投資を行う場合、納税をどうしたらよいのか気になると思います。 去年は仮想通貨で利益が出たため、初めて確定申告をしました。 情報が少なく、試行錯誤して、だいぶ苦しみましたので、ポイントをメモしておきます。 今年確定申告する方の参考になれ…

ApplePayは ApplePayマークがない店舗でも使える

ApplePayをお店で支払いに使う場合、非接触型ICカード読み取り機が置いてあり、ApplePayマークが表示されていれば必ず利用できます。 ですが、実はApplePayマークがなくても利用は出来ます。 ApplePayで支払いをする場合、Suica、iD、QUICPayの3つの選択肢が…

Blake2b を swift で実装してみた

Blake2 というハッシュ関数があります。 MD5,SHA-1などといういわゆるハッシュ関数の仲間です。 特徴としては、MD5,SHA-1,SHA-2,SHA-3よりも計算が高速で、SHA-3と同程度のセキュリティ(衝突耐性など)があるようです。 MD5などとは異なり、seed(key)を指定で…