CodeIQ MAGAZINECodeIQ MAGAZINE

数式処理システムとしての「Egison」を作る上で、参考にした10冊の数学書

2018.03.23 Category:技術コラム Tag: , ,

  • 5
  • このエントリーをはてなブックマークに追加

Egisonには、2010年から開発されているパターンマッチ指向プログラミング言語としてのEgisonと、2016年からに開発されている数式処理システムとしてのEgisonの2つの側面があります。
本記事では、数式処理システムとしてのEgisonを作る過程で、参考にした数学書を軸に紹介します。
by 江木聡志(楽天技術研究所・Egison作者)

数式処理システムとしてのEgisonを作る上で参考にした数学書

数式処理システムとしてのEgisonを作る過程で、参考にした数学書10冊を紹介します。(2018年3月時点)

1.「線形代数の世界 抽象数学の入り口」(斎藤毅 / 東京大学出版会)

2015年末に友人宅の本棚でこの本を見かけ、読み始めたのが数学の勉強を再開するきっかけでした。

本書は、他の線形代数の入門的な教科書よりも、記述が抽象的で、数学の他の分野のことを知らないと動機が理解できない事柄(例えば双対空間や完全系系列など)が遠慮なく解説されています。

理解できないことは多かったのですが、そのおかげで退屈せずに読めたという印象を本書には持っています。


この本を読んでから、しばらくの間、図書館でいろいろな数学の分野の入門書を借りて、その概要を眺めていました。
微積分、複素解析、フーリエ解析、代数、確率統計の教科書を中心に読んでいたのを覚えています。
この頃は幾何学の教科書に取り組むことをまだ敬遠していました。
コンピューターサイエンスを専攻していたこともあり、幾何学の教科書に一度も取り組んだことがなかったのがその原因でした。


2.「物理のためのベクトルとテンソル」(ダニエル・フライシュ / 岩波書店)

「線形代数の世界」を読んだ後、テンソルとは何か、その直感的なイメージをつかみたいと考えるようになり、2016年1月に、本書を手に入れて読み始めました。本書を読んで、反変・共変ベクトルという概念の直感的なイメージを知ることができました。

本書には、リーマン曲率テンソルの計算について、予備知識を必要としない感覚的な解説もあり、本書でリーマン幾何学の感覚をつかむことができました。本書を読むと、一般相対性理論をちゃんと勉強したいと考えるようになりました。また、テンソルの添字記法についても、本書を通して初めて知りました。


本書を読んだ後、一念発起して、2ヶ月かけて、Egisonを拡張して数式処理システムを実装しました。
2016年3月24日にEgison 3.6.0として、この数式処理システムを公開しました。


3.「曲線と曲面の微分幾何」(小林昭七 / 裳華房)

一般相対性理論を勉強する前に、微分幾何の勉強をしようと考えて、2016年4月に本書を手に入れて読み始めました。

この本の第2章では,3通りの方法で曲面の理論を解説します。
だんだん抽象的な証明になるのですが、3つめの方法では、微分形式の言葉が使われます。ここで、初めて微分形式の威力を感じました。

第4章の最初に微分形式の言葉で記述したStokesの定理の解説もあります。
この解説も、微分形式の動機を直感的に教えてくれておもしろいです。

本書は、それぞれの節の最初にその節の概略が書かれており、それを読むだけでも楽しく、内容を理解するモチベーションが湧くようになっていました。

4.「多様体の基礎」(松本幸夫 / 東京大学出版会)]

2016年4月に、上記の本と一緒に本書を手に入れて読み始めました。

「曲線と曲面の微分幾何」や後で紹介する本を読んでいて、消化できない概念や式変形があるとこちらを参照するという読み方をしていました。
この本は、他の本ではさらりと書かれている式変形などが詳しく解説されているので、とても心強い独学の助けになりました。

5.「時空と重力」(藤井保憲 / 産業図書)()

一般相対性理論を勉強するために、2016年5月に本書を手に入れて読み始めました。

