ImageMagickのmogrifyコマンドを使う

[備忘録] 以前 The Internet Archive からダウンロードしておいた E. Cahen の Theorie des nombre, tome 2 (整数論,第2巻)。サイズも小さくで良いのだが,何故かMacのプレビュー.appで見ると,ものすごく動作が遅くてスクロールもままならないという状況だった。それで,放っておいたのだった。そのときは対処法など分からなかったのだが,業者に依頼した自炊(?)PDFが時々同じようにスクロールが重たいという経験を経て,どうすれば良いかが自分なりに少し分かってきたので,それを試してみることにした。

処理対象は,thoriedesnombr02caheuoft_bw.pdf というファイル。サイズは27.2MBほど。このままでも良いが,これを cahen2.pdf として保存。Acrobatで開き,jpegにバラして保存。cahen2_Page_001.jpg から cahen2_Page_762.jpg までの762個のjpegファイルが出来る。これらはモノクロの画像なのだが,サイズは500KBないし900KBもあり,かなり大きい。762個で520MBくらいになっている。グレースケールなのかもだが,拡大した様子では,文字部分は2値のようにも感じる。ともかく,これが27MBに圧縮されていたのだから,すごい圧縮率ではある。

さて,これを ImageMagick で白黒2値のtiffに変換して,CCITT Group4の圧縮をかけることにする。ついでに,広すぎる余白を少し削ってみた。iPhoneで見るときは余白ないほうが見やすいから。

ImageMagickのconvertでは多数のファイルを処理させると,ウソみたいに大量のメモリーを消費してしまうので,今回は mogrify というコマンドを使ってみた。convertとほとんど同じ処理が出来る。

mogrify -shave 100x200 -threshold 80% -compress Group4 -format tiff cahen*.jpg
mogrify -format pdf cahen*.tiff
pdftk cahen*.pdf cat output cahen2mono.pdf

作業内容は次の通り。mogrify コマンドで,まず, -shave 100×200 として,左右100ピクセル,上下200ピクセルずつを削除。次に,-threshold 80% で2値化。さらに, -compress Group4 でFAX G4での圧縮,最後に -format tiff でファイル・フォーマットをTIFFにする。これらを cahen*.jpg すべてに適用する。次に,生成されたtiffファイルをpdfに変換し,pdftkによって,これらのpdfを結合して,cahen2mono.pdf にする。最終的なファイルサイズは,25MBくらいになり,Macのプレビューでも,iPhone4Sの i文庫S でも,スムーズにスクロールして,すこぶる快適になった。

最初のページは次のような感じ。

Cahen "Theorie des Nombres" tome 2

iPhone 4Sでのスクリーンショットは大体こんな感じ。

Cahen "Theorie des nombres" on iPhone4S

iPhoneではさすがに文字が小さく,老眼にはつらいのだが,メガネ外すと,それでも何とか読める。何よりも,750ページもあるのに25MBに収まり,動作も軽くなったので,大満足である。

Cyclotomic Numbers

以下,全くの個人的メモ。

Gaussの円周等分論にあるのだが,一見すると関係なさそうな不思議なものが,Cyclotomic numbers (円分数とでも訳すのか?)なるもの。初等的議論で,Cyclotomic numbers についての性質が示せることが分かったので,メモ。簡単のため,$p=4l+3$の場合についてのみ。

$p$を素数として,modulo $p$での平方剰余を$R$で表し,平方非剰余を$N$で表す。$1\leqq a \leqq p-2$なる$a$に対して,$a\in R$, $a+1\in R$なる$a$の個数を$(RR)$と書く。同様に,$a\in N$, $a+1\in R$なる$a$の個数を$(NR)$と書く。$(RN)$, $(NN)$も同様に定義する。これらの数を求めるのが目標。

$p=4l+3$のときには,$(RR)=(NN)=(NR)$が成り立つ。これが鍵となる。まず,$a\in R$, $a+1\in R$とする。$p=4l+3$のときは,$-1$が非剰余だから,$-a\in N$, $-a-1\in R$となる。対応$a \longleftrightarrow -a-1$によって,$(RR)=(NN)$となる。

