Masahiro Takahashi @LeapMind

LeapMind の高橋がいろいろ書く予定の場所です。

LM は私の最初の「会社」です。

この記事は、LeapMind Advent Calendar 2019 の21日目の記事です。

 

私は、12/2, 12/4 にも記事を書いているので、そちらもぜひどうぞ。

これらは、過去の遺産を使いまわしてなんとか Get It Done! したものですが、結構面白いですよ (ハードルを上げてどうする・・・)。

今回は、頑張ってゼロから書いていますが、業務の関係で時間が取れず、時刻 00:00 発行とはなりませんでした。無念・・・。

 

今回は需要があるのか無いのか分からないですが、私がどんな感じで LeapMind (LM) に入社したかをつらつら書こうと思います。弊社の某 IT 秀才が、そういう経歴はなかなか無いので興味がある人多いと思いますよ、と言ってくれたので、自分の思い出として記事に残します。社内向けの自己紹介にもなるか。あと、すぐに忘れちゃう初心を思い出すのに後で役立つか・・・?

 

 

概略。

産まれる → 物理に目覚める → AI に対する興味が出てくる → LM に入る (イマココ

 

 

もう少し細かく (飛ばして良い)。

誕生。

私は、198x年11月15日に岡山県の片田舎にて産まれて、、、(略

(一応年齢は伏せとくか。)

 

高校時代に留学したよ。 

高校 2 年生のときに先生の勧めで、ロータリークラブの支援でアメリカの高校に 1 年間留学して、そのときに初めて「物理」の授業を受けました。元々理科と数学が好きでしたが、はっきりと、「知りたいのはこれだ!」とそのとき思いました。物理全般が好きでしたが、特殊相対性理論の説明ビデオ (高校生向け) を授業で見たときに、英語も分からんが、なんか場面によって時間の経過の仕方が違うということを言っていそう、と思い、そんなハズないやろ! と細かく説明を求めたのを覚えています。

 

大学で物理を勉強したよ。

特殊相対性理論は謎のままだったので、大学で勉強しようと思って、受験勉強も間に合わないから (高校 3 年の 8 月帰国)、とりあえず留学を視野に入れつつ、推薦入学枠 (岡山大学理学部物理学科) に応募して、面接で「君、(日本の) 高校で物理習ってないのに、内容分かってるの? ついていけるの?」と圧迫面接並みに詰められながらもなんとか合格。案の定、大学 1 年生で「不可」は無いにしても半分を「可」で終えます。サボって「可」ではなく、努力して「可」なのは、なかなか渋い。最初の授業一週間分を受けた後で泣きそうになったのを覚えています。

ただ、良き友人に恵まれ、必死にやったところ、結局は大学は 3 年で早期卒業しました (早期卒業制度の第一期、理学部の 3 学科で 1 人ずつ)。(ドヤッ

 

物理の研究をしたよ。

大学院の修士課程と博士課程を同大学の数理物理学の理論研究室で過ごして、博士号 (理学) を取りました。博士課程在籍中には、日本学術振興会特別研究員 (DC2) に採用されてここで初めて有給となります。修了後、東京大学理論物理の研究室に 日本学術振興会特別研究員 (PD) のポスドクとして着任しました。ちなみに日本学術振興会の特別研究員の職は若手研究者のアカデミアの登竜門的なものです。その後、1 年間を過ごし、学習院大学理論物理学研究室助教として着任します。

学習院大学では、授業と研究を両方自由にやって楽しみました。

 

(どうでもいい経歴終わり)

 

転職について (本題)。

色々と物理の研究を重ねてきましたが、学習院大学の理学部の助教枠は私の代から任期制が導入されて、任期満了を迎えることになったので、次の進路をどうするか考え始めました。

このまま物理の研究を続けていくか、はたまた・・・?

 

[企業就職]

日本では博士号を取得すると就職が難しくなる、と言われており、実際にその傾向は強くあります。海外では、専門職では博士号を持っていないとまともに話もしてもらえない、という話も聞くので、それとは対照的です。

 

[アカデミック就職]

一方で、大学や研究所といったいわゆるアカデミックなポジションはというと、これも狭き門です。基本的に各ポジションの人員は埋まっており、退職者が出た場合に空いたポジションが公募に出され全国から博士号を取得した有力者が応募してその枠を争います。ポスドク問題 (怖い現実) というものが叫ばれています。

 

そういった中で、どちらかに集中して転職活動をするのはリスクが高いと思ったので、どちらの就職活動もすることにしました。企業就職では、就職斡旋サイトに登録し、アカデミック就職は公募が出たときに、分野にオーバーラップがあればその都度応募する、という形です。

 

自分のやりたいことは何か。

転職活動は自分の今後を考える上で非常に意味がありました。

自分は果たして何をやりたいのか。将来的にどういう状態になっていたいのか。そういうことを真剣に考える良い機会となりました。

 

研究しながら生きていくこと。

研究がやりたいことである場合も、全ての人が自分勝手に「本当にやりたい研究」ばかりができる訳ではありません。私の場合も、結果が出せるレベルでゴールを設定する、ということを多くやっていたように思います。なぜそうするかというと、結果がなければ次の就職も無いからです。基本的に本当に知りたいことは難題過ぎて、手に負えないことばかりです。そこに向けて、またはそこに多少近いことで、かつ自分のこれまでのノウハウが活かせる最大限のテーマを選択して結果を出す。それが大き過ぎる場合には、さらに細かい小さなことでとりあえず結果を出す。とてもマトモですが、結果を気にし過ぎると、アカデミックでは大きなことをやるリスクが高過ぎてとても手が出せません。

また、特に何か人のためにやる訳では無いので、そういうやりがいはありません。特に人に感謝されたい訳では無いですが、人の役に立っていれば多少つまらないことでも意味が見出せると思います。そいういう意味では授業を行うとか指導を行う業務は、多少なりともその人の役に立つように、と思ってやっているのでやりがいがありましたが。

 

最終目標の設定。

就職活動を始めて間もないころ、ある企業のある人事担当の方に本当にやりたいことをやるべきだという説明を面談の場で受けました。その方のこれまでの経歴およびその行動原理を例として説明いただき、あなたはどうですか、と結構親身になってアドバイスをしていただきました。

色々と渡り歩いているけども、最終的には、意思に従って一本の道ができている、そういう風になっていくものですよ、ということも言われました。

 

かなりその言葉は心に響いていて、自分の場合はどうだろうと考え始めました。

私にあるのは、物理、それからなんだ・・・?

一応留学もしたし、英語の論文を読んだり書いたり、国際会議で発表したり、議論したり、、、英語も使えるぞ。

あとは、一番興味があるのは、コンピュータだな。(えっ

 

これまで書きませんでしたが、コンピュータ、プログラミングには昔から興味がありました。その点は経歴と勝手に繋がっていて、物理の研究でも数式を用いた解析もしますが、もっぱら数式をプログラミングに落とし込んで数値計算を行い、様々なパラメーターで物理現象をシミュレートして結論を得る、というような研究スタイルを取っていました。逆にそうでなかったら、研究ももっと早く止めていたかもしれません。

また、学習院大学では、プログラミングが面白いので、学生を集めてゼミも自発的にやっていましたし、研究サーバーの立ち上げと管理も必要に迫られつつも好んでやっていました。

 

当時、最近話題の機械学習にも興味があり、さらに、人間が学習することと機械が学習すること、人間と機械の違い、機械は知的になれるのか、ということまで興味が尽きない状態でした。如何に自発的に学習するコンピュータを作るか、できるのか、というところを個人的には最終的にやりたいんだなぁと思っています (ヤベーやつに写りそうだが)。私は人間も物質、生物も物質、と思っているので、技術的な問題さえクリアすればそういったものもコンピュータで作成可能だと思っています。

 

企業就職の実態は。

アカデミック就職に関しては、今回は触れません。その都度応募で、かつ各募集によりけりなのと、今回は企業就職したので、企業就職の実態についてのみ少し書くことにします (一部アカデミックの人向け)。

実際のところ、上記のように博士号取得者の企業就職は難しいところがある、と感じるところが多々あります。

例えば、ポートフォリオを一通り入力して、あなたにマッチする企業をお知らせ、という機能がありましたが、該当数ゼロなんて表示を返してきます。何度か同じようなマッチングツールを試しましたが、これは全く引っかかりません。

> すみません、現在あなたにマッチする企業はありません。

 

しかし、実際は結構可能性があります。心を折られないように注意してください。

まず、就職斡旋サイトの、エージェントと呼ばれる個別にマッチングをお勧めしてくれる人たちがいます。エージェントからは結構的外れな推薦があることがありますが、中には企業側とこちらの適性をきちんと見極めた推薦があります。エージェント経由で内定までいった会社は私の場合は 2 社でした。一方は、データサイエンティスト枠の優良ベンチャー、もう一方は、新規事業と研究を行う枠の大手でした。

また、就職斡旋サイトの提携業者の中には、博士号取得者専門の斡旋業者がいる場合があり、私はこのケースで紹介してもらった LeapMind (LM) に就職を最終的に決めました。この斡旋業者内には同じようにアカデミック経由の経歴の人がおられ、アカデミックからの企業就職はアピールを正しく行い、理解のある企業を選べば決して難しくないので、自分を安売りしないように、というアドバイスをもらいとても勇気付けられました。このエージェントの紹介からは、LM の他に、もう一社、データサイエンティストおよび講師の枠で大手からの内定をもらいました。

最後に、就職斡旋サイトの登録情報に対して、直接企業側から連絡があったものが 1 件あり、データ解析などをする枠で大手グループ系列のシンクタンクでの内定をもらいました。きちんと登録すれば、ピンポイントで見つけられることもあるようです。

 

アピールのやり方。

ということで、限られた期間の中での就職活動にも関わらず、かなり良い結果を得ることができました。

よく、就活はお見合いだからどんどん出して、とにかく数を打て、と聞くことがありますが、アカデミックからの場合は、専門エージェントに頼むとか、個別のリプライに限って応募するとか、もっとしっかり絞って活動するのがいいと思っています。

 

そして、特に博士号取得者および一般的に気をつけてやるべきアピールがあると思います。

 

一つは、自分がどういった面でその会社で役に立ちそうか、ということを明確に伝えることです。

これは博士号取得者が最も気にすべき点です。企業側の採用者は、多くの場合、良くも悪くもこの点しか見ていません。応募者の経歴には以下に書く点を除いて興味がないです。例えば、私の場合だと、これまでの研究生活で、数学の基礎知識、物理の基礎知識、論理的な思考の方法を身につけているので、新分野においても適用可能である。特に行列の基礎知識、微分積分は常に使っているので、機械学習アルゴリズムの理解も問題なく行える。また、英語を使った業務に関しても問題がないため、調査および社内コミュニケーションも十分に行える。さらに、国際会議での発表や、授業での教鞭をとるなど、伝える練習をしてきたので、物事を分かりやすく伝えることが可能である。

(実際のレベルはこの際問わない。)

 

もう一つは、自分の歩んできた道筋と、将来の道筋を明確に示すことです。

自身で目標を立てて、自立的に進んでいける人物であるかどうかが見られます (一貫性のある説明)。ただそれに加えて、その人の将来設計通りに会社で活躍してもらえそうかどうか、という点が見られます (マッチング)。博士号取得者が採用されないのはこの点が関係してくることが実は多いのではないかと思います。採用側は、この人は博士号を取っているが、この会社の業務および待遇に満足して、お互いにハッピーになれるだろうか、という基準で見ています。ビジョンがしっかり示せないと、採用者がこの観点で判断ができなくなり、分からないので止めておこう、となる可能性があります。ここでしっかりとビジョンを示して、それに大きな隔たりがなければ良いですし、逆に隔たりが大きければ、お互いに不幸なので、むしろ別を当たった方がいいです。

 

実際の行動は。

最終目標 (プログラムでの知的生命体の作成とその理解) は会社ではすぐにできないとしても、最終目標に向かって進むしかないでしょう、せっかく転職するんですから、ということで、上記のエージェントの助けを借りながら、まずは機械学習の知識が身につく企業にあたりました。また、いきなりアカデミックからの企業転職にはハードルが高い可能性があったので、初期はもっと広くプログラミングを主に業務としている企業全般で就職活動を行いました。こちらは最終的には必要なかったですが、色々外の世界を見るのには役に立ちました。

内定を複数もらったので、その都度、目的と、待遇とそのバランスを考えながら、判断をしました。最終的には、機械学習の知識を直接得られる可能性が高いという点を重視して、LM を選びました。

 

実際は。

LM では多くの機械学習、深層学習、さらに最近はそれに付随する様々なタスクを業務で行うので、常にそれらの技術に触れることができます。その点よかったなと思っています。

 

・・・

 

が、ここに関しては、長くなりそうなので、今は諦めて、今度記事に起こしたいと思います。

 

(力尽きた・・・)

フェルマーの最終定理 (フェルマー・ワイルズの定理) の行列版!

この記事は、LeapMind Advent Calendar 2019 4 日目の記事です。

 

解けるまでに 360 年もかかった、フェルマーの最終定理 (フェルマーワイルズの定理) という有名な定理があります。それは、

\(3\) 以上の自然数 \(n\) について、\(x^n + y^n = z^n\) となる \(0\) でない自然数 \((x, y, z)\) の組が存在しない

というものです。

これを行列バージョンに拡張して考えよう、という記事がありましたので、問題風にアレンジして紹介します。面白いので、ぜひフォローしてみてください。

問題の出典元は、
東京出版の「大学への数学」 1999 年 10 月号、数学ていだん、矢ヶ部巌
です。数学鼎談には面白い記事がたくさんあって関心します。

問題

零行列でない \(2 \times 2\) の正方行列 \(A, B, C\) について、フェルマーワイルズの定理と同様の式 (以下、F 式と呼ぶ) \begin{equation} A^n + B^n = C^n \end{equation} を満たす \((A,B,C)\) が存在するか調べよ。

step by step で小問を解きながら進みましょう。

問題 1

実は任意の \(n\) で成り立つ例がすぐに見つかる。以下の行列の \(n\) 乗を計算し、それをヒントに、F 式を成り立たせる行列の組を見つけよ。 \begin{equation} \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}, \qquad \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}. \end{equation}

この安直な解を排除するために、以下では、行列および、その逆行列の成分が全て整数のものについて F 式を考えることにする。

問題 2

逆行列が整数となる条件は何か求めよ。(ヒント: 余因子行列を用いて逆行列を書いてみるとよい。) この条件を満たす行列を用いて F 式が成り立つ行列の組があるかどうか見ていこう。

問題 3

ここからは、問題を分岐して考えていく。まずは、\(n\) が奇数のときを考えよう。\(2\) 乗して単位行列になる \(A, B, C\) を考えると、 \begin{equation} A^{2m+1} = A, \quad B^{2m+1} = B, \quad C^{2m+1} = C, \qquad (m = 1, 2, \dots) \end{equation} なので、同時に \begin{equation} A + B = C \end{equation} となる \(A, B, C\) が見つかれば奇数次の F 式は全て満たされることになる。

\(2\) 乗して単位行列になる行列の、成分に関する制限を示せ。

問題 4

これまでの結果より、奇数次のときに F 式を成立させる行列 \(A, B, C\) の組を求めよ。(ヒント: 問題 2 および 3 の条件を考慮して具体的にいくつか書き出して、\(A + B = C\) となる \(A, B, C\) を探す。)

問題 5

奇数次の場合は存在が示されたので、偶数次の場合を考えていく。 まず、 \begin{equation} M^2 = M \end{equation} となる \(M\) は単位行列しか無いことを示し、奇数次のときに用いた方法ではうまくいかないことを確かめよ。

問題 6

次に奇数次のときの解を一つ見ると、

\begin{equation} \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}^n + \begin{pmatrix} 1 & -1 \\ 0 & -1 \end{pmatrix}^n = \begin{pmatrix} 1 & 0 \\ 1 & -1 \end{pmatrix}^n \end{equation} ただし、\(n\) は奇数。

まず、\(\displaystyle P := \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}\) は \(P^{-1} = P\) であり、また、任意の行列について、左から掛ければ行を入れ替え、右から掛ければ列を入れ替える演算子であることを確かめよ。 そして、\(n = 1\) の場合を考えて、以下の式を得よ。 \begin{equation} E = \begin{pmatrix} 0 & 1 \\ -1 & 1 \end{pmatrix} - \begin{pmatrix} -1 & 1 \\ -1 & 0 \end{pmatrix}. \end{equation} ただし、\(E\) は単位行列である。

