読者です 読者をやめる 読者になる 読者になる

moguestの思いつき備忘録

ふと思いついたことや見知った数理工学系の知識をためていく予定のブログです.面白ければなんでもあり.

あなたは何通り知っている?ガウス積分の導出2

前回の記事
moguest.hatenablog.com
の続きです(前回は本題に入る前に終わってしまったようなものでした…).

今回取り上げる導出方法は,ウォリスの公式と呼ばれるものを用いる方法です.
あの高木貞治の『解析概論』に載っているレベルなので,これも比較的メジャーな方法でしょう.
というか,下の証明は『解析概論』第4刷のP.125~127ぐらいにほぼそのまま載っています.


【証明2】ウォリスの公式を用いる方法
$n$を自然数として,
\[
S_n=\int_0^{\frac\pi2}\sin^n xdx=\int_0^{\frac\pi2}\cos^n xdx
\]
を考える.この積分は部分積分を利用して漸化式を立てれば
\begin{align}
S_{2n}&=\dfrac{2n-1}{2n}\cdot\dfrac{2n-3}{2n-2}\cdot\;\cdots\;\cdot\dfrac12\cdot\dfrac\pi2,\\
S_{2n}&=\dfrac{2n-2}{2n-1}\cdot\dfrac{2n-4}{2n-3}\cdot\;\cdots\;\cdot\dfrac23\cdot1
\end{align}となることが知られている.また,被積分関数を考えれば$S_n$は単調減少な数列であり,
$S_{2n}$と$S_{2n+1}$は同じように減少して0に収束する.つまり,$\lim_{n\to\infty}S_{2n+1}/S_{2n}=1$.
その現象の仕方は大まかには$1/\sqrt{n}$程度のオーダーで,具体的には,
\begin{align}
\lim_{n\to\infty}\sqrt{n}S_n&=\lim_{n\to\infty}\sqrt{nS_{2n}S_{2n+1}}\\
&=\lim_{n\to\infty}\sqrt{n\cdot\dfrac{\pi}{4n+2}}=\dfrac{\sqrt{\pi}}{2}
\end{align}
と計算できる.

さて,ここからガウス積分の導出の段階に入る.この積分$S_n$を用いて,積分
\[
I=\int_0^\infty e^{-x^2}dx
\]を評価することを考える.

まず,$e^a\ge 1+a$というたいへん重要な絶対不等式を使って*1
この式に$a=x^2$やら$a=-x^2$やらを代入して式変形すると,
\begin{align}
1-x^2 \le e^{-x^2} \le \dfrac{1}{1+x^2}
\end{align}
という関係が成り立つ.さらに両辺をn乗して上の式を用いれば,積分に関する式


\begin{align}
\quad\int_0^1(1-x^2)^ndx &\le \int_0^1 e^{-nx^2}dx \le \int_0^{\infty} e^{-nx^2}dx \le \int_0^1\dfrac{1}{(1+x^2)^n}dx
\end{align}

が成立する.


\begin{align}
\quad\int_0^{\infty} e^{-nx^2}dx&=\dfrac1{\sqrt{n}}I
\end{align}

であることから,
\[
\sqrt{n}\int_0^1(1-x^2)^ndx\le I \le \sqrt{n}\int_0^1\dfrac{1}{(1+x^2)^n}dx
\]という評価式が立てられる.
\begin{align}
\int_0^1(1-x^2)^ndx&=\int_{\frac{\pi}{2}}^0(1-\cos^2\theta)^n(-\sin\theta)d\theta\\
&=\int_0^{\frac{\pi}{2}}\sin^{2n+1}\theta\; d\theta=S_{2n+1},\\
\int_0^1\dfrac{1}{(1+x^2)^n}dx&=\int_0^{\frac{\pi}{2}}\dfrac{1}{(1+\tan^2\theta)^n}\dfrac{d\theta}{\cos^2\theta}\\
&=\int_0^{\frac{\pi}{2}}\cos^{2n-2}\theta\; d\theta=S_{2n-2}
\end{align}となり,結局
\[
\sqrt{n}S_{2n+1} \le I \le \sqrt{n}S_{2n-2}.
\]
両端の辺は$n\to\infty$でともに$\sqrt{\pi}/2$に収束するという話だったから,高校数学風に言うと,挟みうちの原理で
\[
I=\dfrac{\sqrt{\pi}}{2}
\]が示された.$e^{-x^2}$は偶関数であるから,
\[
\int_{-\infty}^\infty e^{-x^2}dx=2I=\sqrt{\pi}
\]が成り立つ.