$(NR)=(NN)$の証明には,$a$のmodulo $p$での逆元$b$,つまり,$ab\equiv 1 \pmod{p}$なる$b$を用いる。$a\in N$, $a+1\in R$とする。このとき,$b\in N$であり,また,
\[ 1+b=ab+b=(a+1)b \in N \]
であるから,$b\in N$, $b+1\in N$となる。故に,対応 $a\longleftrightarrow b$によって,$(NR)=(NN)$が成り立つ。

あとは簡単。$a\in R$のとき,$a+1$は$R$, $N$のいずれかだから,
\[ (RR)+(RN)=\frac{p-1}{2} \]
が成り立つし,定義から,
\[ (RR)+(RN)+(NR)+(NN)=p-2 \]
は明らか。以上から,
\[ (RR)=(NN)=(NR)=\frac{p-3}{4}, \quad (RN)=\frac{p+1}{4} \]
が得られる。

LagrangeのRecherches d’arithmétique

Gaussの2次形式の合成を特別な場合にLagrangeが既にやっているらしいのであるが、それの確認とLagrangeがそれをどうやって導いているのかを知りたくて、Lagrange全集を探索中。さしあたっては、論文 Recherches d’arithmétique (数論研究) をざっとでも見ておくかな。

ということで、Internet Archive で検索。第3巻の終わりの方に、数論研究はあった。

まだダウンロードしてなくて、ネット上で少し読んだだけだが、簡約形式の計算がかなり詳しくされていて、表の形でまとめられている。合成の計算は見当たらないような・・・。また時間を見つけてゆっくりと読んでみよう。

とあるレンマ


[ 備忘録 ] (Coxの本の証明が気に入らなかった(?)ので、自前の証明。もっとも、自分で考えたあとでもう一度読んでみたら、実は同じだった(爆)。いや、よく見れば内容的には同じなのだが、提示の仕方がねえ・・・。
ということで、自分の為に記録。)

初等的議論で次の Lemma (補助定理) を示すことができる。

2個の平方数の和として表される自然数$N=x^2+y^2$と、その素因数$p$を考える。
もし、$p$も$p=a^2+b^2$と2個の平方数の和になるならば、
$\frac{N}{p}$も2個の平方数の和として表される。

例えば、$N=65$とその素因数$p=5$は
\[ N=65=16+49=4^2+7^2, \qquad p=5=1+4=1^2+2^2 \]
と2個の平方数の和として表される。よって、$\frac{N}{p}=13$もそうなのである。実際、
\[ \frac{N}{p}=13=4+9=2^2+3^2 \]
となる。これがいつも成り立つことをレンマは主張するものである。

2個の平方数の和の全体が「積に関して閉じている」ことは、ブラハマグプタの恒等式
\[ (a^2+b^2)(z^2+w^2)=(az+bw)^2+(aw-bz)^2 \]
から直ちに分かるが、商に関しても同様の事が成り立つことは自明ではない。
とはいえ、証明のアイディアはやはりこの恒等式にある。

“とあるレンマ” の続きを読む

2次形式メモ(4)

Primes of the Form X2 + Ny2: Fermat, Class Field Theory, and Complex Multiplication (Pure and Applied Mathematics (Wiley))


David Coxの Primes of the form $x^2+Ny^2$ を、挫折したあたりから再び読んでみた。今度は理解できた気がする。以前躓いた理由は、ひとつには記述が抽象的で、それについて行けなかったこと。内容を理解してから読めば、抽象的な記述がかえって分かりやすいことに気付く。最初から抽象的な記述で理解するには、読む側にかなりの習熟度を要請するのだろうなあ。

Coxの本に執着している理由の一つは、「種」(Genus) の定義が気に入っていること。指標系ではなく、2次形式が modulo $p$ でとる値に従って「種」を定義しようというのは、この本の目的($x^2+Ny^2$でどのような素数が表されるのか?)からすると、適切なように思える。58ページに次のような記述がある。