問題 7

次に、 \begin{equation} \begin{pmatrix} 0 & 1 \\ -1 & 1 \end{pmatrix} \begin{pmatrix} -1 & 1 \\ -1 & 0 \end{pmatrix} = \begin{pmatrix} -1 & 1 \\ -1 & 0 \end{pmatrix} \begin{pmatrix} 0 & -1 \\ -1 & 1 \end{pmatrix} = - E \end{equation} を確かめよ。

問題 8

問題 6 の両辺を 2 乗して、 \begin{equation} -E = \begin{pmatrix} 0 & 1 \\ -1 & 1 \end{pmatrix}^2 + \begin{pmatrix} -1 & 1 \\ -1 & 0 \end{pmatrix}^2 \end{equation} を得よ。

問題 9

\(2\) 乗して \(-E\) となる行列 \(Z\) を求めよ。 これで、\(2\) 次の場合の解が得られた。

次は偶数次の高次の場合を考えていく。

問題 10

2 次の場合の解から高次の偶数次の解が無いか調べよう。 前問の解を見通しが良いように、 \begin{equation} X^2 + Y^2 = Z^2 \end{equation} とおこう。ここで、\(X, Y, Z\) は、

\begin{equation} X = \begin{pmatrix} 0 & 1 \\ -1 & 1 \end{pmatrix}, \quad Y = \begin{pmatrix} -1 & 1 \\ -1 & 0 \end{pmatrix}, \quad Z = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}. \end{equation} ただし、\(-E\) を作る行列は他に \(Z' = \begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}\) がある。こちらで読み進めても良い。

これら \(X, Y, Z\) をそれぞれ偶数乗してその性質を調べ、次の表を埋めよ (できるだけ \(2\) 乗の形で表すと見通しが良い)。今後のために \(n = 2 m\) とする \(m\) を導入する。

\(m\) \(n\) \(X\) \(Y\) \(Z\) F 式
\(1\) \(2\) \(X^2\) \(Y^2\) \(Z^2\) 満たす
\(2\) \(4\)        
\(3\) \(6\)        
\(4\) \(8\)        
\(5\) \(10\)        
\(6\) \(12\)        
\(7\) \(14\)        

問題 11

\(\alpha^n = \alpha^{2m}\quad(\alpha = X, Y, Z)\) の周期性より、前問で解がある場合と無い場合の \(n\) または \(m\) の条件を求めよ。

問題 12

解が求まらなかった場合の \(n\) または、\(m\) について考えていこう。

やみくもに解を探しても、解が無い可能性があるので、ここで視点を変える。 対角成分の和であるトレース \(\mathrm{Tr} [ A ] = \sum_{k = 1}^2 a_{k,k} = a_{1,1} + a_{2,2}\) の性質に着目する。

\(X^n + Y^n = Z^n\) が成り立っているとすると、両辺のトレースも等しいはずなので、 \begin{equation} \mathrm{Tr} [ X^n + Y^n ] = \mathrm{Tr} [ Z^n ]. \end{equation}

左辺について考えるために、任意の行列 \(A, B\) について、 \begin{equation} \mathrm{Tr} [ A + B ] = \mathrm{Tr} [ A ] + \mathrm{Tr} [ B ] \end{equation} を示せ。 よって、 \begin{equation} \mathrm{Tr} [X^n] + \mathrm{Tr} [Y^n] = \mathrm{Tr} [Z^n] \end{equation} が成り立たなければならない。

問題 13

以上をふまえて、\(n = 4\) の場合を考えていく。 \(4\) 乗は \(2\) 乗の \(2\) 乗なので、まずは \(2\) 乗について考えていく。 \begin{equation} \mathrm{Tr} [ A^2 ] = \mathrm{Tr} [ A ]^2 - 2 \mathrm{det} [ A ] \end{equation} を導け。ここで、\(2 \times 2\) 行列の行列式 \(\mathrm{det} [ A ] = a_{1,1} a_{2,2} - a_{1,2} a_{2,1} \) を用いた。

問題 14

前問の結果を用いて、 \begin{equation} \mathrm{Tr} [ A^4 ] = \mathrm{Tr} [ A ]^4 - 4 \mathrm{Tr} [ A ]^2 \mathrm{det} [ A ] + 2 \mathrm{det} [ A ]^2 \end{equation} を導け。

ここで、問題 2 の結果より、\(\mathrm{det} [ A ] = \pm 1\) という制限があるので、上の式は、 \begin{equation} \mathrm{Tr} [ A^4 ] = \mathrm{Tr} [ A ]^4 \pm 4 \mathrm{Tr} [ A ] + 2 \end{equation} となり、\(A\) はこの式を満たさなければならない。

次回以降は、F 式のトレースに関する制限と、上記各行列のトレースに関する制限を同時に満たす行列があるかどうか見ていく。

問題 15

\(\mathrm{Tr} [A]\) を偶数と奇数に分けて考えよう。
\(\mathrm{Tr} [A]\) が偶数のとき \begin{equation} \mathrm{Tr} [A^4] = (8 \text{の倍数}) + 2 \end{equation} となることを示せ。
同様に \(\mathrm{Tr} [A]\) が奇数のとき \begin{equation} \mathrm{Tr} [A^4] = (8 \text{の倍数}) + 7 \end{equation} となることを示せ。
(ヒント: 奇数の方は、\(-4 = -8 + 4 = (8 \text{の倍数}) + 4\) と考える。)

問題 16

元に戻って、 \begin{equation} \mathrm{Tr} [X^4] + \mathrm{Tr} [Y^4] = \mathrm{Tr} [Z^4] \end{equation} を満たす \(X, Y, Z\) があるか考える。
両辺を \(8\) で割って、余りを比べ、解が無いことを説明せよ。
(ヒント: 左辺と右辺が取りうる余りを書き出して比較する。)
以上より、\(n = 4\) のとき、F 式に解が無いことが分かった。よって、当然 \(n\) が \(4\) の倍数のときにも解は無い。

問題 17

問題 11 の答えをおさらいすると、

\(n\) が偶数で、\(4\) の倍数または \(6\) の倍数でないときは解がある。 そして、それ以外のときは解があるかどうか不明。

 

よって、次は \(n = 6\) について考える。

\(n = 4\) のときと同様に考える。まずは、 \begin{equation} \mathrm{Tr} [A^3] = \mathrm{Tr} [A]^3 - 3 \mathrm{det} [A] \mathrm{Tr} [A] \end{equation} を導け。
そして、これを用いて、 \begin{equation} \mathrm{Tr} [A^6] = \mathrm{Tr} [A]^6 - 6 \mathrm{det} [A] \mathrm{Tr} [A]^4 + 9 \mathrm{det} [A]^2 \mathrm{Tr} [A]^2 - 2 \mathrm{det} [A]^3 \end{equation} を得よ。
よって、\(\mathrm{det} [A] = \pm 1\) を考えて、 \begin{equation} \mathrm{Tr} [A^6] = \mathrm{Tr} [A]^6 \pm 6 \mathrm{Tr} [A]^4 + 9 \mathrm{Tr} [A]^2 \pm 2 \end{equation} を得よ。

問題 18

\(\mathrm{Tr} [A]\) が偶数のとき、 \begin{equation} \mathrm{Tr} [A^6] = (4 \text{の倍数}) + 2, \end{equation} および、\(\mathrm{Tr} [A]\) が奇数のとき、 \begin{equation} \mathrm{Tr} [A^6] = (4 \text{の倍数}) + 1 \end{equation} となることを示せ。

問題 19

よって、元の式について、\(n = 6\) のとき、両辺を \(4\) で割って余りを比較すると、解が無いことを説明せよ。 これより、\(n\) が \(6\) の倍数のときには解が無いことが示せ、全ての場合について結論が得られた。

問題 20

全問題を通しての結論をまとめよ。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

零行列でない、かつ逆行列が存在しその成分が整数となる \(2 \times 2\) の正方行列 \(A, B, C\) について、 \begin{equation} A^n + B^n = C^n \end{equation} を満たす \((A, B, C)\) は、
\(n\) が奇数のとき、 \begin{equation} A = \begin{pmatrix} 0 & 1\\ 1 & 0\end{pmatrix}, \quad B = \begin{pmatrix} 1 & -1\\ 0 & -1\end{pmatrix}, \quad C = \begin{pmatrix} 1 & 0\\ 1 & -1\end{pmatrix} \end{equation} として得られる。
\(n\) が偶数で、\(4\) の倍数でも \(6\) の倍数でもないとき、 \begin{equation} A = \begin{pmatrix} 0 & 1\\ -1 & 1\end{pmatrix}, \quad B = \begin{pmatrix} -1 & 1\\ -1 & 0\end{pmatrix}, \quad C = \begin{pmatrix} 0 & -1\\ 1 & 0\end{pmatrix} \end{equation} として得られる。
一方で、\(n\) が \(4\) の倍数、もしくは \(6\) の倍数の場合は解が無い。

Heart Curve の面積を求めよう。

LeapMind の高橋雅裕です。

この記事は、LeapMind Advent Calendar 2019 の 2 日目の記事です。

 

クリスマスですからね、カップルで楽しめる楽しめない、楽しいクイズと解説をお届けします。

果たして、2 人で愛の大きさは測れるのか?

 

世の中には Heart Curve と呼ばれる素敵な方程式 が存在します。私がネット上で見つけた、式が簡単で、かつ美しい Heart Curve は次の式で与えられます。

\begin{gather} \vec{r} (t) = (16 \sin^3 t, 13 \cos t - 5 \cos 2 t - 2 \cos 3 t - \cos 4 t),\\t: 0 \rightarrow 2 \pi. \end{gather}

 

美しいですね。

 

これは、つまり、\(t\) を \(0\) から \(2\pi\) まで動かしたときに、\(\vec{r} (t)\) はハートを描く位置ベクトルとなる、ということを言っています。

Gnuplot Produced by GNUPLOT 4.6 patchlevel 4 -20 -15 -10 -5 0 5 10 15 -15 -10 -5 0 5 10 15 y x gnuplot_plot_1

問題は、このハートの面積を求めよ!です。

順番にステップバイステップで考えていきましょう。

実際に解くには、たくさん計算する根気と正確さが必要なので、力を合わせて頑張りましょう。

第 1 問

この経路でハートを描くと、ハートはどちら回りに描かれるか?

第 2 問

この経路を逆向きに進む位置ベクトル \(\vec{r} (t)\) はどの様に表されるか? ただし、\(t: 0 \rightarrow 2\pi\)。

第 3 問

この経路の各点での接線ベクトルはどう表されるか?

第 4 問

このハートの面積を求めたい。経路の接線ベクトルが分かっているので、面積分と線積分を繋ぎ合わせる「あの公式」を用いて求められそうだ。実際に求めてみよ!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

はい、ではここから解説です。これ以降は、実際に自分達の頭で考えた人のみ見てくださいね。ネタバレ注意!

 

(長いので知っているところは飛ばしてくださいね。)

 

高校数学の知識でも気合いで解けますが、以下の方がエレガントだったりして・・・?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

この問題は、ストークスの定理を使うとエレガントに解くことができます。線積分と面積分を関連づけるあの定理です。え、知らないですか? 大丈夫です。この記事で勉強しちゃいましょう。

 

ストークスの定理を説明する前に、線積分を知らない人のために、線積分の説明から始める。

積分について

積分を言葉だけで説明すれば、
「進む経路を決めて、ベクトル の中を進み、進行方向のベクトルの成分を全部足す」
ということである。

これだけ理解すれば全て終わりである。

とは言っても、各ことばをまずは理解する必要がある。簡単なことの積み重ねが必要である。以下、順番に用語の説明等を行いながら線積分の理解を試みる。

ベクトル場

ベクトル場というのは、空間上にベクトルがたくさんある状況をイメージすればよい。以下、簡単のために 2 次元で話を進める。

簡単なベクトル場の例として、以下のベクトル (\vec{v}_i (x,y)) を考える。

例 1) \(\quad\vec{v}_1 (x,y) = (x,y)\)