ウォリスの公式というのは,上の$S_n$から簡単に導かれる
\[
\dfrac2\pi=\prod_{n=1}^\infty \left(1-\dfrac{1}{(2n)^2}\right)
\]
という式のことです.別に上の式を使ったわけではないので,ウォリスの公式を使ったというのは正式ではありませんが,
ウォリスの公式に関連する積分を用いて工夫して評価した,ということですね.

広義積分がある点では微妙ですが,基本的には高校数学の範囲内で示すことができることが,この証明の魅力です.

それにしても,MathJaxは使いづらい…
たまにTeXのコードでちゃんと数式になってくれないときがあるんですよね…

*1:Taylor の定理から示せばOK.他の方法でももちろん示せます.

あなたは何通り知っている?ガウス積分の導出1

ちょっと私事が忙しかったので,久しぶりの更新になります.


ガウス(Gauss)積分,有名ですよね.
おそらく,不定積分を初等関数で表せない積分のうち,ガウス積分は最も有名と言っていいと思います.
\[
\int_{-\infty}^\infty e^{-x^2}dx=\sqrt{\pi}
\]という公式ですね.
統計学をはじめ,様々な学問で必須の知識だと思いますし,
高校生でも正規分布の式は知っていると思います(確か現行の指導要領にもありましたよね).

有名な公式の証明というのは,えてして沢山の導出方法が知られているものです*1
ガウス関数についてもそれは例外ではなく,沢山の導出方法が知られている,らしい,です.

…しかしながら情けないことに,僕は今までたった1通りの導出方法しか知りませんでした.


【証明1】極座標系に置換積分する方法
\[
I=\int_{-\infty}^\infty e^{-x^2}dx
\]とおき,$I=\sqrt{\pi}$を示せばよい.そこで,積分
\[
\int_{-\infty}^\infty\int_{-\infty}^\infty e^{-(x^2+y^2)}dxdy
\]
を考える.これは
\[
\int_{-\infty}^\infty e^{-x^2}dx\int_{-\infty}^\infty e^{-y^2}dy=I^2
\]
と変形できる.また,極座標系$r,\theta$を用いて
\[
\int_0^{2\pi}\int_0^\infty e^{-r^2}rdrd\theta
\]
と変数変換することができる($dxdy=rdrd\theta$より,積分可能な関数に帰着されることがポイント).
したがって
\begin{align}
\int_0^{2\pi}\int_0^\infty e^{-r^2}rdrd\theta&=\int_0^{2\pi}d\theta\int_0^\infty re^{-r^2}dr\\
&=2\pi\left[-\dfrac{1}{2}e^{-r^2}\right]_0^\infty\\
&=2\pi\cdot \dfrac12=\pi.
\end{align}
これらのことから$I^2=\pi$が成立し,$I=\sqrt{\pi}$が示された.


広義積分ですから本当はもっと厳密にできる,というかやったほうがいいんでしょうが,
割とこの程度の説明で済ます教科書が(少なくとも工学書には)多いです.
おそらく,多くの本やサイトで紹介されているメジャーな証明といえば,これなんじゃないでしょうか.
必要な知識が多重積分の変数変換ぐらいだから比較的初学者にとっつきやすく,簡便であることが理由でしょうね.

もちろんここではこの超有名な証明で話を終えるつもりは毛頭なく,
もっとマイナーな証明に光を当ててみたい!というのがこの記事の趣旨です…ですが.
ここから新たな証明に入るとなんだか長くなりそうなので,いったんここで打ち切ります.
他の証明は次の記事にて!

*1:有名なのは三平方の定理でしょうか.100通り以上あると言われています.

友円数の作り方

(8,3,7),(8,5,7),(5,3,7),…
この数の並びをご存知でしょうか?
この数を3辺の長さに持つ三角形は,どこかに60°または120°が現れることが知られています.
これらの数の組を友円数と呼ぶ人もいます(正式名称ではない?)
楽に60°が作れるため,高校受験問題やセンター試験なんかではとても頻出です*1

(3,4,5), (5,12,13), (7,24,25), …
ピタゴラス数と呼ばれていますが,こちらを3辺の長さに持つ三角形は直角三角形でしたね.
そういう意味で,友円数はピタゴラス数の変形版ということができます.

ピタゴラス数には「作り方」がありました.自然数$(a,b)$に対して

\[
(a^2-b^2, 2ab, a^2+b^2)
\]

ピタゴラス数になることが知られています.たとえば$(a,b)=(2,1),(3,2)$だとそれぞれ$(3,4,5),(5,12,13)$が出てきます.


