34歳からの数学博士

数学徒・プログラマ・一児の父

2015/07/24 「第4回 プログラマのための数学勉強会」レポート(動画&資料つき)

こちらは 7/24(金) に開催された「第4回 プログラマのための数学勉強会」のレポート記事です。4ヶ月遅れのレポートとなってしまい申し訳ありませんm(_ _)m

それでは5つの発表の動画&資料をどうぞ!

1. 「何もないところから数を作る」@taketo1024

f:id:taketo1024:20151123145404j:plain

「数」は数学の歴史と共に古代より使われてきましたが、19世紀から20世紀にかけて「実数」が数学者によって厳密に定義されることとなりました。「数」は天から与えられたものではなく、人間の手(頭?)で作ることができるということを、プログラマ流の考え方で解説するという試みです。


[ 資料 ]

2. 「今日からはじめる微分方程式」Ryo Kaji

f:id:taketo1024:20151123150824j:plain

制御工学における制御モデルを表現・解析する上で「微分方程式」が使われます。一般に非線形の微分方程式は解を求めることができませんが、RC 回路など特定の系においては「ラプラス変換」と「変換表」を用いることで特殊解を求めることができます。


[ 資料 ]

3. 「忙しい人のための楕円曲線入門」@srtk86

f:id:taketo1024:20151123151450j:plain

「楕円曲線」は現代数学でも広く研究されており、フェルマーの最終定理の証明においても使われました。射影平面上の楕円曲線には演算を定義することができ(数直線上で二つの数の足し算が定義できるように)、標準形に変換することでそれはとても考えやすくなります(難易度は高めの発表です…!)


[ 資料 ]

4. 「コンピュータにおける数表現」@butchi_y

f:id:taketo1024:20151123151549j:plain

私たちが普通に数を表すときは 10進数、プログラマであれば 2進数・8進数・16進数 も使いますが、一般の N 進法以外にも数を表現する面白い方法はある! Excel を使って黄金進法・フィボナッチ記数法で書く方法を説明し、最後には独自で考案したという「物智数」も紹介してくれました。


[ 資料 ]

5. 「音楽とトポロジー」@simizut22

f:id:taketo1024:20151123151606j:plain

音楽を数学的な空間に入れてしまおう!音楽のリズムやピッチに対して「距離」を定義して音楽をその空間に入れたら、それを分類・解析する方法として Persistent Homology による TDA(Topological Data Analysis)が使えるという発表です。(この発表は理解できなくても心配ないですw)


[ 資料 ]

sponsored by CodeIQ

f:id:taketo1024:20151123152604j:plain

CodeIQ さんからのフードスポンサーで、おにぎりとお茶を提供して頂きました。ありがとうございます!


togetter.com

https://codeiq.jp/magazine/2015/08/28348/codeiq.jp

「第3回 プログラマのための数学勉強会」開催しました!(動画&資料つき)

f:id:taketo1024:20150525154952j:plain

どうも、佐野です。5/22(金)「第3回 プログラマのための数学勉強会」が開催されました。今回も各セッションの動画・資料と共に、簡単に内容のご紹介をさせて頂きます。

1. 「プログラマのための線形代数再入門 3」 - taketo1024

f:id:taketo1024:20150525155037j:plain

線形代数再入門シリーズのラストとして、「基底変換と固有値・固有ベクトル」について発表しました。基底変換(座標変換)は応用においても頻繁に使われる手段ですが、2つの座標系を同時に考えるというのはなかなか難しいものです。今回は変換を簡単に表現するという動機で、基底変換と固有値・固有ベクトルの仕組みが掴めるような構成にしてみました。

最後には一般のベクトル空間の話にも触れ、フィボナッチ数列の一般項を求めるのを固有値・固有ベクトル問題として見る方法を紹介しました。僕が大学で線形代数を学んで一番感動したのは「今まで習ったものほとんどベクトルだったんじゃないか!」というところだったので、その話をせずには終われませんでした。

[資料]

※ たまたま近い時期に「固有値・固有ベクトルを可視化するプログラム」を公開されていた方がいたので、こちらで紹介させて頂きます!

2. 「五次方程式が代数的に解けないわけ」 - tsujimotter

f:id:taketo1024:20150525162044j:plain

日曜数学者 id:tsujimotter さんの「ガロア理論」の発表です。高校の教科書にコラムとして載っていた「三次方程式、四次方程式の解の公式」の下に「五次方程式は解けない」とサラッと書いてあったのがガロア理論との出会いだったとのことです。

「五次方程式が解けないことを証明する理論」というと後ろ向きな感じがしてしまいますが、「方程式が解けるとはどういうことか」を突き詰めて、無限にある可能性の中からコアとなる構造を取り出すことでその性質を明らかにしていく壮大な謎解きの理論だと思えば、ガロア理論のワクワク感が感じられるかと思います。

終盤「群」に慣れていない方は難しく感じたかもしれません。基本領域ゼータ関数 など難しいものを次々と目に見えるものに変えてしまう辻さんなら、「大きな群でも見えるようになってしまう何か」をきっと作ってくれることでしょう…!(個人的希望)