例 2) \(\quad\vec{v}_2 (x,y) = (y,x)\)

例 3) \(\quad\vec{v}_3 (x,y) = (\sin \theta, -\cos \theta), ~(x = r \cos \theta, ~y = r \sin \theta)\)

例 4) \(\quad\vec{v}_4 (x,y) = \frac{1}{\sqrt{x^2+y^2}} (y, -x)\)

上記のベクトルを順番に 2 次元座標に描いていくと、空間上のベクトルをイメージできるので、手順を追って順番に進める。

これを行うときに注意することは、「位置」と「ベクトル」をきちんと区別することである。手続きとしては、以下となる。

  1. 適当な座標 [(1,1) とか] を決める。その点に黒丸を描く。(図1, 3)
  2. 上で選んだ座標をベクトルの式に代入し、ベクトルを得る。
  3. 1 で選んだ座標から、2 で得たベクトルを描く。(図2, 4)
  4. 1 から繰り返す。

以下で、それを具体的にやってみるので、参考にして欲しい。 上の例についての解を以下に置いておくので、まずは自分でやってみて、答を確認してほしい。以上が自分でできるようになれば、とりあえず必要なことは理解できているはずだ。

例 1 の場合について具体的に上記の手続きを実行する。

f:id:MasaYan24:20191201213026p:plain