実はそれと同様に,友円数にも作り方があります.
というか,作り方を僕自身が高校ぐらいの時に編み出しました.$(a,b)$に対して

\[
(|2ab-a^2|,|2ab-b^2|,a^2+b^2-ab)
\]

は友円数になります.$(a,b)$が2倍以上離れていないとき(たとえば$(2,3)$など)は60°の三角形が,
そうでないとき($(2,5)$など)は120°の三角形ができます.
片方がもう片方の丁度2倍の関係になっていると,三角形ができないので注意してください.
たとえば$(a,b)=(2,3),(1,3)$のときはそれぞれ$(8,3,7),(5,3,7)$が出てきます.

どうしてこれで友円数ができるのか,については紙面がかさむのでひとまず割愛*2
残念ながら当時の僕は「これで友円数ができる」ことは示せたものの,
「これですべての友円数の組を尽くせるかどうか」はまだ示していません.
このことに関してはちょっと気になるところですね.

あと,どうやら僕の考えた方法以外にも,友円数の作り方はあるらしいです.
他の作り方との関係を考えてみるのも面白いかもしれませんね.

*1:頻出なだけあってこれらの数字の組は有名で,「花見(873),名古屋(758),七五三(753)」といった覚え方もあります.よくこんな都合のいい日本語が3つもあったもんです.

*2:いや,これが余弦定理の式を満たすのは代入すれば明らかなんですが,なんで当時の自分がこの式を思いついたか,について割愛する,ということです.

TeXworksで動かすスクリプトを書いてみた

最近,TeXworksを開いたときに出てくる
「ファイル 編集 フォーマット タイプセット スクリプト ウィンドウ ヘルプ」
のうち,「スクリプト」の役割を知りました.
自分でカスタマイズして,エディタに新たな機能を付けられる機能,みたいなもんですね.

デフォルトの機能だと,たとえば Toggle Bold では,
カーソルで選択した部分を太字にすることができます.
つまり,「abcdefg」という文字列を書いて"def"の部分だけカーソル選択して Toggle Bold を実行すると,
abc\textbf{def}g というテキストに変換されます.
ショートカットキーを設定してさらに便利に使うこともできます.

正直\textbf{}を挟む程度なら人力でやっても大した労力はかからないような…
でも,そういう細かいショートカットの積み重ねが使いやすいエディタにつながるのかもしれません.
そうなると猶更自分好みのスクリプトを生み出していく必要がありますね.

早速自作したい!ところなのですが,スクリプト作成に使える言語が

ということで,どちらも使ったことがありません.
QtScript は JavaScript と構文が同じらしいですが,JavaScript も書いたことがない…

ひとまず,簡単に実装できそうで,なおかつ僕がかねてより欲していた
「文章中数式を別行立て数式(align環境)に直すショートカット」を作ったりしてみました.
JavaScript 1日目,いろいろググりながらやったので機能はさびしいながら,何とか実用には足りる出来栄えになって満足.

ふと気づいたベテラン教師の共通点

小学校,中学,高校,大学,あとは自動車学校.
色々な学校に通い,いろいろな先生からいろいろな教えを受けてきました.
中には若々しい先生もいれば,逆に大ベテランの風格を放っている,そんな先生もいました.
若々しい先生にはいろいろな先生がいて,共通点を探るのも難しいんですが,
大ベテランと呼ばれる先生の授業をいろいろ見てみると,なんとなく共通点が見えてきました.

それは,授業中「同じ話を何回もする」ということ.
同じたとえ話を持ち出したり,同じエピソードを引っ張り出してきたり.
あとは,何か共通の「キャッチフレーズ」を持ち出すこともあります.
もしくは雑談にしても,何らかの鉄板ネタがあることが多いです.

単にその先生が歳でボケてたのではという声も聞こえてきそうですが
僕は割と合理的な理由があると思っています.
おそらく,ベテラン教師はベテランだから,
あることを伝えるときに最も効率的な言い回しは何か,経験的に知っているのです.
また,教師側にとっても新しいネタを探す必要がないから楽なんでしょう.
数理的に言えば,ある意味,最適化された言葉なんでしょうね.

個別指導なら,手を変え品を変え10通りで説明してみて,説明を模索するのが効果的でしょう.
その生徒にとってどの説明が最もなじみやすく分かりやすいのか,その個人差は大きいからです.
しかし,集団指導となると,きっと去年大ウケしたネタは,今年もそれなりにウケるんだと思います.
皆にそれなりに印象に残るような言葉を10回繰り返した方が効果的なんでしょう.

