2022-02-05

数学・物理 素数判定に対するプログラミング・数学入門/相転移プロダクション

今回のテーマ

式を含むこともよくあるため, 記事本体はアーカイブサイトへのリンク先にまとめています.

メルマガのバックナンバーは次のページにまとめてあります. 興味があればどうぞ.

感想をください

「読んだよ」だけでもいいのでぜひ感想をください. メルマガを書く励みになります. 最近感想を頂く機会が増えてきたので素直に嬉しいです.

メルマガへの返信でも構いませんし, 次のアンケートフォームへの回答でも構いません.

ではまたメールします.

WebでLinuxを勉強できる

もう「Linux分かりません」って言い訳出来ない環境が用意されてしまった...。 WebAssembly製のx86仮想マシン「WebVM」が登場、Webブラウザ上でLinuxや各種コマンド、アプリがそのまま実行可能 - Publickey

あくまでも自らの技術力の評価のためだけらしく, 永遠に公開されるわけでもないでしょう. ただ今後似たような環境提供は出てくるでしょう. 例えばGoogle Colaboratoryでも一応Linuxコマンドが実行できます.

もちろんプログラミング勢からすれば(Windowsでも)WSLがあるとか, そもそもMacなら大丈夫という人もいるでしょう. MacならまだしもWSLはインストールそれ自体にハードルがあります. Microsoftストアでクリック一発ならいいわけでもありません. ローカルにインストールするとそこから壊してしまわないか問題があります. 最近はストップをかけられているとはいえ, いわゆるrm -rf問題もあります.

私も就職してはじめて入った会社で, VMでバンバン作って壊せる環境で二ヶ月くらいいろいろ遊ばせてもらえた記憶があります. 教育体制が整った会社とは言えませんでしたが, 勉強し倒せる時間はかなりたっぷり与えてもらえたように思います. それで今の体たらくかと言われると言葉もないですが, 無ければもっと技術力は低かったでしょう. 狼藉を働ける環境をどう手軽に作るかは本当に大事です.

動的計画法問題集があった

今の私のアルゴリズム力からすると入門でさえきついです. 確かProject Eulerをゴリゴリ解くのをやめてまずはアルゴリズムをきちんと勉強しようと思ったのが「あとで出てくる同じ問題は調べる数がただ増えただけだが, brute forceではまともな時間で解けない. 動的計画法などを使おう」みたいな記述があり, AtCoder Problemsでもそろそろ中級なのでレベルアップが必要と思い, 挑んだのですがあっさりと跳ね返されました. アルゴ式にも動的計画法がありますし, こちらも見てみようかと思っています.

無理してHaskellで書こうと思わず, サンプルが多く読みやすいのも広いやすいはずの, C++あたりで勉強した方がいいかとかいろいろ考えています. アルゴ式にもF#入ってくれると嬉しいのですが.

数学からのプログラミング入門コンテンツを作りはじめた

先月から本格的にENERGEIAでほぼ毎日, 22:00-23:00でもくもく会の一つとしてzoomを立ち上げています. 短い時間であってもたまに参加して下さる方も出てきました.

以前メルマガでも森の未知さんとのやり取りを紹介しました. 最近は機械学習のおかげでプログラミング入門から応用数学系までかなり幅広いコンテンツ群が揃ってきています. ただ, それでも, 少なくとも日本の純粋な数学関係者にはまだまだハードルが高いだろうとも思います. 数学関係者向けのプログラミング入門がもっとあるべきだろうと思い, このもくもく会の時間を使ってコンテンツを作っています. まずは入門的にPythonでの素数判定をするコンテンツを整備しています.

これは今まさに並行して進めている例と計算編の裏コンテンツ・補足コンテンツでもあります. 次の項目でも少し書くように, 実際に行列の計算は本当に大変なのでできるところはプログラムに流したいです. 常微分方程式からの中高数学再入門はここ, その続編の中高数学虎の穴は微分積分と簡単な線型代数のまとめを作ってはいますが, これらはnumpy・matplotlibなどライブラリを駆使したコンテンツで, 大事な要素はたくさんあるもののライブラリの使い方特集の面もあり, 徒手空拳でプログラムをゴリゴリ書く楽しさがあまりないようにも思えます. 素数判定は計算量の削減のようなアルゴリズム系情報科学の基礎基本を身につけるのにも役立ちますし, 定義を確認する訓練にもなれば, 証明をプログラムに翻訳するといった側面もあります. 微分積分などもプログラムに載せるには定義を重視する必要がありますが, そうそう直接書かないと思うので, 直接証明をプログラムに載せる経験をするにはもってこいの題材でもあります.

それこそ素数夜曲のような本もあれば, 計算数論のような発展的な問題・分野もあります. 少なくとも私の視界に入ってきた文献では, 数学系の視点から迫るコンテンツがありません. 素数判定のプログラミングからはじめる数学の観点からコンテンツを作ろうと思っているので, 興味ある方はぜひ楽しみにしていてください. 需要があるかわかりませんが, 上記もくもく会で作っている様子を見せているので, 制作過程にも興味がある方はどうぞ. 世にインストール含めて基礎から議論しているコンテンツはあるので, 私のコンテンツではGoogle Colaboratory実行を前提に, 実行できるipynb配布とともに, 文法の解説などよりも計算し倒す方面に寄せ切る予定です. 「もうちょっとこういう解説もほしい」と言われたら, プログラミングに関しては他の本などを紹介したり, 数学系のテーマに関してはコンテンツを作る予定です.

今週の問題

今週面白かったのは次の例・問題・定理です.