ベクトル場の描画方法

例 2-4 を同様に図示すると以下のようになる。

f:id:MasaYan24:20191201213309p:plain

ベクトル場の描画例2−4

※ \(\vec{v}_3\) と \(\vec{v}_4\) は描いているベクトルの場所が違うだけで同じベクトル場である。

経路

経路について説明する。図10 のように、青色で示した適当な曲線を考える。この線に沿って計算をするなら、この青色の曲線を経路と呼ぶ。経路の各点は \(\vec{r} (t)\) のように位置ベクトルで表される。そして、パラメーター \(t ~(\in \mathbb{R})\) を変えることで位置ベクトル \(\vec{r} (t)\) の先端は青色の経路の上を \(\vec{r}_0\) から \(\vec{r}_1\) まで動くものとする。\(\vec{r}_0\) を始点、\(\vec{r}_1\) を終点と呼ぶ。

f:id:MasaYan24:20191201213724p:plain

次に、具体的に線積分を行う経路を決める。もちろん後で線積分が計算できるように、数式で表さなければならない。例えば、図11 の経路 \(C_1\) (原点 \(O\) から (1, 0) へ直線的に動く経路) は次のように表すルールにしよう (経路 \(C_1\) なので位置ベクトルを \(\vec{r}_1 (t)\) と表すことにする。)。

