2015年8月 愛知旅行: 熱田神宮


、お盆の時期に愛知旅行に行きました。 その際熱田神宮へも行きました。

地下鉄名城線なら神宮西、伝馬町、名鉄名古屋本線なら神宮前、JR東海道本線なら熱田から歩いて行けます。 今回は 地下鉄名城線 神宮西 から行きました。

熱田神宮

一日過ごしてもいいと思えるくらいのとてもいい環境です。 広さも19万平方メートルと広大で(東京ドーム約4個分)、社の数も多くてすごいですが、なんといっても空気がきれいで離れたくなくなる神社です。 森林の中にいる気分になれます。

ご祭神は熱田大神で、三種の神器の一つである草薙神剣(くさなぎのみつるぎ)が祭られたのが起源です。 本宮のほか別社、摂社、末社をあわせるとなんと45社にもなります。

また 6月5日に行われる熱田まつりは熱田神宮最大のお祭りで、他に初詣初えびす花の(とう)が特に参拝者の多いお祭りです。 神事、祭典あわせて約70もの行事が行われていますのでお出かけ前に是非チェックしてみてください。 熱田神宮のウェブサイトに詳しく載っています。

西門

名城線神宮西から南へ歩き、西門から入りました。 山の中に入るような感じすらあります。

お盆前の時期でしたから、(せみ)も元気に鳴いていました。 木でできた西門が素敵ですね。

参道は木々に囲まれて清々(すがすが)しい空気が流れています。

神社を囲む緑の中に、図書室を備えた宝物館があり、展示室では保管されている宝物を順次展示しています。 国宝、重要文化財、県指定文化財に指定された宝物は170を超えており、一見の価値があります。

熱田神宮は、かの織田信長も必勝祈願に訪れていたそうです。 そして、桶狭間の戦いに勝った信長は信長塀(のぶながべい)を奉納しました。 その信長塀を抜けると神楽坂です。

神楽殿

安産や厄払いなどのご祈祷を受けることができます。 神楽殿の左に本宮があり、向かいにはならずの梅があります。

ならずの梅

花が咲くけれども実がならない不思議な梅の木で、 室町時代からずっと熱田神宮に立っています。

本宮と神楽殿の間には授与所があり、お守りを授かることができます。 1900年の記念事業で新しく造営された建物で、神楽殿でのご祈祷申込も受け付けています。 こちらでひとつ仕事守を授かりました。

願い事

境内の奥にある清水社は願い事をかなえてくれるそうです。 水の神である罔象野上(みずはのめのかみ)をお祭りしています。 古事記にも日本書紀にも出てくる由緒正しい神様です。

そして清水社の後ろには湧き水があり、肌につけるときれいになり、中央にある石に3度水をかけて祈念すると願い事が叶うといわれています。

もしお食事時に行くのなら、ひつまぶしが登録商標のあつた蓬莱軒、ぜひ予約して行ってきてください。


多面体 デカルトの定理を証明する


多面体ではオイラーの定理に並んで、デカルトの定理というのがあります。

多面体についての考察

多面体は、形はどうあれ、ボールのように丸く壁がつながっています。 丸くなっているということは、なにか性質がありそうです。 わかりやすい正多面体について調べてみます。

正多面体について、 各頂点に集まる角度の総和は 360度 よりも少ないはずです。 360度だと平面になってしまいますから。

試しに正4面体について計算してみます。

正4面体の面は 正3角形 で 1つの角は 60度 です。 1つの頂点には 3つの面が集まっていますから、 1つの面に集まる角度の総和は

\[ 60 \times 3 = 180 \textrm{度} . \]

平面(360度)との差(角不足)は

\[ 360 – 180 = 180 \textrm{度} \]

頂点は全部で 4つあるので 全頂点での角不足総和は

\[ 180 \times 4 = 720 \textrm{度} \]

です。

同じようにすべての正多面体について角不足総和を求めると下の表のようになります。

正多面体の角不足総和一覧
1つの頂点に集まる角度の総和 平面(360度)との差(角不足) 全頂点での角不足総和
正4面体 180度 180度 720度
正6面体 270度 90度 720度
正8面体 240度 120度 720度
正12面体 324度 36度 720度
正20面体 300度 60度 720度

立体全体での角不足は720度になりますね。

実際のところ、多面体の角不足の総和は 720度 になります。 これをデカルトの定理と呼んでいます。

本当かどうか、証明してみましょう。

証明

多面体の頂点、辺、面の数をそれぞれ \( V \) 、 \( E \) 、 \( F \) とします。 オイラーの多面体定理を考えるで書いたとおり、次の式が成り立ちます(オイラーの定理)。

\[ V – E + F = 2 \]

多面体での各不足を計算します。 多面体全体での角不足は、 (360度) × ( 頂点の数 ) – ( 各面の内角の総和 ) で計算できます。

\[ (360 \textrm{度} ) \times ( \textrm{頂点の数} ) = 360 V \]

は ( V ) の定義より明らかですので、多面体全体での角不足は

\[ 360 V – (\textrm{全ての面の内角の総和}) \]

となります。 そこで、 1つの面の内角の総和を計算し、 全ての面について足し合わせます。

ひとつの面の内角の総和

多面体のひとつの面(多角形)について 、 辺の数を \( e \) とします。 この多角形(\( e \) 角形)の内角の総和は

\[ (e – 2) \times 180 \]

となります。

これを全ての面の分だけ足します。

全ての面の内角の総和

先ほどの \( e \) を用いて次のように表せます。