[資料]

3. 「つながり方・まがり方・大きさ」 - matsumoring

f:id:taketo1024:20150525155211j:plain

学生時代に位相幾何学を専攻されていた matsumoring さんによる幾何学の発表です。小学校や中学校で習った図形には、実は不思議な性質が隠れています。正多面体の頂点・辺・面の数を数えていくと、そこに共通の法則がある。三角形の内角の和が 180° というのも、平面にない三角形については実は成り立たない。

身近な図形の性質を一つ一つ調べながら、その関係性に成り立たせている法則を明らかにし、最終的には「つながり方・まがり方・大きさ」が一般の立体においても一つの式で関係しているという「ガウス・ボンネの定理」まで到達するという驚きのプレゼンでした。

[資料]

4. 「線形計画法と整数計画法」 - kaneshin

f:id:taketo1024:20150525155332j:plain

株式会社エウレカの開発者 kaneshin さんの発表です。与えられた条件の中で目的の関数を最大・最小化する「最適化問題」の中で、特に条件・目的関数が線形である「線形計画問題」とさらにそれらが整数値を取る「整数計画問題」に関する解説でした。

連続値であれば条件を満たす領域における目的関数の等高線のギリギリのところを求めれば良いものが、整数値の場合は必ずしもそのようなやり方ではうまくいかない。「整数値は高々有限」などと高をくくっていると、膨大な量の候補の前には計算が追いつかなくなる。

このような計画法は実用上有用だし、解法は企業や国家が独占してオープンにされていないことが多いのでまだまだ研究の余地が残されているということです。

[資料]

5. 「物理における微分方程式と数値計算」 - 久徳浩太郎

f:id:taketo1024:20150525155434j:plain

理化学研究所で重力波・宇宙物理の研究をしている久徳さんによる微分方程式の発表です。ユニークな語り口調で、微分方程式とは何か、どうやって解くか、どういう場合に解けないか、解けない場合はどうするか、といったことを順に解説してくれました。

随所で研究者ならではキレがあって聞いていて楽しかったです。例えばスーパーコンピュータ「京」に突っ込むプログラムの正当性を検証するために、ブラックホールの周りでガウス・ボンネの定理が成り立っているかどうかをテストしたりするんだとか。テストの重要性を説くエンジニアはたくさんいますが、こんなテストコードを書いたことのある人は滅多にいないと思います。

[資料]

所感&反省

今回はだいぶ数学色の強い会になったと思います。数学好きな人は楽しめる内容だったとは思いますが、せっかくプログラマの方々に集まって頂いているので、何か簡単なデモアプリを作るとか、そういう見せ場もあった方が良かったかなと思いました。

あと個人的には資料の作り方をもっと工夫したい!黒板にスラスラと書いていくようなライブ感をスライドで表現できたら楽しいだろうなと思います。なんか良い感じの iPad アプリないかな。自分で作ろうかな。

それでは、また次回をお楽しみに!

※ 今回は馬場彩さんに写真を撮影していただきました。ありがとうございます!


https://codeiq.jp/magazine/2015/07/25421/

「第2回 プログラマのための数学勉強会」開催しました!(動画&資料つき)

どうも、佐野です。

3/27(金)「第2回 プログラマのための数学勉強会」が開催されました。今回も多くの方にご参加頂き、数学愛ほとばしるセッションの数々をお送りできて嬉しく思っております。各セッションの動画・資料と共に、簡単に内容のご紹介をさせて頂きます。

1. 「プログラマのための線形代数再入門 2」 - 佐野岳人


[資料]

線形代数再入門の続編として行列式・逆行列について発表しました。高校や大学で行列式を習うときは低次の場合の計算法だけか、あるいは置換を使ったガチな定義を習うかのどちらかと思うのですが、「そもそもこれは何なのか」をプログラマが納得できるように、普段見慣れているであろう「要件・仕様・実装」のフォーマットでその意味と計算法について解説することを試みました。

数学科卒というと計算が得意とか暗算が速いとか思われがちですが、僕は自分でも悲しくなるほど計算が遅くよく間違います。掃き出し法による逆行列計算は跳び箱と同じぐらい苦手でした。幸い今はコンピュータがあるので、学習の重点は人間の計算の速度を上げることよりも原理を正しく理解することに置いた方がいいんじゃないか、という僕なりの提案も込めてあります。

次回は線形代数シリーズのラストとして「基底変換、固有値、そしてその先」を発表しようと思います。あまり楽しくない地道な基礎固めの先で「スカッ!」と応用範囲が広がるところに、この分野の一つの感動があると思います。

2. 「時計の世界の整数論」 - 辻順平


[資料]

日曜数学者 id:tsujimotter さんの発表です。「数」は 1, 2, 3, ... と真っ直ぐ無限に伸びていくものだけではありません。有限個の数だけからなる整数の剰余類環とその法則を「時計の世界の数」として分かりやすく親しみやすく解説してくれました。

参加者に時計の数の演算表を配り、みんなで法則を見つけてみようというスタイルも楽しかったです。例えばフェルマーの小定理  n^{p - 1} \equiv 1 は公式だけ覚えようとすると「肩に乗ってるのが  n だっけ  p だっけ…」とあやふやになりますが、自分で表を眺めてみて「表の右側が全部  1」と気づいた人はもう間違うこともないでしょう。

発表後の質疑応答で想定外の法則が見つけ出され、その場で証明されるという素敵なハプニングもあり、参加型ならではの面白さを体験することができました。

3. 「フーリエ変換と画像圧縮」 - 武田祐一


[資料]

株式会社ミクシィの iOS アプリ開発者であり講師もされている武田さんの発表です。今や誰もが当たり前のものとして使っている JPEG 画像ですが、これはどうしてファイルサイズが小さく納まるんでしょうか?もし画像の保存形式がピクセルごとの色情報を保持する BMP しかなかったら、僕たちがスマホやデジカメに収められる写真の数は 1/8 以下になってしまいます。

周期関数は正弦波の重ね合わせで書けるという「フーリエの定理」を数式とグラフで解説しながら、フーリエ変換・離散フーリエ変換・2次元フーリエ変換と話を進め、最後に画像を2次元の波の重ね合わせに分解して、圧縮のために情報を捨てる仕組みを解説してくれました。

波の重ね合わせで画像が復元されると自然に拍手が。理屈は分かってもやはり不思議ですよね…!

4. 「証明プログラミング入門2」 - 門脇香子


[資料, サンプルコード]

出ました、お茶の水女子大学修士1年、門脇さんのディープな発表です。門脇さんは「情報科学若手の会 冬の陣2015」で証明プログラミングの発表をしていて、発表時間が短かったからか僕は全く分からなかったので今回30分の発表をお願いしたのですが、やはり全くわかりませんでした(笑)

僕の理解では Agda では実装が証明に対応していて、コンパイルエラーが吐かれなければその証明な無謬である、ということなのかなと(間違っていたら殴ってください)。「依存型」を理解することが Agda の文法を読めるようになるキーなんだろうなと思います。

お茶女の情報科では大学院で Agda を学ぶそうです。本人曰く「型の感覚はある日突然悟れるもの」だそうですが、逆に誰にでもアクセスできるものを通して悟りを経験できるのはありがたいとも言えます。分かりやすいというのは大事なことですが、全くわからない(けど何故か面白い)というのもまた崇高なものだと感じました。

5. 「エニグマ暗号とはなんだったのか」 - 堀川隆弘


[資料]

「いま日本で最もエニグマに詳しい人」InfoLens, Inc. CTO 堀川さんによる発表です。現在上映中の映画「イミテーション・ゲーム」の主題でもあるエニグマ暗号機、それがどういう作りになっていて数学者たちはいかにそれを解読したかを解説する完全にガチな発表です。

堀川さんはご自身でもアラン・チューリングの論文を読んで研究をしたそうです。数学的に見れば暗号機はアルファベット26文字の置換の組み合わせで、シラミつぶしにやれば150兆ものパターンを試さなければいけないものを対称性や巡回性に注目することで人間に扱える個数に絞り込むことができる、というのがその主旨のようです。

僕はこの日に向けてちゃんと予習(別名、映画鑑賞)をしてきました。映画ではアラン・チューリングが独力でエニグマを解読したようなストーリーになっていましたが、実際にはその前にポーランド人数学者レイフェスキが実物の暗号機がない中で傍受した暗号からエニグマ機の仕組みをロジカルに解明していた、というのはとても興味深い話でした。これは3時間コースで聞きたかったですね。

「プログラマのための」…?

今回もだいぶガチな内容揃いとなり、後半頭がショートしてしまった人も多いのではないかと思います。終了後に知り合いから冗談半分に「プログラマのための、ではないですよね」と言われたのですが、皆さんはどのように感じられたでしょうか。

「プログラマのための」というと「プログラミングに使える」と捉えられるかとは思うのですが、僕は直接使えるものだけが役に立つという訳ではないと思います。

ある問題を別の角度から見てみる、今までこうだと思っていたものが丸ごと逆転してしまう、難しいことを集中して考える、全く分からないものに出くわして愕然とする、積年のモヤモヤが一瞬で晴れる、簡単な規則が重なり合って複雑な現象となって現れる、複雑さの中から美しい性質が引き出される…数学によって得られるこういった経験や知恵はプログラミングに限らず生きる上で役に立つものですし、特にプログラマは日々の鍛錬によってそれを受容するメソッドが備わっていることが多いんじゃないかと思います。

そういう訳で今後も役に立つ数学はもちろん、そうでない(ように感じられる)数学の話も聞いて楽しめるイベントにしたいなと思っています。

発表者募集中!

数学好きな発表者あってのイベントなので、良いネタをお持ちの方は是非登壇をご検討下さい!

それでは、また次回(5月末を予定)お会いしましょう!


Facebookページ:

ツイートまとめ:

辻さんのレポート記事:
tsujimotter.hatenablog.com

CodeIQさんのレポート記事:
https://codeiq.jp/magazine/2015/04/23350/codeiq.jp