f:id:MasaYan24:20191201213758p:plain

\[C_1: \vec{r}_1 (t) = (t, 0), ~t: 0 \rightarrow 1\] パラメーター \(t\) を \(0\) から \(1\) まで連続的に動かすと、\(\vec{r}_1 (t)\) は \(\vec{r}_1 (0) = (0,0)\) から \(\vec{r}_1 (1) = (1,0)\) まで連続的に動くことが分かる。経路の各点はもちろん位置ベクトルで表せるので経路自体も位置ベクトル \(\vec{r}_1\) で表されていることに気づいて欲しい。面倒でも、経路をきちんと書く習慣を付けた方がいいだろう。

他の経路について、必ず自分で経路の式を書こう。ちなみに答えは以下である。

\[C_2: \vec{r}_2 (t) = (1, t), ~t: 0 \rightarrow 1 \]

\[C_3: \vec{r}_3 (t) = (\cos t, \sin t), ~t: 0 \rightarrow \pi/4 \]

\[C_4: \vec{r}_4 (t) = (t,t), ~t: 1 \rightarrow 0 \]

\[C_4': \vec{r}_4' (t) = (t,t), ~t: 1/\sqrt{2} \rightarrow 0 \]

※ 答えは全て一案であり、他のたくさんのパラメーターの指定ができる。 例えば、 \[C_4: \vec{r}_4 (t) = (1 - t, 1 - t), ~t: 0 \rightarrow 1. \]

