スキップしてメイン コンテンツに移動

投稿

2021の投稿を表示しています

不変式論のお勧めの本はありますか?

以前、 円分体って名前がそもそもどうなんだ という記事を書いた。 雑にまとめると、円分体と呼ばれている体は有限巡回群の有理数を係数とする群環を考えれば良く、その有限巡回群の自己同型群による不変部分環が係数体に一致してしまうし、もう複素数とかそれに引きずられた名称とかいらないだろう、という話だった。 しかし群環という構造はちょっと特殊すぎて応用が利かないので枠組みを広げてみたい、というのが今回のもくろみとなる。 一番重要だったのは群が作用して不変部分環を考えられる部分だったので、有限集合とそこに作用する群があってそれをうまく環の世界に持ち込めれば良い。 そこで、多変数多項式環とその変数の入れ替えという作用を考える。 例としては、すぐに複雑になってしまうので3変数多項式環 \(K[X_1, X_2, X_3]\) と3次巡回群 \(C_3\) を取ろう。 係数は \(K\) と書いたが標数が \(0\) の体で、変数たちは \(K\) に入らないとする。 では不変部分環 \(A = K[X_1, X_2, X_3]^{C_3}\) がどうなるかをみよう。 不変式はいくつもある。 基本対称式 \[I_1 = X_1 + X_2 + X_3\] \[I_2 = X_1 X_2 + X_2 X_3 + X_3 X_1\] \[I_3 = X_1 X_2 X_3\] の他に、 \[I_4 = (X_1 - X_2)(X_2 - X_3)(X_3 - X_1)\] がある。 \(I_4\) は対称性を見易くするためにこの形で書いたが、差積 \((X_1 - X_2)(X_2 - X_3)(X_1 - X_3) = -I_4\) を選んでもいい。 さらに、 \[I_5 = X_1^2 X_2 + X_2^2 X_3 + X_3^2 X_1\] \[I_6 = X_1 X_2^2 + X_2 X_3^2 + X_3 X_1^2\] など、色々な形の式を取ることができる。 簡単に見て取れるように \(I_1\), \(I_2\), \(I_3\) から各 \(X_i\) は \(X^3 - I_1 X^2 + I_2 X - I_3 = 0\) の解である。 また \(I_4\) は2乗すると対称式になって \(I_1\) から \(I_3\) で書けるようになる(具体的な式は...

ヒバとは

檜っぽい葉っぱの植木をヒバと呼んでいたような記憶があって、正確には(分類学的には)何なのだろう、と調べてみた。 図書館で「検索入門針葉樹」という図鑑を借りてきた。 索引を見てもヒバという名前は出てこない。 検索表の方を見ると、D2なる分類(鱗片状の葉に表裏性があり鱗片葉が小型)に、ニオイヒバ・アオノクジャクヒバ・オウゴンクジャクヒバ・カマクラヒバ・オウゴンシノブヒバ・イトヒバと並んでいる。 ヒノキも入っている分類なので見た目的には合っている。 ニオイヒバ Thuja occidentalis Linn. 北米原産「洋風の庭園に植栽されるドワーフコニファー類にこの仲間が多い」 アオノクジャクヒバ・オウゴンクジャクヒバ・カマクラヒバ ヒノキ Chamaecyparis obtusa Sieb. et Zucc. の園芸品種。 オウゴンシノブヒバ・イトヒバ サワラ Chamaecyparis pisifera Sieb. et Zucc. の園芸品種。 これで終わりと思いきや、さらに「針葉樹の世界」という全体を俯瞰した説明のページがあり、そこに家の土台には「ヒノキやヒバ、ベイヒバが使われ」るという表現が登場する。 ベイマツの伝でいけばベイヒバのベイはアメリカを意味する米だと考えられるのだが、本編に登場しない種を説明無しに出してくるのは流石にどうかと思う。 ちなみにこの後に「ヒノキアスナロ(ヒバ)」という表現が登場し、ここではヒノキアスナロの別名だと判明する。 ヒノキアスナロ アスナロ Thujopsis dolabrata Sieb. et Zucc. の変種品種。 (これの説明には「ヒバ」という呼称は無い。) 以上ヒバという植物はなく、ヒノキ科ではあるものの3つの属にまたがる植物にヒバの呼称が使われていることが判った。 結局ヒバとは檜っぽい葉っぱの木以上のものではなかったのかも知れない。

Aurifeuille 恒等式の計算方法 (Brent)

Brent による Aurifeuille 恒等式の計算方法を紹介していく。 Brent によれば Stevenhagen の方法 は互除法の係数爆発が起きるので次数の大きな円分多項式には適用できないとのことである。 Stevenhagen の方法は実質的に「\(\sqrt{k\zeta_n}\) が \(\mathbb{Q}[\zeta_n]\) に入っているならば、\(\zeta_n\) の多項式で表せる」という事実しか使わなかったが、Brent の方法ではもう少し特殊事情を考えて多項式の係数を決定していく。 あまり複雑な一般化は省いて、 平方因子を持たない \(3\) 以上の奇数 \(k\) に対し、\(n\) を \(k\equiv 1\pmod 4\) ならば \(k\)、そうでなければ \(2k\) とする。 \(\zeta = \zeta_{2n}\) とすると \(\mathbb{Q}[\zeta]\) の \(\mathbb{Q}\) 上のガロワ群は \(\left(\mathbb{Z}/2n\mathbb{Z}\right)^{\times}\) と同型である。 \(\mathbb{Q}[\zeta]\) に含まれる実2次体 \(\mathbb{Q}[\sqrt{k}]\) に対応する指数 \(2\) の部分群 \(H\) を見つけられる。 具体的には \(H=\left\{\pm a \in \left(\mathbb{Z}/2n\mathbb{Z}\right)^{\times} | 1 \leq a \leq n \land (\frac{k}{a})=1\right\}\) だ。 \[L(X) = \prod_{a\in H}(X - \zeta^a)\] を考えると実は \[L(X) = F(X^2) - \left(\frac{2}{k}\right) X\sqrt{k} G(X^2)\] となることが Schinzel によって示されているそうだ(論文を参照できていないので伝聞)。 つまり、偶数次の項を拾うと \(F\) が得られて奇数次の項を拾うと \(G\) が得られるのだ。 具体的な係数を得るには次のように考えればいい。 \(L(X)\) の係数は根が与えられているので解と係数の関係から計算できる。 そこに現れる根の対称...

Aurifeuille 恒等式の計算方法 (Stevenhagen)

この Aurifeuille シリーズは2年ほどブランクがあって3回目。 前2回は Aurifeuillian 因数分解 と Aurifeuille 恒等式 について書いた。 今回は計算方法の一つを紹介する。 簡単にするためにあまり複雑な一般化は省いて、 平方因子を持たない \(2\) 以上の整数 \(k\) に対し、\(n\) を \(k \equiv 1 \pmod{4}\) ならば \(k\)、そうでなければ \(2k\) とする。 このときある整数係数多項式 \(F\) と \(G\) により円分多項式 \(\Phi_n(X)\) を \(F(X)^2 - kX G(X)^2\) という形(Aurifeuille 恒等式)に書ける。 この \(F\) と \(G\) を求める方法を見ていきたい。 \(k=5\) の時のように整数 \(\Phi_n(k)\) の因数分解をして \(k\) 進数展開から求めるのは、いろいろ問題がある。 整数の因数分解自体が難しいし、\(k\) 以上の係数や負の係数が必要になると破綻してしまう。 一般的に使える方法は、もっと代数的な議論だ。 前に見たように \(k\zeta_n\) が \(\mathbb{Q}[\zeta_n]\) で平方数になっているというのがキーだった。 ここで紹介する Stevenhagen の方法は、\(\sqrt{k\zeta_n}\) が \(\mathbb{Q}[\zeta_n]\) に入っているならば、\(\zeta_n\) の多項式で表せるという事実に基づいている。 具体的な \(\sqrt{k\zeta_n}\) を表す \(\zeta_n\) の多項式が \[H(X) = \sum_{1 \leq a \leq 2n \land (a, 2n) =1 \land (\frac{k}{a})=1} X^{(a+1)/2}\] と与えられる。実際 \(X\) に \(\zeta_n\) を代入すると、 \(1/2\) 乗は \(\zeta_n\) を \(\zeta_{2n}\) にし、 \(+1\) の分の \(\zeta_{2n}\) で括った残りは \(\mathbb{Q}(\zeta_2n)\) から \(\mathbb{Q}(\sqrt{k})\) へのトレースになりそれ...

functools.cache とフィボナッチ

フィボナッチ数を計算する関数を再帰で素直に書く。 def fib(n): if n < 0: return n return fib(n-1) + fib(n-2) このままではものすごく遅いので、メモ化すると良い。 というのは一般常識の内だろう。 Python には 3.9 からデコレーター functools.cache があるので、簡単だ。 from functools import cache @cache def fib(n): if n < 0: return n return fib(n-1) + fib(n-2) もう少し前のバージョンを使わなければならない人も安心して欲しい。 デコレーター functools.lru_cache が 3.2 から存在していて、 lru_cache(maxsize=None) と書けば実質的に cache と同じことをしてくれる。 実は上のフィボナッチ数を計算するプログラムは functools 公式ドキュメントの lru_cache 使用例から持ってきたものだ。 話はちょっと飛ぶのだが、昔やっていた NZMATH というプロジェクトをもう一度動かそうという動きがあるとかないとか。 いや動きがあるとは聞いているのだが、実際に動き出したかどうかはまだ見えていない。 そんな NZMATH にもフィボナッチ数を計算する関数 nzmath.sequence.fibonacci があった。 FIBONACCI = {0:0, 1:1} def fibonacci(n): """ param non-negative integer n return the n-th term of the Fibonacci effect FIBONACCI[n] = fibonacci(n) """ if n < 0: raise ValueError("fibonacci(n) 0 <= n ?") if n in FIBONACCI: retu...

たとえ話

最近、YouTube で何の動画を見たからなのか、高校数学と大学数学のギャップについて語っている動画をおすすめされることがある。 何本か見てみたが、高校まで数学が好きでそのまま大学の数学科に進むと、思っていたのと違うというような経験をするものらしい。 私自身はそういうタイプではなかったので、こういうことなんじゃないの、と傍観者的に思ったことを書いてみたい。 数学をサッカーにたとえてみると、ボールに親しもうという子供時代から少しずつ難しい技術を覚えて、 高校ではミニゲームが主な練習になっている、というような成長段階なんだと思う。 そして高校数学が好きというタイプはそのミニゲームで得点を取るのが上手な子だったりするのだろう。 大学の数学で、初めてフルコートでサッカーをする感じになる。 そのためにもう一回ルールをおさらいして、フルコートを走り回れる体力を付け、ロングボールを蹴れるようになるといった今まで必要なかった能力も要求され、フリーキックに対し壁を作るといった新しいテクニックを身につける必要が出てくる。 そして、FW・MF・DF といったポジションごとに違った思考をするようになる。 たとえが先行しすぎて数学の話に聞こえなくなってきたかもしれないが、論理や集合論といった基本を復習して、長い証明を読み書きする力を身に付け、分野を横断するような発想を理解するように要求され、今まで使わなかったような語彙を習得しないといけない、というようなことだ。 そして、解析・幾何・代数といった分野ごとに特有のスタイルを知っていくことになる。 要するに、高校数学が数学だと思っていたら大学数学にギャップを感じるというのは、ミニゲームがサッカーだと思っていたらフルコートに面食らうだろう、というぐらい当然な現象なのだ。 そして大学で勉強する数学もフルコートで行うとは言え所詮練習に過ぎず、本当に試合をするのは研究と名前が変わってからだと言って良いだろう。 教授達は試合をするプロのプレイヤーなのだが、試合の様子をなかなか覗くことができないのがちょっとイメージしづらくさせている部分かと思う。 とりあえず適当なノンフィクション的なものなんかを読んでみて世界観を漠然とでも掴んでから数学を志した方がいいのかも。 ミニゲームでの巧さはそれなりのセンスを意味するだろうから恐れずに進んでいって欲しいとは思...

プロサイドという会社が昔あった

TL;DR: 今はもう廃業しているらしい。 プロサイドという会社は、伝説的な会社ソードを作った椎名堯慶(たかよし)氏が創業した会社で、PC/AT 互換機やサーバー機器を主に扱っていた。 ちなみにソードはソフトとハードを合わせた造語、と初めて聞いたときに感心したら、それを教えてくれた人に鼻で笑われた。 その人は確かプロサイドの社員で、私はアルバイトだった。 前世紀の末のころだ。 Wikipedia によると、プロサイド社は 現在はPC/AT互換機などの製品保守・保証サービス部門を株式会社HITとの合併会社であるHPCシステムズへ移管し、通信事業やコンサルタント事業を行っている。 とのことであるが、このページの会社サイトへのリンクは切れている。 事業移管先である HPCシステムズ のマザーズ上場時の 報告書 にある沿革によれば、この移管が行われたのは2006年9月のことであった。 ちなみに現在の社長やCTOもプロサイド出身者である。 調べてみると、マウスコンピュータなどを子会社にもつ MCJ 傘下に入る話があったのが同じ2006年だったので、事業整理をしたい時期だったのだろう。 MCJ、プロサイドを子会社化 (2006-04-06) MCJ社長にプロサイド椎名氏 (2006-07-05) MCJ、プロサイドの子会社化を中止 (2006-12-01) その後の動向は全然見えなくなる。 辛うじてヒットしたのはこれだけ。 プロサイド、SaaS型プロジェクト管理システムの新バージョンを発表 (2007-09-12) プロサイドではなく社長の名前で検索してみたら Facebook に行き着いた。 そこにはこうあった。 Proside had closed business at march on 2010

植木算?

英語で(イギリス英語でかな)階数の数え方は日本語の1階が ground floor、2階が first floor、以下同様に直訳すると1階ずつずれた感じがする。 最初に聞いたときはおかしな数え方だと思ったが、 「0 は自然数」派として今やイギリス人がうらやましくすら感じる。 地下は地下1階から数えるので、日本語には0階は存在しない。 地下\(n\)階を\(-n\)階と感覚的には置き換えて計算したいが、普通の整数として計算できない。 イギリス人がさらにうらやましくなる。 同様の関係は西暦1年と紀元前1年にも現れる。 洋の東西を問わず、というかこれはヨーロッパのものだ。 今回はこういうのを無理矢理解釈してみたい。 1 と -1 が隣り合わせに並ぶ現象がなぜ発生するのか、だ。 実際のところ、マイナスだと思うからおかしく見えるだけだ。 地上1階と地下1階は別々のものをそれぞれ1から数えている。 西暦1年と紀元前1年は別々のものをそれぞれ1から数えている。 隣接はしていても連続はしていないのだ。 一体の整数という描像が後からの押しつけなのだ。 そうは言ってもどこかに 0 を見出したい。 一体の整数という描像からどうにか理解したい、という気持ちも無視できない。 そして実際可能である。 0 は -1 と 1 の間にある。 ただし質の違うものとして。 紀元前1年と西暦1年との間には年の変わる瞬間がある。 そこが 0 である。 年ではなく年の変わる瞬間の列に一体の整数を見出すことができる。 同じように階の変わる高さの列を地面を出発点として一体の整数とみれば、 その間に地上と地下の階がある。 言うなれば植木算である。 年の変わる瞬間が5回あったら、その間は何年間ですか? というような。 余談: 今回は割と 1 から自然数を始める気持ちに寄り添って説明してみたけど、やっぱり面倒くさいので新しく暦を始めるときは 0 年始まりにして計算しやすくしてください。 たとえば1970年をUNIX暦0年とするのは賛同してくれる人が多いかと期待している。

lsp-mode と python-language-server と pipx

長く Emacs でプログラムを書いている。 最近は(?)時代遅れ扱いされがちな Emacs ではあるが、特に乗り換えたいというほどのものがなく、何となく使い続けている。 他の環境で使えるようになった良さげな機能があって食指が動いても、それ Emacs でもできるよ、と言われると、じゃあいいかとなる。 今回、導入してみたいのは python-language-server である。 LSP (language server protocol) 自体は、VS Code のためにか何か Microsoft が作ったものだそうだが、 プロトコルの規定なので結局それを Emacs だったり Vim だったりから使えるようにする人が現れて、事実上の標準になっている。 昔何か別のコード補完のパッケージを Emacs に入れたときは重すぎて使い物にならず、 いままで dabbrev 以外の補完は使ってこなかったのだが、これはどうだろうか。 導入に際して引っかかるのは、python-language-server のインストール先である。 だいたい、Python のプロジェクトは、少し前まで Python 2 と 3 を使うものが混在していたために必要に迫られて、 pipenv で環境を切り分けて依存から何から別々に持つ、という方針で扱ってきたので、 その方針でいくとプロジェクトごとかもしれない、と最初は考えた。 しかし、Emacs でこれを使う lsp-mode の設定はパスを一つ指定する必要があるようだ。 どうしよう、と、ここで1ヶ月は放置していたと思う。 そんなある日 pipx というものを知った。 Python で書いたコマンドを隔離した環境にインストールするという。 要するに1つのコマンド用に venv を切ってインストールしてパスを通す、みたいなことをコマンド一発でやってくれるというわけだ。 これだわ。 ということで、インストール方法は pipx をインストールする。たとえば mac なら brew install pipx でいける。 pipx install python-language-server Emacs に lsp-mode を入れる。普通に package-list-packages から選択。 .emacs ...

2020年の読書

昨年の読書を振り返る。 2020年は通勤という読書時間がなくなったので、前年よりさらに読書冊数が減少した。 読書メーターの記録 に依ればマンガも入れて100冊ぐらい。 以下、印象に残ったものをピックアップして紹介する。 新しく内田洋子という作家を知った。 立て続けに3冊読んだのが記憶にも残っている。 「 イタリアからイタリアへ 」「 モンテレッジォ 小さな村の旅する本屋の物語 」「 もうひとつのモンテレッジォの物語 」 題材はどれもイタリア。 科学的な本では、チャールズ・コケル「 生命進化の物理法則 」とスコット・アーロンソン「 デモクリトスと量子計算 」が印象に残った。 前者は、物理法則に従って最適な生命形態を探すと今ある生物の作りに落ち着くだろう、という主張が意外だった。 後者は、タイトルの訳が不思議な感じ("since Democritus" がなぜ"デモクリトスと"になるのやら)だが、計算量理論と物理学が量子力学を接点として繋がってくるわくわくする世界。 マンガは基本的に以前から読んでいる続き物を追っているだけだが、2020年は数年溜まっていた「OL進化論」がまとめて出たので5冊も読んだ。 ※本のリンクはamazonアフィリエイトです。