僕も以前は生徒に数学を教えるアルバイトをしていましたが,当時はそんなこと考えもせず.
もし今後ものを教える職種に就いたなら,少しは意識してみようかな,と思います.

jsarticle,jsbook の文章中で matrix 環境を使うとき

それなりの時間悩んでいたことが解決したので,ここに記しておきます.

最近は奥村先生の jsarticle, jsbook クラスを普段使っているのですが,そのときに
「matrix 環境の類を使うとき,
場所が文章中(2つの$マークで囲むもの)であるか別行立て(align 環境など)であるかで,空白が変わる」
という現象が生じていました.
例としては,下のような感じです.

f:id:moguest:20160727180612p:plain

確かに,文章中に行列を書いたときは,align 環境などに入れて書くときに比べて行間が広いですね.
「align のほうが広い」ならまだしも,「文章中のほうが広い」というのはあまり好ましくないと思います.
通常の数式記号(積分記号や分数など)は,文章中のほうが高さが小さくなるように設計されています.
したがって,この逆転現象は,僕としては気になります.

文章中に行列を入れるのを控えればいい,という話はありますが,それでも行ベクトルを書きたくなる瞬間はあるはず.
僕は行ベクトルも matrix 環境で書くタイプなんですが(成分間の空白などの体裁をそろえるため),
このまま文章中に行ベクトルを書くと,括弧の大きさが不自然になってしまいます.

しかも,この性質,困ったことに \displaystyle ではどういうわけか直らないんですね.
行列の直前に \displaystyle を入れてみたんですが,とくに効果はなく.

…ということが今日の今日まで謎だったんですが,この解決方法がわかりました.
それは,\narrowbaselines を入れるというもの.
実際にやってみると,下のような感じになります.align 環境内の行列とほとんど見分けがつかなくなりました!

f:id:moguest:20160727180617p:plain

\narrowbaselines というコマンドを今日知ったので詳しいふるまいは分かりませんが,
どうやらその名の通り,基本的な行間を狭くするコマンドのようです.
プリアンブルに入れてみると,文書全体の行間が(行列の行だけでなく,普通の文章の行間含め)すべて狭くなります.

これは文章の途中に入れても適用されます.つまり,\narrowbaselines を入れた直後から(?)行間が狭くなるようです*1
途中で文章の行間が狭くなっては困るため,実際に使うときは
中括弧で囲って\narrowbaselines の影響を局所的に抑える必要があります.つまり,上の例だと
${
\narrowbaselines
\begin {bmatrix}
1&-1
\end {bmatrix} ,\;\;
\begin {bmatrix}
a&b\\c&d
\end {bmatrix}
}$
とします.

*1:もしかすると,「直後の段落から」とかそういう条件かもしれません.が,そもそも文書の途中で行間を変えるような使い方は実用的ではないですよね.

GeoGebraのすすめ

GeoGebra というソフトをご存知でしょうか.
グラフ描画のためのフリーソフトですが,結構いろんなことができます.

元々教育目的で開発されたんだとか.そのためか,非常にわかりやすいGUIとなっています.
嬉しい機能が盛りだくさんで,現在も GeoGebra の forum があるぐらいには活発です.

個人的に思う「嬉しい機能」トップ5は:

  1. あらゆるグラフィックが綺麗
  2. エクスポート機能が充実(pngはもちろん,eps,さらにはtikzのコードまで自動生成可能)
  3. スライダー+アニメーション+軌跡の表示 のコンボ
  4. 二次曲線や関数の接線など,多くの操作が直感的に可能
  5. 直感的には難しい機能(媒介変数表示された曲線の描画など)はコマンド入力でカバー
  • (番外編)機能的な制限は多いものの,3D描画をサポート*1
  • (番外編)行列の計算や多項式の展開など,グラフ描画に限らず基本的な数学演算もカバー

高校数学までならほぼ100%カバーできます*2

僕は高校時代から GeoGebra を使っていましたが,
意外なことに,大学に進学してからもこのソフトの出番が意外と多いんですね.
ガウス関数や sinc 関数程度なら楽々描画できますし,何よりTeXへの反映が非常に楽です.
以前はeps形式にして貼りつけてましたが,最近はtikzが便利であると分かり,もっぱらtikzのコードにしてエクスポートしてます.

しかし,僕はまだスクリプトやコマンドを使いこなせていないため,GeoGebraの良さを完璧に知り尽くしたとは言えません.
まだまだ学ぶべきことが沢山ありますね…

*1:3D描画がサポートされたのは比較的最近ですから,開発が進むにつれて使える機能が増える可能性はあると思います.

*2:一部の陰関数は難しいかもしれません