接線ベクトル

次に、経路に沿って進むときの方向ベクトル、つまり経路の接線ベクトルを求めることを考えよう。図のように、経路のパラメーター \(t\) を少し \(\Delta t\) だけ動かしたときの位置ベクトルの変化を考えれば良い。今、2 次元面内の移動を考えているので、各軸の方向 (\(x\) 方向と \(y\) 方向) の変化率を計算すれば良い。\(\vec{r} (t)\) から \(\vec{r} (t + \Delta t)\) へ動いたときの変位の \(x\) 成分と \(y\) 成分はそれぞれ、\(\Delta x (t) = x (t+\Delta t) - x (t)\)、\(\Delta y (t) = y (t + \Delta t) - y (t)\) なので、ベクトルの変位は、 \[\Delta \vec{r} (t) = \vec{r} (t + \Delta t) - \vec{r} (t) = (\Delta x (t), \Delta y (t)).\] そして変化率は、\(\Delta t\) 動く間の変位 (の \(\Delta t \rightarrow 0\) の極限値) なので、 \[\lim_{\Delta t \rightarrow 0} \frac{x (t+\Delta t) - x (t)}{\Delta t} = \frac{dx}{dt}, \quad \lim_{\Delta t \rightarrow 0} \frac{y (t+\Delta t) - y (t)}{\Delta t} = \frac{dy}{dt},\] を用いて、接線ベクトルは \[\frac{d\vec{r}}{dt} = \lim_{\Delta t \rightarrow 0} \frac{\Delta \vec{r}}{\Delta t} = \left ( \frac{dx}{dt}, \frac{dy}{dt} \right ).\]

f:id:MasaYan24:20191201213831p:plain

内積

内積の復習を行っておく。

内積はどういうものだったかというと、図13 のように片方のベクトルを基準に見たときの射影成分のかけ算という意味だった。射影というのは、ベクトルにライトを当てたときにできる影である。

f:id:MasaYan24:20191201213849p:plain

図では \(\vec{r}_1\) の射影成分 (影) を青線で表し、\(\vec{r}_2\) の射影成分を赤線で表している。2 つの図では光の当たる方向が違う。しかし、どちらで考えても、 \[\vec{r}_1 \cdot \vec{r}_2 = \left | \vec{r}_1 \right | \left ( \left | \vec{r}_2 \right | \cos \theta \right ) = \left ( \left | \vec{r}_1 \right | \cos \theta \right ) \left | \vec{r}_2 \right |. \] (つまり、赤線の長さ \(\times\) 青線の長さ)となり、値は変わらない。

そして、線積分の問題と関連づけると、片方のベクトルを進行方向の接線ベクトル、もう片方のベクトルをその場所でのベクトル場と思えば、「進行方向のベクトルの成分」はこれらのベクトルの内積に等しいことが分かる。

変数変換

念のため、変数変換も復習しておこう。

\(x\) の関数 \(f = f(x)\) を考える。次の積分 \[I = \int_{x_0}^{x_1} f (x) ~dx \] を考えるとき、実は \(x\) が \(t\) の関数であったとするなら \(x = x (t)\)、変数変換を行うと、上の積分は、 \[I = \int_{t_0}^{t_1} f (x(t)) \frac{dx}{dt} dt\] と書ける。ここで、\(t (x_0) = t_0\)、\(t (x_1) = t_1\) とおいた。

積分

結局、最初に文章で書いた内容を数式で表すと、線積分 \(I\) は以下になる。

\[I = \int_C \vec{v} (\vec{r}) \cdot d\vec{r}.\]

つまり、位置 \(\vec{r}\) での進行方向のベクトル \(d\vec{r}\) とベクトル場 \(\vec{v} (\vec{r})\) の内積を、経路 \(C\) 全体にわたって足し合わせる (\(\int_C\)) 計算を行うことを意味する。ここで、\(\vec{v} (\vec{r})\) と \(d\vec{r}\) は内積を行っているので、内積記号「\(\cdot\)」を忘れずに書こう。

\(d\vec{r}\) がどういうベクトルか復習することが重要である。接線ベクトルのところで学んだように、ある位置 \(\vec{r}\) とすぐそのとなりの位置 \(\vec{r} + d\vec{r}\) を考えると、\(d\vec{r}\) はその接線ベクトルである。

一方で、このままでは抽象的過ぎて、実際に計算するときには、以下の変数変換を行う。 \[I = \int_{t_0}^{t_1} \vec{v} (\vec{r} (t)) \cdot \frac{d\vec{r}(t)}{dt}dt\] ここで、経路 \(C\) の始点をパラメータで \(t_0\)、終点を \(t_1\) で表した。変数変換を、単純にベクトルのそれぞれの成分について行っている。この時点では、\(\frac{d\vec{r}(t)}{dt}\) はベクトルであることに注意すること。よって内積の記号「\(\cdot\)」を忘れず書こう。

再び、簡単な例として、ベクトル場が、\(\vec{v} (x,y) = (x, y)\)、経路を図11 の \(C_1\) として線積分を計算してみよう。前にやったように、\(C_1: \vec{r}_1 (t) = (t,0), t:0 \rightarrow 1\) である。形式的には線積分は、 \[I = \int_{(0,0)}^{(1,0)} \vec{v} (\vec{r}) \cdot d\vec{r} = \int_0^1 \vec{v} (\vec{r} (t)) \cdot \frac{d\vec{r} (t)}{dt} dt\] となる。変数変換の部分は、 \[\frac{d\vec{r} (t)}{dt} = \frac{d}{dt} (t, 0) = (1,0)\] となり、それに合わせてベクトルは、\(\vec{v} (x,y) = (x,y)\) なので、 \[\vec{v} (\vec{r} (t)) = \vec{v} (t,0) = (t, 0)\] となる。これらを代入して、 \begin{align*} I =& \int_0^1 \vec{v} (\vec{r} (t)) \cdot \frac{d\vec{r} (t)}{dt} dt \\=& \int_0^1 (t, 0) \cdot (1,0) ~dt = \int_0^1 t ~dt \\=& \left [ \frac{1}{2} t^2 \right ]_0^1 = \frac{1}{2}. \end{align*}

 

やっと、ストークスの定理が説明できる・・・(長い orz)。

ストークスの定理について

周回線積分と面積分をつなぎ合わせるストークスの定理について説明する。

概要

ストークスの定理は以下の式で表される。 \begin{equation} \oint_C \vec{A} (\vec{r}) \cdot d\vec{r} = \iint_S \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) ~d^2 S \end{equation}

つまり、ベクトル場 \(\vec{A} (\vec{r}) \) が与えられたとき、閉経路 (閉じた経路: スタートとゴールが同じで途中で交わらない経路) に沿って行った線積分 (左辺) は、ベクトル場 \(\vec{A} (\vec{r})\) のローテーション (回転) が閉経路 \(C\) の作る面 \(S\) を垂直に貫く成分の和 (右辺) に等しい、ということを言っている。

導出

まずは、閉経路 \(C\) の線積分はそれを小さく分割した閉経路 \(c_1, c_2, \dots\) の線積分の和に等しいことに気づくだろう。 図のように隣り合う \(c_i, c_{i+1}\) の線積分の重なる部分の寄与は打ち消しあうからである。

図: 経路の分割