シュヴァルツシルト空間(原点を中心にした質量をもった球があり、それ以外の場所は真空な空間)において、どのように時空が曲がっていて、重力が生じるのか理解したいという動機で本書を読みました。

本書の説明は直感的で、とてもわかりやすかった記憶があります。そのおかげで、1週間ほどで上記の目標を達成することができました。


本書を読み終わった後、球面のリーマン曲率や、シュヴァルツシルト空間のリーマン曲率テンソルをEgisonで計算するプログラムを書くことに挑戦しはじめました。
その際に、スカラー仮引数とテンソル仮引数という新しい仮引数の概念を導入するとテンソルの添字記法をプログラミングに導入できるというアイデアを得て、実装しました。
2016年5月25日のEgison処理系のコミットログを見ると、それを確認できます。

2016年5月30日にEgisonで球面のリーマン曲率テンソルを計算するプログラムをウェブサイトで公開しています。

ただ、数式処理システムを実装する際に、何も参照しなかったこともあり、このアイデアの新規性に気づいたのは、2016年末でした。そこから論文を書き始め、2017年9月3日にオクスフォード大学で開催されたScheme Workshopにて、このアイデアを発表しました。


6.「微分幾何学とゲージ理論」(茂木勇,伊藤光弘 / 共立出版)

一般相対性理論を勉強すると、今度はその一般化と言われているゲージ理論に興味をもつようになり、2016年5月あたりに本書を手に入れて読み始めました。

本書の4.1節の後半に、ゲージ理論の例として、U(1)ゲージ理論のビアンキの恒等式(dF=0)とヤンミルズ方程式(δF=0)から、マクスウェルの方程式を導く解説があります。

ゲージ理論の方程式は、上記のように微分形式の言葉を使って記述された非常にシンプルな方程式です。このシンプルな記述で、複雑なマクスウェルの方程式が記述できるというのは、初めて知ったとき大きな驚きでした。

このことをきちんと理解することをモチベーションにゲージ理論の勉強をすすめました。

7.「接続の微分幾何とゲージ理論」(小林昭七 / 裳華房)

上記の本だけでは、理解できない箇所が多かったので、2016年6月に本書を手に入れて読み始めました。

この本も、同著者による「曲線と曲面の微分幾何」と同様に、それぞれの節の最初にその節の概略が書かれており、独学しやすかったです。

1年以上、通勤電車で本書をずっと読んでいて、本書内の数式の位置や、数式変形はだいたい覚えてしまいました。


添字記法に加えて、微分形式の言葉もプログラミングに導入することは、「曲線と曲面の微分幾何」を通して微分形式の威力を知ったときから、長い間の課題でした。

2017年6月に共同研究を始めた物理学者の深川宏樹さんと議論したあとからは、この課題について特に重要だと認識するようになりました。

2017年9月、深川さんつながりで集まった物理学者の方々と議論した次の日の朝、本書を眺めている最中に、添字が省略された場合の添字補完の方法を制御する方法を上手に設計すると微分形式をプログラミングに導入できることに気づき、この課題は解決しました。


8. 「微分形式の幾何学」(森田茂之 / 岩波書店)

上記2つの本を読むためには、微分形式やファイバー束について、より入門的な教科書を読む必要があると考えて、本書を手に入れて読み始めました。

本書は、De Rhamの定理の証明や、特性類についての直感的かつ詳しい解説も充実していて、位相幾何を勉強しはじめるきっかけにもなりました。

上記3冊を中心に2017年末まで読んでいました。

9. “Geometrical Methods of Mathematical Physics” (Cambridge University Press)

微分幾何の物理への応用について知るためには本書を読むのがよいと深川さんに薦められて、2017年7月に本書を手に入れて読み始めました。

本書には、解析力学や流体力学の記述への微分形式の応用についての解説があります。このテーマはとてもおもしろくて、もっと深く理解したいと考えています。また、本書のリー微分の説明は、わかりやすかったです。