前者はノルム空間の等距離写像のアフィン性を謳う定理で, 後者は超平面に対する鏡映を表す射影作用素の構成です. 後者はこれを使って具体的な行列も構成できて便利です. 例と計算編の2022-02-05コンパイル分では, 「2.8.9.9鏡映の具体例: 実二次元の直線に関する鏡映」周辺でいくつか具体例を計算しています.

前者は今回改めて調べていてはじめて知った定理です. はやくリー群関係の文献・量子情報系の議論を進めたいものの, もっと基本的なところで詰めておきたい議論や計算するべき例が山程出てきていて, 全く進みません.

ちなみに四元数についてはPythonでSymPyを使った計算も併用しています. 計算ミスを頻発したからでもあり, 四次行列などが出てきて手計算がきつくなってきたからでもあります. 便利です. いまはアルゴリズムの本に集中しているのでまだしばらく手は出ませんが, 早くMEAPのGeometry for Programmersも読みたいです.

例と計算編は私自身のためにも日々せっせと計算して更新しています. 購入された方はぜひ参考にしてください.

例と計算編は次のリンク先から購入できるので, 興味がある方はどうぞ.

語学 地道にスペイン語を進める/相転移プロダクション

今回の内容

数物系のメルマガが式を含むことも多いため, 記事本体はアーカイブサイトへのリンク先にまとめています.

メルマガのバックナンバーは次のページにまとめてあります. 興味があればどうぞ.

感想をください

「読んだよ」だけでもいいのでぜひ感想をください. メルマガを書く励みになります.

メルマガへの返信でも構いませんし, 次のアンケートフォームへの回答でも構いません.

ではまたメールします.

スペイン語第五文の学習ログ

文構造

まずは明らかな接続詞とカンマ, 関係代名詞に注目して調べましょう. 二文に分けて訳している英語も参考になるはずです. 区切りの目安はbutにあたるpero, if notにあたるsino, さらにもう一つpero, 分詞構文を示唆するカンマの直後のsuponiendoです.

Pero si el imán está en reposo y el conductor se mueve,

途中にy (and)があり, 三人称単数の動詞estáと(se) mueveがあるため, yで二つの文の等置されていて, 全体をsiが包んでいるとみなせます. 主語にあたる単語は定冠詞つき男性名詞imánとconductorでいいでしょう. 話の流れからも対比される概念です. 動詞もestá en reposoとse mueveでまさに対立しています. 全体的には次のように英訳できます.

al rededor del imán no aparece ningún campo eléctrico

冒頭が明らかに前置詞+定冠詞のal=a+elではじまり, no+apareceの動詞が三人称単数で来ているため主語は倒置されているはずで, 実際三人称単数の男性名詞からなる (ningún) campo eléctricoがあります.

まとめると次のように英訳できます.

この文はNingúnとnoが両方入っていて, 少なくとも英語ではあまり見かけないタイプの構文です. 実際に次のような文があり, スペイン語の特徴なのでしょう. (TODO 本当に?)

sino que en el conductor se produce una fuerza electromotriz que en sí no corresponde a ninguna energía,

長いのでいったんここで切りましょう. 冒頭にsino = if notがあります. ここではsino queのセットでbut相当とみなします.

まずen el conductorで前置詞が導く副詞句があり, 次に再帰動詞・三人称単数のse produceがあります. こうなると主語は後置された三人称単数の名詞のはずで, 素直にuna fuerza electromotrizを主語とみなします. この次のqueは関係代名詞と思えばよく, en síはin itselfにあたる副詞句なので queの中に浮いた名詞がないためuna fuerzaが主語にあたるはずです. 動詞correspondeは三人称単数なので人称と単複は一致します.

まとめると次のように英訳できます.

pero da lugar a corrientes eléctricas que coinciden en magnitud y dirección con las del primer caso,

冒頭のperoはbutにあたる等位接続詞で何と何を結びつけているかが問題です. まずdaはdarの三人称単数現在形なので主語は三人称単数です. 次に無冠詞名詞lugarがあり, 前置詞aが続きます. この直後に名詞が必要で実際女性名詞複数形のcorrientesが続きます. さらに直後の形容詞eléctricasは複数形でcorrientesを修飾しているとみなせます. 直後のqueはおそらく関係代名詞節でしょう. 見たところ主語にできる浮いた名詞はなく, 動詞coincidenは三人称複数現在形だからcorrientesを修飾しているはずです. こうなるとpero以下にdaの主語はなく, sino que以下の主語una fuerzaがdaの主語でなければなりません. 物理的にも「起電力が電流を与える」で筋が通ります.

最後にqueが導く関係代名詞節を調べましょう. 動詞coincidirは自動詞なのでこれで基本構造は閉じています. あとはen magnitud y direcciónがあり, con (= with)が導く前置詞句で何とcoincidenしたかが示されています. このcon lasのlasはmagnitud y direcciónで, magnitudとdirecciónがどちらも女性名詞で二つ(複数)あるため, 女性の定冠詞複数形のlasが来る事情を正当化します.

まとめると次のように英訳できるでしょう.

suponiendo que el movimiento relativo es igual en cada uno de los casos bajo consideración.

先頭はsuponerの現在分詞なので分詞構文で, 特にsuponiendo queはsupposing thatです. queのあとには完全な文が来ていると推測して続きを見ます.

動詞はserの三人称単数現在のesだから主語の人称と数が決まり, 補語にあたる語句があるか副詞句だけかという全体構造も見えました. 素直に文頭のel movimiento relativoが主語と見ます. 補語は形容詞igualで何に等しいかが説明されているはずと思って続きを見ます. cada unoで熟語的にeachを表すため, en cada uno deはin each ofと英語に直訳できます. 次に前置詞deの勢力下に男性名詞casoの複数形としてlos casosが来て, 前置詞bajoの勢力下にconsideraciónが来ます.

まとめると次のように英訳できます.

単語