\begin{eqnarray} & \sum \left\{ (e – 2) \times 180 \right\} = & 180 ( \sum e – \sum 2 ) \end{eqnarray}

\( \sum \) は総和を意味します。

\( \sum e \) は全ての面について辺の数を足したものです。 全ての面について辺の数を足すと、 それぞれの辺を2回数えることになりますから、 \( \sum e = 2 E \) となります。 また、面の数 \( F \) だけ和を計算しますから \( \sum 2 = 2 F \) になります。

よって、 多面体全体での総和は次のように表されます。

\begin{eqnarray} & & 180 ( \sum e – \sum 2 ) \\ & = & 180 ( 2 E – 2 F ) \\ & = & 360 ( E – F ) \end{eqnarray}

多面体全体での角不足は

\begin{eqnarray} & & 360 V – \left\{ 360 ( E – F ) \right\} & = & 360 ( V – E + F) \\ & = & 360 \times 2 \\ & = & 720 \end{eqnarray}

オイラーの定理は凸多面体でなくても成り立ちますから、 デカルトの定理も同様に成り立ちます。


オイラーの多面体定理を証明する


オイラーの多面体定理を考えてみましょう。 (もともとはグラフ理論での定理なのですが。)

オイラーの多面体定理

多面体では次の等式が成り立つ。

頂点の数 – 辺の数 + 面の数 = 2

平面上の図形においてもこの式は成り立つ。

今回はこの式が本当に正しいのか検証してみようという趣旨です。 オイラーの式は平面上で成り立つ式なので、平面上で考えます。 多面体は平面図形に置き換えられるので、 平面図形でオイラーの式が成り立てば 多面体でも成り立つことになります。

多面体を平面に投影する

多面体は平面図形に投影することができます。

左の4面体は右のように平面に投影できます。 4面体の面は4角形になったのが3つ、残る面はまわりのエリアです。 点と線で 4つの区域に分けられていますね。

証明

平面上に描かれた点と線を考えます。 線の両端が点だと考えてください。 全ての線は点を介してつながっているものとし、点以外では線がつながらないものとします。 線は曲線も含みます。

数学的帰納法で考えます。 点の数を \( V \) 、 線の数を \( E \) 、 面の数を \( F \) とします。 \( V – E + F = 2 \) を証明すればOKです。

\( E = 1 \) のとき

辺 \( E \) は 1, 面 \( F \) は 1, 点 \( V \) は 2 です。

\[ V – E + F = 2 – 1 + 1 = 2 \]

オイラーの式は成立しています。

\( E = k \in \mathbb{N} \) でオイラーの式が成り立つとき

\( E = k \) でオイラーの式が成立するときの \( E \) 、 \( V \) 、 \( F \) の値をそれぞれ \( E_k \) 、 \( V_k \) 、 \( F_k \) とすると、次の式が成り立ちます。

\[ V_k – E_k + F_k = 2 \]

ここで \( V_k \) 、 \( F_k \) の値は \( k \) によって一意に定まるものではなく、 あくまで前提とした条件での値です。

図形に線を足す場合を考えます。 線は点を介してつながっているので、新しく引く線は両端または一方の端が既存の線とつながります。

線の一方のみが既存の点に接続する場合

点が新たに1つ増えるので \( V = V_k + 1 \) 、 線が新たに1つ増えるので \( E = E_k + 1 \) 、 面の数は変わらないので \( F = F_k \) 。

\begin{array}{cl} & V – E + F \\ = & ( V_k + 1 ) – ( E_k + 1 ) + F_k \\ = & V_k – E_k + F_k \\ = & 2 \end{array}

線の両端が既存の点に接続する場合

新しく線を引く前の状態で、 既存の線は繋がっているため 新しく引く線の片側または両側は線が閉じていることになる。 すなわち線を新しく引くと、 面の数が1増える。

これより 点の数は増えず \( V = V_k \) 、 線の数は1増えて \( E = E_k + 1 \) 、 面の数も1増えて \( F = F_k + 1 \) 。 これは 線の始点と終点が同じ場合も含みます。

\begin{array}{cl} & V – E + F \\ = & V_k – ( E_k + 1 ) + ( F_k + 1 ) \\ = & V_k – E_k + F_k \\ = & 2 \end{array}

以上より、 \( E = k \in \mathbb{N}\) で オイラーの式が成立していれば \( E = k + 1 \) でも成立することが分かる。

よって すべての場合で オイラーの式は成立する。

証明にしてはちょっとゆるい感じがしますが、 式が成り立つことを理解していただけるとうれしいです。

このオイラーの定理を使うと、デカルトの定理も証明できます。 詳細は デカルトの定理を証明する をご覧ください。


haskell split カンマ区切りの文字列をカンマで区切って配列にする方法


haskell で ruby の split や PHP の explode にあたるようなものを考えました。

背景

haskell を使ったことがなく、使う場面もなかなかないので CodeIQ で使ってみようと思ったものの、 「入力を受け取るにはどうすればいいんだ?」という疑問にぶちあたり、 split する方法を考えました。

Haskell には Data.List.Split モジュール内 に splitOn という関数があるのですが、 CodeIQ でコンパイルに失敗しました。 Ideone でも コンパイルに失敗しました。 ほかにも関数はあるそうなのですが、うまくいかなかったので自分で考えることにしました。

カンマで分割する方法

下のようになりました。 この方法だと カンマ でのみ区切ります。

任意のデリミタで分割する方法

任意のデリミタを指定できるようにしてみました。 1文字のデリミタでのみ分割可能です。