We should mention that Gauss’ use of the word “character” is where the modern term “group character” comes from. Also, it is interesting to note that Gauss never mentions the connection between his characters and Lagrange’s implicit genus theory. While Gauss’ characters make it easy to decide when two forms belongs to the same genus, they are not very intuitive. Unfortunately, most of Gauss’ successors followed his presentation of genus theory, so that readers were presented with long lists of characters and no motivation whatsoever. The simple idea of grouping forms according to the congruence classes they represent was usually not mentioned. This happens in Dirichlet [28, pp. 313-316] and in Mathews [78, pp. 132-136], although Smith [95, pp. 202-207] does discuss congruence classes.

(適当訳。現今の「群指標」という用語は、ガウスが用いた「指標」という言葉に由来していることを指摘しておく必要があるだろう。興味深いことだが、ガウスは彼の指標系とラグランジュが暗黙裡に行った種の理論(ラグランジュは2次形式の値の合同類に着目したのだが、これが種の理論の発祥であるとCoxは言いたいのであろう)との関連性を一言も述べていない。ガウスの指標系によれば、二つの形式がいつ同じ種に属するかは容易に決定されるが、半面それはあまり直感的とは言えない。不幸にしてガウスの後継者たちの多くはガウス自身による「種の理論」の表現形式に従ったため、読者は目的意識もないままに、指標系の長いリストを見せられることになる。2次形式たちを、それらの値の合同類に従って分類するという単純な発想は通常触れられることがない。ディリクレの本、マシューズの本はそうである。しかしながら、スミスのレポートでは合同類に関する議論がある。

Coxの言わんとするところは共感できるが、先日のメモでも書いたように、実のところは少々異なっている。ガウス「整数論」には、合同類での分類という目的意識がちゃんと書いてあるのである。上澄みだけを抽出して教科書を書くと、そういう部分がそぎ落とされてしまうのであろう。Read the masters という標語 (Harold M. Edwards でしたっけ?) はやはり大事だなあと思うのである。

2次形式メモ(3)


2次形式の数論、少しだけ前進。判別式が同じ2次形式を正式同値によって類別して「類」(Class)を作り、さらにいくつかの類をまとめて「種」(Genus)を考える話。判別式を割り切る素因数をモジュラスとしての値を考えるのだが、素数2が例外的に難しい。どうしてそういう場合分けをするのか、なかなか納得できずにいろんな本を読む。最初からガウスを読めば良かったかどうかは微妙だが、ガウスを読んで納得できた。

ガウスについては、完全主義で足場を残さない為に、読者は苦労するようなことがよく言われる。しかし、この件についてはまったく違う。創始者ならではのモーティベーションが書かれていて、今風の教科書で疑問に思っていたことがバッチリ書いてあるのだ。

ガウスは中央の係数が偶数の形式$F=ax^2+2bxy+cy^2$を扱っていて、判別式の4分の1 $D=b^2-ac$ を determinant と呼んでいる。従ってつねに4倍の違いが生じるが、それはこの場合は大したことではない。以下、第229条から引用。

さらに、もし当面の目的のために必要であるとするなら、$F$によって表現可能な数は、$D$を割り切らない素数に対してはこのような一定の関係はもちえないこと、それどころかむしろ、$D$を割り切らない任意の素数については、その剰余も非剰余もどちらも形式$F$で表現されることを証明するのは容易である。
だがこれとは反対に、数4と8に関しては、他の場合にも [ すなわち4と8が$D$を割り切らない場合にも ] ある種の類似が成立する。これは看過するわけにはいかない。 (ガウス「整数論」第229条から)

このあと、$D$が2で何回割れるかで場合分けしていき、$F$で表される数が modulo $2^m$ でどうなるか調べていく。これは読むよりも自分であれこれ実験してみる方が楽しいし、どこがポイントなのかがよく分かる。modulo 8 で分類することになるのだが、modulo 8 での既約剰余類の成す群が出てくる。分類はこの群の商群に対応する形をとる。抽象的な代数の初歩を学んだ者にとっては、具体的事例で群論の初歩との関係が分かり楽しい。別の教科書だが、Daniel Flathの本に書いてあった「準同型(homomorphism)のような関係になっている」という意味も、良く理解できる。というか、やっと Flath の本の定義が理解できましたよ。

ということで、やっと一つ山を越えた感じ。

2次形式メモ(2)


ガウスの「種の理論」(Genus Theory) への動機付け。

判別式$D=b^2-4ac=-15$の2次形式
\[ (a,b,c)=ax^2+bxy+cy^2 \]
により素数$p$が表されるか否か、という問題を考える。

この場合、簡約形式 (reduced form) は
\[ (1,1,4)=x^2+xy+4y^2, \quad (2,1,2)=2x^2+xy+2y^2 \]
の2つ。判別式 $-15$ のどの形式もこの2つのいずれか一方と正式同値になる。
(つまり、$SL(2,\mathbb{Z})$ で互いに移り合う。)
この2つは同値じゃないので、狭義の「類数」(Class Number)は2となる。

2次形式の一般論および平方剰余の理論などから、次のことまでは分かる。すなわち、2, 3, 5以外の素数$p$がこの2つのいずれかで表されるための必要十分条件は、2次合同式
\[ x^2 \equiv -15 \quad ({\rm mod } 4p ) \]
が解をもつこと、つまり、
\[ p \equiv 1, 2, 4, 8 \quad ({\rm mod } 15 ) \]
である。
しかし、これでは、$(1,1,4)$と$(2,1,2)$のどちらで表されるのか、あるいは両方で表しうるのか、が分からない。その為には何らかの方法で、2つの形式を「分離」することが必要となる。

そこで、別の切り口から問題を考えてみる。2次形式が表す整数を、いろんな数を法(modulo)として考えるのである。具体的には判別式を割り切る素数を考える。(それ以外の奇素数をモジュロとしても、情報は得られないことが示される。Cahenの393ページあたり。)

modulo 3 で考えてみよう。3の倍数になるものは考えないことにして、これ以外が余り1、2のいずれになるのかを調べてみると、
\[ x^2+xy+4y^2 \equiv -2(x-y)^2 \equiv 1 \quad ({\rm mod } 3) \]
および
\[ 2x^2+xy+2y^2 \equiv 2(x+y)^2 \equiv 2 \quad ({\rm mod } 3) \]
となる。

modulo 5 でも同様の結果になる。5の倍数になるものを考えないことにすれば、
\[ x^2+xy+4y^2 \equiv -(2x-y)^2 \equiv 1, 4 \quad ({\rm mod } 5) \]
\[ 2x^2+xy+2y^2 \equiv 2(x-y)^2 \equiv 2, 3 \quad ({\rm mod } 5) \]
である。

この問題の場合は modulo 3, modulo 5 の片方だけからも分離することができて、
$p\neq 2, 3, 5$ なる素数$p$に対して、
\[ p=x^2+xy+4y^2 \quad \Longleftrightarrow\quad p \equiv 1, 4 \quad ({\rm mod } 15) \]
および、
\[ p=2x^2+xy+2y^2 \quad \Longleftrightarrow\quad p \equiv 2, 8 \quad ({\rm mod } 15) \]
という結論が得られる。

以上を一般化するには、平方剰余の指標(character)と関連づける。modulo 3 で特定の余りになることは、指標 $\left(\frac{n}{3}\right)$ (ルジャンドルの記号、ヤコビの記号) が一定の値になることに対応している。判別式を割り切る奇素数$p_i$に関する指標 $\left(\frac{n}{p_i}\right)$ の値を考え、これらがすべて一致する2次形式の類(class)をまとめて、種(genus)と名付けるのである。
(これ以外に2のベキ乗での分類、つまり、素数2に関する指標もあるが、また別の機会に。)

Cahenの数論教科書

Cahen : Theorie des nombres tome 2

19世紀末〜20世紀初頭の数論教科書をいろいろ探して眺めているのだが、Cahen の Theorie des nombres 第2巻、が好みに合うようだ。フランス語なので今まで敬遠してきたのだが、読まねばなるまい。

第2巻の大部分は2次形式について。種の理論は、具体例で動機を説明したあと一般論に移る。例も豊富で嬉しい。2次形式も一般形、つまり中央の係数が偶数とは限らない形、で書いてあり、これも嬉しい。

あとは錆びついたフランス語の知識で、ぼちぼち読んでいきますかね。錆びついたと言っても、少しは習っていたおかげか、おおまかには読める。一般書はまったく読めないが、やっぱり数学書のフランス語は易しい。

ガウスの「整数論」

ガウス 整数論 (数学史叢書)

ガウス整数論 (高瀬正仁 訳)


もちろん聖典でありまするから、高瀬さんの翻訳が出たときは、小躍りして買ったのです。しかし、ちゃんと読んだかというと、恥ずかしながら未だ通読できず、というか、例の2次形式の合成のところなど、ガウス本人のオリジナルの方法はさすがに大変なので、後世の改良版とかで読むわけですよ、やっぱり。そういうわけなので、ガウスの本で勉強するというよりは、最近の本で勉強し、たまにガウスを眺めるというような有様になってしまっています。

ところが、先日、ディリクレ・デデキントの本と間違えて鞄に入れてしまい(笑)、仕方なく(苦笑)読んでたわけですよ、電車の中とかで。そうすると、新たな発見がありまして、いやあ、やはり原典は読まなきゃなあと改めて思ったわけですね。

第5章から2次形式に入るのですが、もうとっぱじめから、2次形式で表される数と平方剰余の関係が書かれているのですね。ガウスにおいては、最初からそういう視点で議論されているのかあ、と。

しかし、その証明というか、使われる恒等式はなかなか高級です。例えば、2次形式
\[ 2x^2+2xy+3y^2 \]
で表される数を考えます。もし、ある整数 $p$ が原始的に、つまり互いに素な$x$, $y$で表されるとすれば、
\[ nx-my=1 \]
なる$m$, $n$が取れるのですが、そのとき、恒等式
\begin{align*}
&(2x^2+2xy+3y^2)(2m^2+2mn+3n^2)\\
&=(2xm+xn+ym+3yn)^2+5(xn-ym)^2
\end{align*}
を用いると、
\[ p(2m^2+2mn+3n^2)=(2xm+xn+ym+3yn)^2+5 \]
となり、$-5$がモジュロ $p$ で平方剰余になるのです。理解するのは難しくないですが、この恒等式って、正に2次形式の合成ではないですか 😯 。

ふと、そう言えば Cox の本 (Primes of the Form $x^2+Ny^2$) に書いてあったなあと引っ張りだしてみると、ラグランジュがすでに上の恒等式を使っています。なるほど、なるほど。少し分かってきたような気がします。頑張って読んでみましょう :mrgreen:

初めてのPerl

ランダル・L. シュワルツ,トム フェニックス
Amazonランキング:34323位
Amazonおすすめ度:


2次形式の変換作業を計算機にさせようと :mrgreen: Perlの入門書を本棚から引っ張り出してきた。良く知っている PASCAL とか C で書いてもいいのだが、まあ、所詮は整数の四則演算だから言語はどれでも大差ないから、復習も兼ねて。というか、以前、TeXの数式部分を画像に変換するプログラムを書いてから大分経つので、すっかり忘れてしまって、全くの初心者に戻っているのだけど(苦笑)。

Perl特有の習慣に未だ馴染めない所もあるが、まずまず理解しやすい本。実際に動作するサンプル・プログラムが付いているともっと良いと思うが。差し当たって、2次形式のデータ型を定義するにはどうするかとあちこち見るのだが、構造体ってのはないんですかね。


パスカルのレコード型、Cの構造体に対応するものが見つからないが、ハッシュで表現しろということなのだろうか。2次形式
\[ f(x,y)=ax^2+bxy+cy^2 \]
を (a,b,c) と略記して、これを一つのデータ型にしたいのであるが・・・。

パスカルなら、例えば、

type 
  quadratic_form = record
    left : integer;
    middle : integer;
    right : integer;
  end;

C は、えっと・・・うろ覚えだが、

struct quadratic_form {
  int  left;
  int  middle;
  int  right
};

みたいに定義すれば、quadratic_form 型というのが定義できる。

これをハッシュでやるとどうなるのかな? 個別の2次形式、例えば some_quadratic_form=(2,3,4) を表すには

%some_quadratic_form = (
  "left" => 2, 
  "middle" => 3,
  "right" => 4
);

などとするのだろうが、こういうものを包括的に一つの型として登録することはできないのだろうか。それとも、そういうことはしないという風土なのか。なんでもそうだけど、初心者はこんな簡単そうなところで悩むからつらいよねえ。