10. “Three-Dimensional Geometry and Topology“(William P. Thurston / Princeton University Press)

より深く幾何学を理解するためには、3次元以上の多様体について、より具体的なイメージを持てるようになる必要があると考えて、2018年1月末に本書を手に入れて読み始めました。

本書は、サーストンの幾何化予想のサーストン自身による本で、幾何化予想を理解するのに必要な知識がまとめられているようです。まだ読み始めたばかりですが、この本の解説は他書に類をみないくらい直感的でおもしろいです。

※画像出典:楽天ブックス

Egisonについての資料

2017年から今までに公開したEgisonについての資料を紹介します。
これらには、微分幾何の記法をプログラミングに導入するための独自の工夫についてまとめています。

  • 5
  • このエントリーをはてなブックマークに追加

■この記事を書いた人

avatar

江木聡志(楽天技術研究所・Egison作者)

楽天技術研究所 研究員 1986年生まれ。2010年、東京大学理学部情報科学科卒業。2012年、同大学院情報理工学系研究科修士(コンピュータ科学)。2010年、プログラミング言語Egisonの設計・開発を開始。2011年度未踏IT人材発掘・育成事業スーパークリエータ受賞。2013年11月に楽天技術研究所に入所し現職。2015年2月、ソフトウェアジャパンアワード受賞。2015年10月、日本OSS奨励賞受賞。

■関連記事

プログラミング言語Egisonによるガロア理論入門 (2) ―対称群と正規部分群... 群とは? 数に対して定義されたかけ算を一般化して、色々な集合の上にかけ算のような演算を定義して生まれた概念が群です。 正確な定義を述べると、ある集合Gとその元の間の演算*が以下の3つの条件を満たすとき、(G, *)は群であると定義されます。 結合則 : 任意のx,y,z∈Gに...
プログラミング言語Egisonによるガロア理論入門 (1) ―2次方程式の解の導出... プログラムで代数方程式を解く 数式処理システムの機能を持つプログラミング言語Egisonでは、√2や√3のような数を浮動小数点数として近似することなくプログラム上で扱うことができます。 この機能を用いると、2次方程式、3次方程式、4次方程式を始めとする代数方程式の解を求めるプログラムを記述するこ...
数式処理システムとしてのプログラミング言語Egisonの紹介... シンボリックな計算とは シンボリックな計算とは、x + x = 2xや(x + y)^2 = x^2 + 2 x y + y^2のようにxやyといったシンボルをプログラム上で数と同様に扱い計算することをいいます。 シンボリックな計算をサポートしている既存の数式処理システムとしては、Mathema...
エンジニアにこそ求められる?「ビジネス数学」を学んでみよう!... 学校の数学と何が違う? 学生生活でたくさん勉強したはずの数学。でも仕事をする上で役に立っていないと感じている人も多いのではないでしょうか。 高校生の頃から文系に進み、受験勉強や大学でも数学を避けてきた人も多くいます。実際、多くの会社員にとって、仕事で三角形の合同を証明することはありませんし、微分...
アドテクの裏側で暗躍!?ユーザーの嗜好を紐解くベイジアンネットワークとは... ベイジアンネットワーク -「因果」のモデリング ベイズの定理を説明した前編では、以下のような問いを設定していました。 患者Aは咳が出て節々が痛く、喉が腫れている。病名は何? プリンターが不調。縦線のノイズが入る。どこが故障している? それぞれ、医師やカスタマーサポートであれば解決できる...
「機械学習クラスタのベイズって何?」という人へ──まずは『ベイズの定理』を学んでみよう... 「ベイズ」や「ベイジアン」を聞き流し続けているあなたへ この記事では分かりやすく、ベイズ統計の基本中の基本である「ベイズの定理」の使い方について説明していきます。 実例で分かるベイズの定理 – 感染検査薬の実用性を測る あなたは某大手製薬会社で、ある伝染病の検査薬開発に関わる研究開発社員だ...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートへ