はむかず! https://hamukazu.com 加藤公一のページ Tue, 28 Jan 2020 09:39:58 +0000 ja hourly 1 https://wordpress.org/?v=6.5.5 やっとhttpsに対応! https://hamukazu.com/2020/01/28/finally-https/ https://hamukazu.com/2020/01/28/finally-https/#respond <![CDATA[hamukazu]]> Tue, 28 Jan 2020 09:00:41 +0000 <![CDATA[技術]]> <![CDATA[雑感]]> https://hamukazu.com/?p=980 <![CDATA[いまさら遅いだろというツッコミが来そうだが、やっとhttpsに対応した。いままでめんどくさくくてほうっておいたのだが、httpsにしないとGoogle Chromeがブロックするというので、重い腰をあげた。]]> <![CDATA[

いまさら遅いだろというツッコミが来そうだが、やっとhttpsに対応した。いままでめんどくさくくてほうっておいたのだが、httpsにしないとGoogle Chromeがブロックするというので、重い腰をあげた。

やってみたらそんなに難しくなかった。これならもっと早くやっておけばよかったかも。以下作業メモ。

ロリポップサーバを使ってるのだが、まずロリポップのダッシュボードで「独自SSL証明書導入」というメニューを選び、証明書を導入。次にWordpressのダッシュボードから、「設定」→「一般」を選び、「WordPress アドレス」と「サイトアドレス」をhttpsに変更。そして.htaccessに以下を追加。

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=31,L]

そもそも最近全然記事書いてないしこのブログ続けるのかという問題があるが、過去の記事へのアクセスがそれなりにあるようなので。

]]>
https://hamukazu.com/2020/01/28/finally-https/feed/ 0
2019年の素数日 https://hamukazu.com/2019/01/01/prime-days-2019/ https://hamukazu.com/2019/01/01/prime-days-2019/#comments <![CDATA[hamukazu]]> Tue, 01 Jan 2019 11:06:59 +0000 <![CDATA[未分類]]> <![CDATA[数学]]> <![CDATA[素数]]> http://hamukazu.com/?p=974 <![CDATA[みなさまあけましておめでとうございます。 ということで、新年恒例の素数初めの儀。 以下が今年の素数日:  今年は大晦日が素数日だった。 任意の年の素数日を計算するにはこちら参照]]> <![CDATA[

みなさまあけましておめでとうございます。

ということで、新年恒例の素数初めの儀。

以下が今年の素数日:

20190221
20190227
20190301
20190319
20190323
20190421
20190523
20190529
20190601
20190613
20190719
20190811
20190823
20190913
20191009
20191027
20191109
20191117
20191231

 今年は大晦日が素数日だった。

任意の年の素数日を計算するにはこちら参照

]]>
https://hamukazu.com/2019/01/01/prime-days-2019/feed/ 1
書評:独学プログラマー https://hamukazu.com/2018/03/02/self-taught-programmer/ https://hamukazu.com/2018/03/02/self-taught-programmer/#respond <![CDATA[hamukazu]]> Fri, 02 Mar 2018 09:46:59 +0000 <![CDATA[技術]]> <![CDATA[書評]]> <![CDATA[Python]]> <![CDATA[プログラミング]]> <![CDATA[ライフハック]]> http://hamukazu.com/?p=959 <![CDATA[献本をいただいたので珍しく書評を書いてみる。 結論をいうと斬新なコンセプトのとてもいい本だと思う。対象読者は書名のとおり、これから独学でプログラマーをめざす人であろう。文系出身の人も含めてプログラミングの仕事に興味がある… 続きを読む »]]> <![CDATA[


献本をいただいたので珍しく書評を書いてみる。

結論をいうと斬新なコンセプトのとてもいい本だと思う。対象読者は書名のとおり、これから独学でプログラマーをめざす人であろう。文系出身の人も含めてプログラミングの仕事に興味があるのだがどこから勉強を始めればいいかわからないという人にはお薦めである。そして自分の周りをみていると、最近そういう人は増えているように見える。

著者は大学で政治学を学んだアメリカ人であり、彼自身独学でプログラミングを学んでいて、そのノウハウが詰まっている。

序文にも書いてあるが、この本はPythonの解説をするがPythonを身につけることを主眼にしたものではない。最初に学ぶ言語はなんだっていいのだが、実際に言語の学習の部分を抽象化したまま話をすすめることはできないのでPythonを選択したというスタンスであろう。

Pythonの説明はある程度網羅的であり、これであるレベルまでは十分学習可能だとは思うが、一般的なPythonの入門書と比べるとページ数も少なく不親切な部分もあるかと思う。しかし目的が違うのだからそこは比べてもしょうがない。この本がよいのはそれ以降のところである。Bashの使い方、データ構造、アルゴリズム、バージョン管理、エンジニアとしてのマインドセットのあり方、などの部分だと思う。特にこの章立ての順序が絶妙である。まずはつべこべいわずコードを書け、ツールを使え、マインドセットだの言い出すのはそれからだ、という気持ちが感じられる。

最後は仕事の探し方と学び続ける方法という、エンジニアとしては一番大事なことで締めくくられる。とても意識の高い締めくくり方をするのだが、まずはコードを書け!で始まってるお陰で意識の高さが上滑りしているような印象を受けないのがよい。

最後に、仕事の選び方については、この本はアメリカでの求職が前提で、日本では事情が違う部分もあるので注意が必要である。独学でプログラミングを学んだ直後だと実績がないのでそんなに良い条件はないだろうというのは日米共通だとは思うが、日本の場合とくに技術軽視かつ長時間労働という会社を選んでしまうと今後のステップアップがなかなかできないので気をつける必要がある。

]]>
https://hamukazu.com/2018/03/02/self-taught-programmer/feed/ 0
2018年の素数日 https://hamukazu.com/2018/01/05/prime-days-2018/ https://hamukazu.com/2018/01/05/prime-days-2018/#respond <![CDATA[hamukazu]]> Fri, 05 Jan 2018 09:22:19 +0000 <![CDATA[数学]]> http://hamukazu.com/?p=954 <![CDATA[毎年恒例の素数初めの儀。 去年にウェブシステムを作ってしまったので別にブログに書かなくても各自計算してもらえればいいのだが、一応重要な年中行事としてやっておかなければと思った。 ということで今年の素数日: 2018012… 続きを読む »]]> <![CDATA[

毎年恒例の素数初めの儀。

去年ウェブシステムを作ってしまったので別にブログに書かなくても各自計算してもらえればいいのだが、一応重要な年中行事としてやっておかなければと思った。

ということで今年の素数日:

20180123
20180213
20180221
20180311
20180327
20180509
20180609
20180621
20180627
20180707
20180731
20180801
20180807
20181019
20181121
20181209
20181223
20181229

ということで、今年最初の素数日は1月23日です。

]]>
https://hamukazu.com/2018/01/05/prime-days-2018/feed/ 0
SymPyの二重根号ソルバで遊んでみた https://hamukazu.com/2017/10/17/sympy-sqrtdenest/ https://hamukazu.com/2017/10/17/sympy-sqrtdenest/#respond <![CDATA[hamukazu]]> Tue, 17 Oct 2017 13:11:04 +0000 <![CDATA[技術]]> <![CDATA[数学]]> <![CDATA[未分類]]> http://hamukazu.com/?p=942 <![CDATA[個人的には、シンボリック計算といえば二重根号が重要だと思っている。\(\sqrt{8+2\sqrt{15}}=\sqrt{3}+\sqrt{5}\)とかというやつだ。二重根号外しを二重にやらなければいけないケースにどのく… 続きを読む »]]> <![CDATA[


個人的には、シンボリック計算といえば二重根号が重要だと思っている。\(\sqrt{8+2\sqrt{15}}=\sqrt{3}+\sqrt{5}\)とかというやつだ。二重根号外しを二重にやらなければいけないケースにどのくらい対応できているか試してみた。

今回のコードはすべてここにおいてある。

まず、
\[
\sqrt{2}+\sqrt{3}=\sqrt{\left(\sqrt{2}+\sqrt{3}\right)^2}=\sqrt{2\sqrt{6}+5}
=\sqrt{\sqrt{\left(2\sqrt{6}+5\right)^2}} = \sqrt{\sqrt{20\sqrt{6}+49}}
\]
を正しく計算できるか試してみる。


\(\sqrt{\sqrt{}}\)が勝手に\(\sqrt[4]{}\)にまとめられてて、ここがネックになってここから動かないようだ。

次に
$$
\sqrt{2}+\sqrt{3}=\sqrt{2\sqrt{6}+5}=\sqrt{1+(2\sqrt{6}+4)}
=\sqrt{1+\sqrt{\left(2\sqrt{6}+4\right)^2}} = \sqrt{1+\sqrt{16\sqrt{6}+40}}
$$
を計算できるか試してみる。


今度はうまくいった。

つまり2つのルートが勝手に結合されてしまうケースではうまくいかないが、そうでない場合はうまくいくようだ。勝手に結合されるケースでももしかしたらヒントかなにかを与えたらうまくいくのかもしれないが、よくわからない。

最後に高校数学の公式の復習。

定理:
$$\sqrt{(a+b)+2\sqrt{ab}}=\sqrt{a}+\sqrt{b}$$
$$\sqrt{(a+b)-2\sqrt{ab}}=\sqrt{a}-\sqrt{b}$$
(ただし\(a>b\)とする)

証明:(上の式だけ)
$$\sqrt{(a+b)+2\sqrt{ab}}=\sqrt{(\sqrt{a})^2+2\sqrt{a}\sqrt{b}+(\sqrt{b})^2}
=\sqrt{ \left(\sqrt{a}+\sqrt{b}\right)^2}=\sqrt{a}+\sqrt{b}
$$

最後に昔の恩師の書いた高校数学の参考書へのアフィリエイトリンクを貼っておく。

]]>
https://hamukazu.com/2017/10/17/sympy-sqrtdenest/feed/ 0
ペーパークラフト準正多面体 https://hamukazu.com/2017/09/18/paper-craft-quasi-regular-polyhedrons/ https://hamukazu.com/2017/09/18/paper-craft-quasi-regular-polyhedrons/#respond <![CDATA[hamukazu]]> Mon, 18 Sep 2017 00:31:49 +0000 <![CDATA[技術]]> <![CDATA[数学]]> http://hamukazu.com/?p=935 <![CDATA[以前にやった正多面体ペーパークラフトの続きとして、準正多面体も作ってみた。 準正多面体ってなに?って人はこちら参照。 先日行われたPyCon JP 2017のスプリントの企画として切頭二十面体を作り、後に切頭十二面体を作… 続きを読む »]]> <![CDATA[

以前にやった正多面体ペーパークラフトの続きとして、準正多面体も作ってみた。

準正多面体ってなに?って人はこちら参照。

先日行われたPyCon JP 2017のスプリントの企画として切頭二十面体を作り、後に切頭十二面体を作った。

完成形がこちら

(左が切頭十二面体、右が切頭二十面体)

ソースコードはこちら:
https://github.com/hamukazu/craft_truncated
Python3とreportlabというライブラリ(pipでインストール可能)があれば実行できる。

実行環境がない人のために、pdfもここにおいておく:

それぞれ2ページで構成されていて、2ページ分を切りとって貼り合わせて完成なので注意。

いろいろやってみてかなり慣れてきたと思う。開発上の一番の難所は、実はのりしろの位置で、印刷したものを組み立ててみて初めてバグ(のりしろがあるべきところにない、不必要なところにある)が分かることが多い。

紙についてだが、前回はケント紙をお薦めしたが、今回は長門屋の「カラーペーパー特厚口」をお薦めしておく。

うちのプリンター(エプソンのインクジェット)では手差しではなく普通のフィーダで印刷できた。

]]>
https://hamukazu.com/2017/09/18/paper-craft-quasi-regular-polyhedrons/feed/ 0
素因数分解ウェブアプリ https://hamukazu.com/2017/01/18/integer-factorization-web-app/ https://hamukazu.com/2017/01/18/integer-factorization-web-app/#respond <![CDATA[hamukazu]]> Wed, 18 Jan 2017 04:30:50 +0000 <![CDATA[技術]]> <![CDATA[数学]]> http://hamukazu.com/?p=925 <![CDATA[こんなすばらしいやり取りを見た。 http://anond.hatelabo.jp/20170116210001 http://anond.hatelabo.jp/20170117205622 テレビを見ながら出てきた数… 続きを読む »]]> <![CDATA[

こんなすばらしいやり取りを見た。
http://anond.hatelabo.jp/20170116210001
http://anond.hatelabo.jp/20170117205622

テレビを見ながら出てきた数字をカジュアルに素因数分解してみるというニーズはあるのだなと思い、ウェブアプリにしてみた。
https://hamukazu.github.io/factorwebapp/

ついカッとなってやった。反省はしていない。作りはじめてからデプロイまで大体15分くらい。

すべてJavaScriptで書いているのでサーバに負荷はかからない。スマホでも動くことを確認した。

スマホで動作確認の様子
Screenshot_2017-01-18-13-16-38

]]>
https://hamukazu.com/2017/01/18/integer-factorization-web-app/feed/ 0
2017年の素数日 https://hamukazu.com/2017/01/05/prime-days-2017/ https://hamukazu.com/2017/01/05/prime-days-2017/#respond <![CDATA[hamukazu]]> Thu, 05 Jan 2017 04:01:12 +0000 <![CDATA[数学]]> http://hamukazu.com/?p=920 <![CDATA[おまたせしました。2017年の素数日の発表です。以下のとおりになりました。 こちらのサイトでは、任意の年の素数日を計算できます。]]> <![CDATA[

おまたせしました。2017年の素数日の発表です。以下のとおりになりました。

20170121
20170219
20170223
20170301
20170303
20170331
20170421
20170511
20170519
20170607
20170627
20170807
20170831
20170901
20170903
20171017
20171101
20171201
20171219

こちらのサイトでは、任意の年の素数日を計算できます。

]]>
https://hamukazu.com/2017/01/05/prime-days-2017/feed/ 0
Juliaで素因数分解してみた https://hamukazu.com/2016/12/21/prime-factorization-in-julia/ https://hamukazu.com/2016/12/21/prime-factorization-in-julia/#respond <![CDATA[hamukazu]]> Tue, 20 Dec 2016 15:00:34 +0000 <![CDATA[技術]]> <![CDATA[数学]]> http://hamukazu.com/?p=911 <![CDATA[(この記事はJulia Advent Calendar 2016の21日目の記事です) 二次数体ふるい法を実装してみた Juliaというプログラミング言語には興味を持っていたのだが、特に興味を持ったきっかけは、この記事に… 続きを読む »]]> <![CDATA[

(この記事はJulia Advent Calendar 2016の21日目の記事です)

二次数体ふるい法を実装してみた

Juliaというプログラミング言語には興味を持っていたのだが、特に興味を持ったきっかけは、この記事にあるように、Polland-Rho法による素因数分解が標準装備されているという点である。

ということで、Juliaを触りだすきっかけとして、自分でも素因数分解ルーチンを作ってみようと思い、二次数体ふるい法を実装してみた。
そのソースコードがこちら:
https://github.com/hamukazu/quadratic_sieve

といってもまだ全然ダメで、一応正しい答えが出てくることは確認したが、Julia標準の素因数分解より数倍遅い。これはまだアルゴリズムをよく理解してなくてチューニングパラメータがよくわからないことと、Juliaのパフォーマンス・チューニングがよくわからないのが原因である。これから改良していきたい。

初めてJulia書いてみた感想

文法規則はシンプルだし、学習コストはそれほど高くなかったと思う。コードを書いていて一番苦労したのが、エラーメッセージが不親切な点。特にランタイムエラーが出てきたときに、何行目で起こっているかがわからなくて、デバッグ用の@showを書きまくって解決したのだが、これはなんとかならないだろうか。

参考文献

Juliaの文法はこの本で学習した:

Mastering Julia
この本一冊読めば十分かと思う。

二次ふるい法については、考案者Pomeranceによる解説が役にたった。
C.Pomerance, Smooth numbers and the quadratic sieve, Algorithmic Number Theory, 2008

またこの解説論文(大学の講義資料)も役に立った。
E.Laquist, The Quadratic Sieve Factoring Algorithm, MATH 488: Cryptographic Algorithms, University of Virginia, 2001

]]>
https://hamukazu.com/2016/12/21/prime-factorization-in-julia/feed/ 0
機械学習と統計の本によく出てくる積分公式について https://hamukazu.com/2016/12/18/integrations-in-ml/ https://hamukazu.com/2016/12/18/integrations-in-ml/#comments <![CDATA[hamukazu]]> Sat, 17 Dec 2016 15:00:15 +0000 <![CDATA[数学]]> http://hamukazu.com/?p=864 <![CDATA[(これは機械学習に必要な高校数学やり直しアドベントカレンダーAdvent Calendar 2016の18日目の記事です。) 最近大人の数学勉強し直しが密かなブームなようで、そのモチベーションとして機械学習が一役かってい… 続きを読む »]]> <![CDATA[

(これは機械学習に必要な高校数学やり直しアドベントカレンダーAdvent Calendar 2016の18日目の記事です。)
最近大人の数学勉強し直しが密かなブームなようで、そのモチベーションとして機械学習が一役かっているようである。つまり、機械学習に興味をもち、その中身を理解したいから数学を勉強したいという人が私の周りでそれなりに観測されている。また、そのうちの多くは、高校や中学で習った内容にさかのぼって勉強しているようである。なので、機械学習の本などに出てくる公式について、高校数学の範囲を超えるものの、高校生に分かる範囲で証明しようと思った。思ったのだが、最近の高校の教育課程には行列が含まれてないと聞いて、いきなり気持ちが萎えた。

機械学習で出てくる数学はほとんどが線形代数なのだが、上記のような事情により、ここでは積分に関する公式を証明しようと思う。多変数の場合の変数変換ではヤコビアンという行列式が出てくるが、実際の計算で必要なのは行列式だけであり、ここでは2変数の場合に限定することで行列計算には触れずに乗り切ろうと思う。

目標

以下の2つの式を証明する。両方とも有名な機械学習の教科書であるBishop著「Pattern Recognition and Machine Learning」(以下PRML)に証明抜きで出てくる式であるので、その初出の場所を併記しておく(ただし手元にある8th printing 2009をベースとする)

\[
\int_{-\infty}^{\infty} \frac{1}{(2\pi \sigma^2)^{1/2}} \exp \left\{ -\frac{1}{2\sigma^2} (x-\mu)^2 \right\} dx =1
\tag{1}
\]
(PRML 24ページ式1.46、25ページ式1.48)

\[
\int_0^1
\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}
\mu^{a-1} (1-\mu)^{b-1} d\mu
=1
\tag{2}
\]

ただしここで\(\Gamma(\cdot)\)はガンマ関数であり、
\[
\Gamma(x) = \int_0^\infty t^{x-1} e^{-t} dt
\]
で定義される。

準備

ここでは、高校数学でカバーできていないが証明で必要になる事実について說明する。必ずしも網羅的ではないと思うので、適宜参考文献を参照のこと。

偏微分

2変数関数\(f(x,y)\)について、変数\(y\)を定数とみなして\(x\)で微分したもの
\[ \frac{\partial}{\partial x} f(x,y) \]
と書き、これを\(f(x,y)\)の\(x\)についての偏微分係数と呼ぶ。同様に\(x\)を定数とみなして\(y\)で微分したものは
\[ \frac{\partial}{\partial y} f(x,y) \]
と書く。

例:
\(f(x,y)=xy^2+x\)のとき\(\frac{\partial f}{\partial x}=y^2+1\), \(\frac{\partial f}{\partial y}=2xy\)である。
\(f(x,y)=x^2\)のとき\(\frac{\partial f}{\partial x}=2x\), \(\frac{\partial f}{\partial y}=0\)である。

広義積分

\(\int_a^\infty f(x)\)を\(\int_a^M f(x)\)の極限として定義する。つまり
\[ \int_a^\infty f(x) dx = \lim_{M\to \infty} \int_a^M f(x) dx \]
である。ここでは収束する場合のみを考える。また、\(f(x)\)が\(a\)で定義されていない場合でも、もし収束すれば次のような積分を考えられる。
\[\int_a^b f(x) dx = \lim_{c\to a+0} \int_c^b f(x) dx \]

多重積分

\(f(x,y)\)を\(x\)で区間\([a,b]\)で積分してから\(y\)で区間\([c,d]\)で積分する計算を次で表す。
\[\int_c^d \left( \int_a^b f(x,y) dx \right) dy = \int_c^d \int_a^b f(x,y) dx dy\]
また、変数と区間の対応関係が分かりづらいときは、不等式を使って次のように書くこともある。
\[\int_{c\leq y \leq d} \int_{a\leq x \leq b} f(x,y) dx dy
=\int \!\int_{c\leq y \leq d \\ a\leq x \leq b} f(x,y) dx dy \]
この式で\(x\)で積分するときは\(y\)は定数とみなされるので、一般には区間\([a,b]\)は\(y\)によって決まる\([a(y),b(y)]\)とみなすこともでき、次の積分を考えることもできる。
\[\int_{c\leq y \leq d} \int_{a(y)\leq x \leq b(y)} f(x,y) dx dy \]
領域を違う記号で表し、次のように書くこともできる。
\[\int\int_D f(x,y) dx dy,\quad D= \left\{ c\le y \le d,\ a(y) \le x \le b(y) \right\} \]

多重積分の変数分離

\(f(x,y)=g(x)h(y)\)のときを考える。\(g(x)\)と\(h(y)\)が積分可能ならば、次が成り立つ。
\[ \int_{a\le x \le b}\int_{c\le y \le d} g(x)h(y) dxdy = \int_a^b g(x) dx \cdot \int_c^d h(y) dy \]

多重積分の変数変換

積分\(\int\!\int_D f(x,y) dxdy\)を変換
\[
\left\{
\begin{array}{l}
x=h(u,v)\\
y=g(u,v)
\end{array}
\right.
\]
により変数\(u,v\)の積分に置き換えることを考える。このとき領域\(D\)がこの変換により領域\(E\)に一対一に対応し、ヤコビアン\(J\)が\(E\)上いたるところで0ではなく、\(g,h\)が偏微分可能ならば、次の式が成り立つ。
\[ \int\!\int_D f(x,y) dx dy=
\int\!\int_E f(g(u,v),h(u,v)) |J| dudy\]
ただし、ヤコビアン\(J\)は
\[ J=
\mathrm{det}
\left(
\begin{array}{ll}
\displaystyle\frac{\partial g}{\partial x}&\displaystyle\frac{\partial g}{\partial y}\\
\displaystyle\frac{\partial h}{\partial x}&\displaystyle\frac{\partial h}{\partial y}
\end{array}
\right)
=
\frac{\partial g}{\partial x} \frac{\partial h}{\partial y}
-\frac{\partial g}{\partial y} \frac{\partial h}{\partial x}
\]
で定義される。

証明

式(1)の証明

\[u=\frac{x-\mu}{\sqrt{2}\sigma}\]
とおいて変数変換すると
\begin{align}
&\int_{-\infty}^{\infty} \frac{1}{(2\pi \sigma^2)^{1/2}} \exp \left\{ -\frac{1}{2\sigma^2} (x-\mu)^2 \right\} dx \notag\\
=&
\int_{-\infty}^{\infty} \frac{1}{(2\pi \sigma^2)^{1/2}} e^{-u^2} \sqrt{2}\sigma du\\
=&
\frac{1}{\sqrt{\pi}} \int_{-\infty}^{\infty} e^{-u^2} du
\end{align}
したがって
\[
\int_{-\infty}^{\infty} e^{-u^2} du =\sqrt{\pi}
\]
を証明すればよい。ここでこの左辺を\(I\)とおいて、その2乗を考える。
\begin{align}
I^2&= \int_{-\infty}^{\infty} e^{-u^2} du \cdot \int_{-\infty}^{\infty} e^{-v^2} dv\\
&= \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} e^{-(u^2+v^2)} dudv
\end{align}
ここで、次のような変数変換を行う。
\[ u=r \cos \theta,\quad v=r\sin \theta \]
これは一対一対応であり、このときヤコビアンは
\begin{align}
\mathrm{det}
\left(
\begin{array}{ll}
\displaystyle \frac{\partial (r\cos\theta)}{\partial r}&
\displaystyle \frac{\partial (r\cos\theta)}{\partial\theta}\\
\displaystyle \frac{\partial (r\sin\theta)}{\partial r}&
\displaystyle \frac{\partial (r\sin\theta)}{\partial\theta}
\end{array}
\right)
&=
\mathrm{det}
\left(
\begin{array}{ll}
\cos\theta& -r\sin\theta\\
\sin\theta& r\cos\theta
\end{array}
\right)\\
&=\cos\theta\times r\cos\theta – (-r\sin\theta)\times \sin\theta \\
&=r
\end{align}
すると、次のようになる。
\begin{align}
I^2&= \int_{0\leq \theta \leq 2\pi}\int_{0\leq r < \infty} e^{-((r\cos \theta)^2+(r\sin \theta)^2))} \cdot r d\theta dr \\ &=\int_{0\leq \theta \leq 2\pi}\int_{0\leq r < \infty} re^{-r^2} d\theta dr\\ &=\int_{0\leq \theta \leq 2\pi} \left[ -\frac{1}{2} e^{-r^2} \right]_0^\infty d\theta \\ &=\int_{0\leq \theta \leq 2\pi} \frac{1}{2} d\theta \\ &=\pi \end{align} よって式(1)が示された。

式(2)の証明

\begin{align}
\Gamma(a) \Gamma(b)&= \int_0^\infty t^{a-1}e^{-t} dt \times \int_0^\infty s^{b-1} e^{-s} ds\\
&=\int_0^\infty \int_0^\infty t^{a-1}s^{b-1}e^{-(s+t)} dt ds\\
&=\int_0^\infty \int_0^\infty t^{a-1}(u-t)^{b-1} e^{-u} dt du \qquad (u=s+t\text{とおいた})\\
&=\int_0^\infty \int_0^\infty (u\mu)^{a-1}(u-u\mu)^{b-1} e^{-u} \cdot ud\mu du \qquad (t=u\mu\text{とおいた})\\
&=\int_0^\infty \int_0^\infty u^{a+b-1} \mu^{a-1} (1-\mu)^{b-1} e^{-u}d\mu du\\
&=\int_0^\infty u^{a+b-1} e^{-u} du \cdot \int_0^\infty \mu^{a-1} (1-\mu)^{b-1}d\mu\\
&= \Gamma(a+b) \int_0^\infty v^{a-1} (1-\mu)^{b-1}d\mu\\
\end{align}
よって式(2)が示された。

参考文献

「準備」を書くときには、この本を参考にした。

微分積分学 (サイエンスライブラリ―数学)
20年以上前、学生時代に買ったのだが、今読んでもよい本だしわかりやすいと思った。高校の数Ⅲまで終わった人は読んでみてはどうだろうか。

そしてPRMLはこちら

Pattern Recognition and Machine Learning (Information Science and Statistics)

そしてその翻訳はこちら

修正履歴:
2017-01-05 コメントで指摘のあった誤植について訂正しました。

]]>
https://hamukazu.com/2016/12/18/integrations-in-ml/feed/ 2