つまり、線積分は以下のように分解できる。 \begin{align} \oint_C \vec{A} (\vec{r}) \cdot d\vec{r} & = \oint_{c_1} \vec{A} (\vec{r}) \cdot d\vec{r} + \oint_{c_2} \vec{A} (\vec{r}) \cdot d\vec{r} + \dots \\& = \sum_n \oint_{c_n} \vec{A} (\vec{r}) \cdot d\vec{r} \end{align}

つぎに、各経路 \(c_i\) を十分小さくとって、一辺 \(\epsilon ~(\ll 1)\) の正方形にする。

すると、この線積分は \(\vec{A} (\vec{r})\) の経路に対する回転具合を表すのではないだろうか。ベクトル場の局所的な回転具合 (回転の勢い) を表す計算はローテーションである。

次にこれを説明する。

まず、今考えている微小な正方形 (1 辺 \(\epsilon)\) の中心の位置を \(\vec{r}\) とする。分かりやすいように、\(x\) 軸と \(y\) 軸ににそれぞれ並行な 2 辺で囲まれる正方形を考えよう。これは適当に座標系を変換すれば一般的な話に拡張可能だ。各辺上のベクトル場は、辺の中点の値を用いよう。つまり、下右上左の各辺上のベクトル場は、\(\vec{A} (\vec{r} - \frac{\epsilon}{2} \vec{e}_y)\)、\(\vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_x)\)、\(\vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_y)\)、\(\vec{A} (\vec{r} - \frac{\epsilon}{2} \vec{e}_x)\) と表される。ここで、\(\vec{e}_x, \vec{e}_y\) は \(x, y\) 方向の単位ベクトルである。

これを用いると、この微小正方形の一周線積分はどうなるかというと、 \begin{align} &\oint_{c_i} \vec{A} (\vec{r}) \cdot d\vec{r}\\&\simeq \vec{A} (\vec{r} - \frac{\epsilon}{2} \vec{e}_y) \cdot \epsilon \vec{e}_x + \vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_x) \cdot \epsilon \vec{e}_y + \vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_y) \cdot (- \epsilon) \vec{e}_x + \vec{A} ( \vec{r} - \frac{\epsilon}{2} \vec{e}_x) \cdot (- \epsilon) \vec{e}_y \\&= \epsilon \left [ A_x (\vec{r} - \frac{\epsilon}{2} \vec{e}_y) + A_y (\vec{r} + \frac{\epsilon}{2} \vec{e}_x) - A_x (\vec{r} + \frac{\epsilon}{2} \vec{e}_y) - A_y ( \vec{r} - \frac{\epsilon}{2} \vec{e}_x) \right ] \end{align} ここで、\(A_x, A_y\) は \(\vec{A}\) の \(x, y\) 成分を表す。

さらに、\(\epsilon\) の 1 次までで近似すると、\begin{align} &\oint_{c_i} \vec{A} (\vec{r}) \cdot d\vec{r} \\ &\simeq \epsilon \left [ A_x (\vec{r}) - \frac{\epsilon}{2} \frac{\partial A_x (\vec{r})}{\partial y} + A_y (\vec{r}) + \frac{\epsilon}{2} \frac{\partial A_y (\vec{r})}{\partial x} - A_x (\vec{r}) - \frac{\epsilon}{2} \frac{\partial A_x (\vec{r})}{\partial y} - A_y (\vec{r}) + \frac{\epsilon}{2} \frac{\partial A_y (\vec{r})}{\partial x} \right ]\\&= \epsilon^2 \left [ \frac{\partial A_y (\vec{r})}{\partial x} - \frac{\partial A_x (\vec{r})}{\partial y} \right ] \\&= \epsilon^2 \left [ \vec{\nabla} \times \vec{A} (\vec{r}) \right ] \cdot \vec{e}_z \end{align}

ここでは簡単のために、\(xy\)-平面に並行な微小正方形を考えたので、\(z\) 軸方向の単位ベクトル \(\vec{e}_z\) が現れたが、一般の場合には、微小正方形の法線ベクトル \(\vec{n} (\vec{r})\) が現れるはずです。

よって、一般的には、\(\left [ \vec{\nabla} \times \vec{A} (\vec{r}) \right ] \cdot \vec{n} (\vec{r})\) を上の線積分の代わりに用いて、 \begin{equation} \sum_n \oint_{c_n} \vec{A} (\vec{r}) \cdot d\vec{r} \simeq \sum_n \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) \epsilon^2 \end{equation} となるだろう。

これをさらに右辺について、\(\epsilon \rightarrow 0\) の極限を取ることを考えると、これは微小面積 \(\epsilon^2\) について、\(\left [ \vec{\nabla} \times \vec{A} (\vec{r}) \right ] \cdot \vec{n} (\vec{r})\) を足し合わせる、面積分に置き換わることが分かるので、\begin{equation} \sum_n \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) \epsilon^2 \simeq \iint_S \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) ~d^2 S \end{equation} が得られる。

 

さぁ、ここまで全部読んだ読者はいるだろうか・・・。

ここまで来て、あー、なるほど、解ける、と気が付けば、かなりスッキリしているはずだ。おめでとう!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

もう少し、最後のヒントを。

結局線積分を計算するということが大体分かったと思う。では、ベクトル場はどうするのか?

 

 

それは、、、

 

 

積分を求めたいので、ベクトル場のローテーション部分に注目して、その被積分関数が定数になるようにベクトル場を選べばいいのではないか?

 

そうすれば、面積の定数倍、正確には、面積かけるベクトル場のローテーションの値、となるはずだ。

 

 

積分の結果を、この値で割れば、

 

 

愛の

 

 

大きさが

 

 

分かる・・・(感動のフィナーレ)

 

 

お付き合いいだだきありがとうございました m(_ _)m