goo blog サービス終了のお知らせ 

横浜市金沢区の植物

写真付きで日記や趣味を書くならgooブログ

Mathematicaで描く正多面体と素数の事始めⅠ

2024-10-01 | 数学

Mathematicaで描く正多面体と素数の事始めⅠ

はじめに

 Mathematicaで描く正十二面体Regular Dodecahedronと正二十面体Regular Icosahedron、更に正八面体Octahedronモニック多項式、正二十面体Icosahedronモニック多項式を記述した。モニック多項式は正多面体と素数 橋本義武 著  放送大学 出版を元に記述した。この本を最初から読んで見ると、正多面体と素数の序章を記述している。更に、正多面体と素数の奥深い世界を探求するには、これら序章を通過しなければならない。今回はMathemaicaでこの序章に当たる所を記述した。相当な字数になり、goo blogの字数制限と言う大人の事情でVol.I~Vol.IIに分割した。

参考文献

正多面体と素数 橋本義武 著  放送大学 出版 

シリーズ物

 Mathematicaで描く正多面体と素数の事始めⅡ

    Mathematicaで描く正四面体Tetrahedron

 Mathematicaで描く正六面体Cube

 Mathematicaで描く正八面体Octahedron

 Mathematicaで描く正十二面体Regular Dodecahedron

 Mathematicaで描く正二十面体Regular Icosahedron

    Mathematicaで正八面体モニック多項式IIIIII、Ⅳ

    Mathematicaで正八面体モニック多項式・演習問題

   Mathematicaで正二十面体モニック多項式IIIIII

   Mathematicaで正二十面体モニック多項式・演習問題III

   Mathematicaで作成した正多面体諸元の表

   Mathematicaで正多面体の三角関数を解く

   Mathematicaで正多面体の黄金比の事始め

1.正多面体に現れる素数

1.1多面体と正多面体

1.1.1多面体

 多面体(Polyhedron)とは、頂点(vertex)の間を結ぶ辺(edge)によって、表面が幾つかの多角形に分割されている立体の事である。表面の事だけを指す事もある。表面を分割している多角形を多面体の面(face)と呼ぶ。

 多面体Pの頂点の個数をv=vP)、辺の個数をe=eP)、面の個数をf=fP)で表す事にする。

1.1 n角柱の場合、v=2ne=3nf=n+2である。n角錐の場合、v=n+1e=2nf=n+1である。

 いずれの場合も、v-e+f=2となっている。

 ドーナツのように、穴の開いている立体もある。ここで穴と云ったのは入口と出口のあるトンネルの事である。立体の穴と云ったら、外部に繋がっていない空間、「す」を指す事もある。「す」は「鬆」と書く。「骨粗鬆症」に使われる漢字である。トンネルと「す」の区別を付けてくれるのが、トポロジー(topology)である。なおトポロジーの教えでは、落とし穴のような物は穴ではない。それはただへこんでいるだけであり、落ちたら落ちたで這い上がれがいい。

 トンネルの穴も「す」の穴もない立体については、次が成り立つ。

定理1.1(オイラー(Euler)の多面体定理)穴のない多面体に対し、v-e+f=2が成り立つ。

 これはトポロジーの定理である。

証明のアイデアを述べる。

 穴のない多面体の表面から面を1つ取り除く。これを変形して、平面の上に乗せる事ができる。これは多角形を多角形に分割した物になっている。よって、この定理は次の定理に帰着される。

定理1.2

多角形を多角形に分割する場合、頂点・辺・面の個数をそれぞれvefとすると、v-e+f=1が成り立つ。

証明

 元の多角形の周上の辺を1つ取り除くと面も1つ減る。この場合v-e+fは不変である。

 この操作を繰り返すと、面がなくなって頂点と辺だけの図形になる。この図形は1つに繋がっていて、輪になっている部分はない。

定義1.1

1)頂点を辺で繋いでできる図形をグラフ(graph)と云う。

21つに繋がっていて、輪になっている部分のないグラフをツリー(木、tree)と云う。

3)ツリーの頂点で、1つの辺のみに繋がっている物を端点あるいは外点と云う。2つ以上の辺に繋がっている物を内点と云う。

ここ迄の論議によって、オイラーEulerの多面体定理は次に帰着されている。

定理1.3

 ツリーの頂点・辺の個数をそれぞれveとすると、v-e=1が成り立つ。

証明

 端点を1つ取り除くと辺も1つ減る。この場合v-eは不変である。この操作を繰り返すと、辺がなくなって1つの頂点だけになる。従って、v-e=1-0=1

1.1.2正多面体

定義1.2

多面体(Regular Polyhedron)とは、穴のない多面体であって、

1)全ての互いに合同な正多角形

2)各頂点から出る辺の個数が同じ

と云う条件を満たす物の事である。古代より、次の定理が知られている。

定理1.4

 正多面体は、正四面体(Tetrahedron)、正六面体(Cube)、正八面体(Octahedron)、正十二面体(Dodecahedron)、正二十面体(Icosahedron)の5つのみである。これらをそれぞれ、TeCuOcDoIcと云う記号で表す事にする。

Mathematica

IN[1]:

platonics=PolyhedronData["Platonic"]

Out[1]:

{Tetrahedron,Cube,Octahedron,Dodecahedron,Icosahedron}

巨匠プラトンPlotonと正多面体は何の関係もない。プラトン哲学 ∪ 正多面体と素数は踏破できない高い山。

 証明

 正多面体の頂点には、少なくとも3つの面が集まっている。従って、正多面体の面に成りうる正多角形の内角は360°/3=120°より小さい。よって、正三、正四、正五角形のみがありうる。正三角形の場合、1つの頂点に345個の面が集まる事が可能である。正四角形(正方形)、正五角形の場合、1つの頂点に3つの面が集まる事が可能である。この5つの場合に対応する正多面体が、それぞれ正四面体、正六面体、正八面体、正十二面体、正二十面体である。正多角形は無限にあるのに、正多面体は5つしかない。この事実は、古代より神秘的な事と思われてきた。証明できる事であり、且つ神秘的である。と云う事が数学にはあるのである。正多面体五個を纏めて描く。外側から正十二面体、正二十面体、正六面体、正八面体、正四面体の順である(外接半径の大きい順)。参照:Mathematicaで作成した正多面体諸元の表。碌でもない奴に例えると次から次と出てくる。トランプ、習近平、プーチン、ネタニエフ、金正恩、何れも核の亡者。

In[]:

p = PolyhedronData[pname = "Platonic", "Polyhedron"]
Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.15]}],p}, Boxed -> False]

Out[]:


     素人には詳解演習微分積分 水田義弘 著  サイエンス社の解説が分かり易い。1章数列と極限1.1実数の性質

問題:正多面体の各面がa角形で、各頂点に集まる辺の数をbとする。2/a+2/b=1+2/e、ここでeは正多面体の辺の個数を表す。2/a+2/b1を解いて、正多面体を全て求めよ。

答:ab2(a+b)であるから(a-2)(b-2)4、a≧3b≧3;

Mathematicaでこの不等式を解く。注:テキストで書くと不等式が表示されないので、ビットマップで入れた。gooブログのhtmlバグ。

In[]:

m1=Table[{PolyhedronData["Tetrahedron","Name"],"3",a3,"3"}]

m2=Table[{PolyhedronData["Octahedron","Name"],"3",a3,"4"}]

m3=Table[{PolyhedronData["Icosahedron","Name"],"3",a3,"5"}]

m4=Table[{PolyhedronData["Cube","Name"],"4",a4,"3"}]

m5=Table[{PolyhedronData["Dodecahedron","Name"],"5",a5,"3"}]

TableOfValues1=Prepend[{m1,m2,m3,m4,m5},{"Name","a角形","b","各頂点に集まる辺の数をb"}]

Grid[TableOfValues1]

TableOfValues2=MapThread[Prepend,{TableOfValues1,{"和名","正四面体","正八面体","正二十面体","正六面体","正十二面体"}}]

Grid[TableOfValues2,Frame->All]

Out[]:

 正多面体を解く 一松 信 著  東海大学出版 に更に詳しい説明がなされている。 

 面の個数をfとすると、af=2eだから以下の五つの正多面体しかない。Mathematicaの表作りする為のスクリプトは全て記述したが、出力は最後の結果の表だけを記述した。

(*"頂点数VertexCount","辺の数EdgeCount","面の数FaceCount"*)
(*正多面体の各面がa角形で、各頂点に集まる辺の数をbとする*)

In[]:
a = 3
b = 3
v = PolyhedronData["Tetrahedron", "VertexCount"]
e = PolyhedronData["Tetrahedron", "EdgeCount"]
f = PolyhedronData["Tetrahedron", "FaceCount"]
m1 = Table[{PolyhedronData["Tetrahedron", "Name"], a, b, e, f, a*f,2 e, v}]
a = 3
b = 4
v = PolyhedronData["Octahedron", "VertexCount"]
e = PolyhedronData["Octahedron", "EdgeCount"]
f = PolyhedronData["Octahedron", "FaceCount"]
m2 = Table[{PolyhedronData["Octahedron", "Name"], a, b, e, f, a*f,2 e, v}]
a = 3
b = 5
v = PolyhedronData["Icosahedron", "VertexCount"]
e = PolyhedronData["Icosahedron", "EdgeCount"]
f = PolyhedronData["Icosahedron", "FaceCount"]
m3 = Table[{PolyhedronData["Icosahedron", "Name"], a, b, e, f, a*f,2 e, v}]
a = 4
b = 3
v = PolyhedronData["Cube", "VertexCount"]
e = PolyhedronData["Cube", "EdgeCount"]
f = PolyhedronData["Cube", "FaceCount"]
m4 = Table[{PolyhedronData["Cube", "Name"], a, b, e, f, a*f, 2 e, v}]
a = 5
b = 3
v = PolyhedronData["Dodecahedron", "VertexCount"]
e = PolyhedronData["Dodecahedron", "EdgeCount"]
f = PolyhedronData["Dodecahedron", "FaceCount"]
m5 = Table[{PolyhedronData["Dodecahedron", "Name"], a, b, e, f, a*f,2 e, v}]

TableOfValues1 =Prepend[{m1, m2, m3, m4, m5}, {"Name", "a", "b", "辺の数e", "面の数f","af", "2e", "頂点数v"}]
Grid[TableOfValues1]
TableOfValues2 =MapThread[Prepend, {TableOfValues1, {"和名", "正四面体", "正八面体", "正二十面体", "正六面体","正十二面体"}}]
Grid[TableOfValues2, Frame -> All]

Out[]

 この表でのafが同じ値の正多面体がある。正六面体と正八面体、正十二面体と正二十面体。これら正多角形は双対である。これをMthematicaで描く。

a.正六面体と正八面体の双対性を求める。

In[]:

Table[Graphics3D[{EdgeForm[{Thin, Blue}],FaceForm[{Pink, Opacity[0.6]}], DualPolyhedron[f[1]], f[1]},Boxed -> False], {f, {Cube, Octahedron}}]

Out[]:

b.正十二面体と正二十面体の双対性を求める。

In[]:

Table[Graphics3D[{EdgeForm[{Thin, Blue}],FaceForm[{Pink, Opacity[0.6]}], DualPolyhedron[f[1]], f[1]},Boxed -> False], {f, {Dodecahedron, Icosahedron}}]

Out[]:

 

1.2頂点・辺・面の個数

1.2.1頂点・辺・面の個数の表

「Mathematicaで作成した正多面体の表」で作成した物を載せた。関数Platonicを使うと簡単に正多面体の諸元が求まる。Mathematicaの表作りする為のスクリプトは全て記述したが、出力は最後の結果の表だけを記述した。

In[]:

m=Table[PolyhedronData["Platonic",{"Name","VertexCount","EdgeCount","FaceCount"}]]

TableOfValues1=Prepend[m,{"Name","頂点数VertexCount","辺の数EdgeCount","面の数FaceCount"}]

Grid[TableOfValues1]

TableOfValues2=MapThread[Prepend,{TableOfValues1,{"和名","正四面体","正六面体","正八面体","正十二面体","正二十面体"}}]

Grid[TableOfValues2,Frame->All]

Out[1]:

   正多面体の頂点・辺・面の個数の表を観察すると、同じ数になっている所がある。これは偶然だろうか、それとも何か幾何学的な理由があるのだろうか?正多面体と素数の表はMathematicaで描く正多面体と素数の事始めⅡに記述した。

1.2.2正多面の間の対応

1fCu=vOc=6fOc=vCu=8となっている。これは、立方体の面の中心を隣同士結ぶと正八面体ができ、正八面体の面の中心を隣同士結ぶと正六面体ができる事に由来している。

2fDo=vIc=12fIc=vDo=20となっている。これは、正十二面体の面の中心を隣同士結ぶと正二十面体ができ、正二十面体の面の中心を隣同士結ぶと正十二面体ができる事に由来している。

3fTe=vTe) =4となっている。これは、正四面体の面の中心を隣同士結ぶと再び正四面体ができる事に由来している。

4fTe=vOc=6となっている。これは、正四面体の辺の中点を結んで正八面体を作る事ができる事に由来している。

5fCu=vTe=6となっている。これは、立方体の各面に対角線を1つずつ引いて、正四面体を作る事ができる事に対応している。1つの面の対角線を決めると、他の面の対角線は自動的に決まる。

6fDo=eCu=12となっている。これは、正十二面体の各面に対角線を1つずつ引いて、立方体を作る事ができる事に対応している。1つの面の対角線を決めると、他の面の対角線は自動的に決まる。

1.2.3正多面体の外接球面

 正多面体Rに対し、全ての頂点を通る球面Sが存在する。これを外接球面と呼ぶ。外接球面Sの中心から、辺の中点と面の中心をSへ射影する。即ち、中心から辺の中点あるいは面の中心に引いた半直線と、Sの交点を取る。以下、辺の中点・面の中心と云ったら、S上に射影した点を指す事もある。

 こうして、Rの頂点の他に、辺の中点と面の中心が外接球面S上にできる。この内、頂点の集合、辺の中点の集合、面の中心の集合を、それぞれRs0 Rs1Rs2で表し、Rs0∪Rs1∪Rs2と置く。有限集合Xの元の個数(基数)を|X|で表すと、

  |Rs0|=vR)、|Rs1|=eR)、|Rs2 |=fR

である。

 上で述べた正多面体の間の関係は、点の集合Rs の間の関係と見る事もできる。

1)立方体と正八面体は、集合 Rsが同じである。即ち、Cus=Ocsと見る事ができる。但し、頂点と面の中心が入れ替わっていて、辺の中点同士は一致している。即ち、Cus0=Ocs2 Cus1=Ocs1 Cus2=Ocs0

と見る事ができる。

2)正十二面体と正二十面体は Rsが同じである。即ち、Dos=Icsと見る事ができる。但し、頂点と面の中心が入れ替わっていて、辺の中点同士は一致している。即ち、

  Dos0=Ics2Dos1=Ics1Dos2=Ics0

と見る事ができる。

3)従って、正多面体は5つあるが、対応する外接球面上の点の集合は、TesOcsIcsの3つである。

4Tes0∪Tes2=Ocs2 Tes1=Ocs0と見なす事ができる。この場合、正四面体の頂点に対応する正八面体の面同士は隣り合わず、正四面体の面に対応する正八面体の面同士は隣り合わない。

5Ocs0⊂Ics1Ocs2 ⊂Ics2と見なす事ができる。故に、Tes ⊂Icsと見なす事ができる。

a.Mathematicaで正四面体の外接球、内接球を纏めて描く。

一辺の長さを1とした。

(*正四面体の外接球 Circumsphere*)
(*正四面体の内接球 Insphere*)

In[]:
Print["外接半径:", \[ScriptCapitalR]1 = Circumsphere[Tetrahedron[]]]

Print["外接半径:", N[%]]
Print["内接半径:", \[ScriptCapitalR]2 = Insphere[Tetrahedron[]]]
Print["内接半径:", N[%]]
Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.2]}],Tetrahedron[], Circumsphere[Tetrahedron[]], Tetrahedron[],Insphere[Tetrahedron[]] }, Boxed -> False]

Out[]:

外接半径:Sphere[{0,0,0},Sqrt[3/2]/2]

外接半径:Sphere[{0.,0.,0.},0.612372]

内接半径:Sphere[{0,0,0},1/(2Sqrt[6])]

内接半径:Sphere[{0.,0.,0.},0.204124]

 

b.Mathematicaで正六面体の外接球、内接球を纏めて描く

一辺の長さを1とした。

(*正六面体の外接球 Circumsphere*)
(*正六面体の内接球 Insphere*)

In[]:

Print["外接半径:", \[ScriptCapitalR]1 = Circumsphere[Cube[]]]
Print["外接半径:", N[%]]

Print["内接半径:", \[ScriptCapitalR]2 = Insphere[Cube[]] ]
Print["内接半径:", N[%]]
Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.2]}],Cube[], Circumsphere[Cube[]], Cube[], Insphere[Cube[]] },Boxed -> False]

Out[]:

外接半径:Sphere[{0,0,0},Sqrt[3]/2]

外接半径:Sphere[{0.,0.,0.},0.866025]

内接半径:Sphere[{0,0,0},1/2]

内接半径:Sphere[{0.,0.,0.},0.5]

c.Mathematicaで正八面体の外接球、内接球を纏めて描く。

一辺の長さを1とした。

(*正八面体の外接球 Circumsphere*)
(*正八面体の内接球 Insphere*)

In[]:
Print["外接半径:", \[ScriptCapitalR]1 = Circumsphere[Octahedron[]]]
Print["外接半径:", N[%]]
Print["内接半径:", \[ScriptCapitalR]2 = Insphere[Octahedron[]]]
Print["内接半径:", N[%]]
Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.2]}],Octahedron[], Circumsphere[Octahedron[]], Octahedron[],Insphere[Octahedron[]] }, Boxed -> False]

Out[]:

外接半径:Sphere[{0,0,0},Sqrt[5/8+Sqrt[5]/8]]

外接半径:Sphere[{0.,0.,0.},0.707107]

内接半径:Sphere[{0,0,0},1/Sqrt[6]]

内接半径:Sphere[{0.,0.,0.},0.408248]

続編:Mathematicaで描く正多面体と素数の事始めⅡ


Mathematicaで描く正二十面体Regular Icosahedron

2024-07-22 | 数学

Mathematicaで描く正二十面体Regular Icosahedron

     今回は正十二面体と双対性がある正二十面体を記述した。多面体の中で正多面体は、正四面体、正六面体、正八面体、正十二面体 、正二十面体の5個しかない。幾何の問題は図を見ただけで分かるのは達人で、一般の人は補助線を引いてみると、答が見えてくる。Mathematicaを使用して正二十面体の外接円等の諸元を補助線を引く事無く、一気に求める。一辺の長さを1とした。Mathematicaでは色々な関数、式を使って同じ答を出す事もある。Mathematicaの出力結果は厳密値を出す事もある。その場合は膨大なデータになり、字数が増えるので省略した。どうせ重心の結果は{0.0,0.0,0.0}ゼロだと決め付けてはいけない。数学は計算過程が重要になる。そう云う事で、この場合はgooブログの字数制限と云う大人の事情で、端折った結果を掲載した。

シリーズ物

    Mathematicaで描く正四面体Tetrahedron

 Mathematicaで描く正六面体Cube

 Mathematicaで描く正八面体Octahedron

 Mathematicaで描く正十二面体Regular Dodecahedron

    Mathematicaで作成した正多面体諸元の表

    Mathematicaで正多面体の三角関数を解く

    Mathematicaで描く正多面体と素数の事始めI、II

    Mathematicaで正八面体モニック多項式IIIIII、Ⅳ

    Mathematicaで正八面体モニック多項式・演習問題

   Mathematicaで正二十面体モニック多項式IIIIII

   Mathematicaで正二十面体モニック多項式・演習問題III

   Mathematicaで正多面体の黄金比の事始め

1.正二十面体描画

In[]:

Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.7]}],PolyhedronData["Icosahedron", "Polyhedron"]},Boxed -> False]

Out[1]:

2.正二十面体の頂点と辺と面の数を求める

In[]:

Print["SchlaefliSymbol:",PolyhedronData["Icosahedron", "SchlaefliSymbol"]]

Print["頂点数:", PolyhedronData["Icosahedron", "VertexCount"]]
Print["辺の数:", PolyhedronData["Icosahedron", "EdgeCount"]]
Print["面の数:", PolyhedronData["Icosahedron", "FaceCount"]]

SchlaefliSymbol:{3,5}

頂点数:12

辺の数:30

面の数:20

3. 正二十面体の重心を求める

In[]:

PolyhedronData["Icosahedron","Centroid"]

RegionCentroid[PolyhedronData["Icosahedron","Polyhedron"]]

N[%]

RegionCentroid[PolyhedronData["Icosahedron","Polyhedron"]]//FullSimplify

Out[]:

{0,0,0}

{(3 (1 + Sqrt[5])^2 (5/Sqrt[50 - 10 Sqrt[5]] - 1/Sqrt[10 - 2 Sqrt[5]]))/(2 (10 - 2 Sqrt[5])) + (3 (-1 - Sqrt[5])^2 (-(5/Sqrt[50 - 10 Sqrt[5]]) + 1/Sqrt[10 - 2 Sqrt[5]]))/(2 (10 - 2 Sqrt[5])) - (2 ((-1 - Sqrt[5])^2/(10 - 2 Sqrt[5]) + 2 ((-1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) - Sqrt[2/(5 - Sqrt[5])])^2))/Sqrt[10 - 2 Sqrt[5]] + 
  2 (-(5/2) Sqrt[(5 + Sqrt[5])/((50 - 10 Sqrt[5]) (5 - Sqrt[5]))] + 1/2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) ((1 - Sqrt[5])^2/(4 (10 - 2 Sqrt[5])) + 2/(5 - Sqrt[5]) + ((1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) - Sqrt[2/(5 - Sqrt[5])])^2) - 2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] (((-1 -

Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2 + ((-1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) - Sqrt[2/(5 - Sqrt[5])])^2 + ((1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) - Sqrt[2/(5 - Sqrt[5])])^2) + 2 (5/(2 Sqrt[50 - 10 Sqrt[5]]) - 1/(2 Sqrt[10 - 2 Sqrt[5]]) - 5/2 Sqrt[(5 + Sqrt[5])/((50 -

10 Sqrt[5]) (5 - Sqrt[5]))] + 1/2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) ((-1 - Sqrt[5])^2/(4 (10 - 2 Sqrt[5])) + (-1 + Sqrt[5])^2/(4 (10 - 2 Sqrt[5])) + ((-1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2) + 2 (1/Sqrt[10 - 2 Sqrt[5]] - Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) (((-1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2 + ((-1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2 + ((1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2) + 2 (5/2 Sqrt[(5 + Sqrt[5])/((50 - 10 Sqrt[5]) (5 - Sqrt[5]))] - 1/2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) (2/(5 - Sqrt[5]) + (-1 + Sqrt[5])^2/(4 (10 - 2 Sqrt[5])) + (Sqrt[2/(5 - Sqrt[5])] + (-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2) + 2 (-(5/(2 Sqrt[50 - 10 Sqrt[5]])) + 1/(2 Sqrt[10 - 2 Sqrt[5]]) + 5/2 Sqrt[(5 + Sqrt[5])/((50 - 10 Sqrt[5]) (5 - Sqrt[5]))] - 
     1/2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) ((1 - Sqrt[5])^2/(4 (10 - 2 Sqrt[5])) + (1 + Sqrt[5])^2/(4 (10 - 2 Sqrt[5])) + ((1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2) + (2 ((1 + Sqrt[5])^2/(10 - 2 Sqrt[5]) + 2 (Sqrt[2/(5 - Sqrt[5])] + (1 + Sqrt[5])/(2 Sqrt[10 -

2 Sqrt[5]]))^2))/Sqrt[10 - 2 Sqrt[5]] + 2 (-(1/Sqrt[10 - 2 Sqrt[5]]) + Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) (((1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2 + ((1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2 + ((-1 +

Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2) + 2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] ((Sqrt[2/(5 - Sqrt[5])] + (-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2 + (Sqrt[2/(5 - Sqrt[5])] + (1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2 + ((-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]) + (1 +Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]))^2),

1/(5 - Sqrt[5]) (5 + Sqrt[5]) (-(5/2) Sqrt[5/((50 - 10 Sqrt[5]) (10 - 2 Sqrt[5]))] - 1/(2 (10 - 2 Sqrt[5])) + Sqrt[5]/(2 (10 - 2 Sqrt[5])) + 5/(2 Sqrt[(50 - 10 Sqrt[5]) (10 - 2 Sqrt[5])]) + 5 Sqrt[2/((50 - 10 Sqrt[5]) (5 - Sqrt[5]))] - Sqrt[2/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) + 1/(5 - Sqrt[5]) (5 +

Sqrt[5]) (5/2 Sqrt[5/((50 - 10 Sqrt[5]) (10 - 2 Sqrt[5]))] + 1/(2 (10 - 2 Sqrt[5])) - Sqrt[5]/(2 (10 - 2 Sqrt[5])) - 5/(2 Sqrt[(50 - 10 Sqrt[5]) (10 - 2 Sqrt[5])]) - 5 Sqrt[2/((50 - 10 Sqrt[5]) (5 - Sqrt[5]))] + Sqrt[2/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) + 2 (-5 Sqrt[5/((50 - 10 Sqrt[5]) (10 - 2 Sqrt[5]))] + Sqrt[5]/(10 -

2 Sqrt[5])) (1/4 + (5 + Sqrt[5])/(4 (5 - Sqrt[5])) + (-(1/2) - 1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])])^2) + 2 (-(1/(10 - 2 Sqrt[5])) + Sqrt[5]/(10 - 2 Sqrt[5]) - 2 Sqrt[2/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) (1/4 + (5 + Sqrt[5])/(4 (5 - Sqrt[5])) + (-(1/2) - 1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])])^2) - (4 Sqrt[5] ((5 + Sqrt[5])/(5 - Sqrt[5]) + 2 (-(1/2) - 1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])])^2))/(10 - 2 Sqrt[5]) + 2 (5 Sqrt[5/((50 - 10 Sqrt[5]) (10 - 2 Sqrt[5]))] - Sqrt[5]/(10 - 2 Sqrt[5])) (1/4 + (5 + Sqrt[5])/(4 (5 - Sqrt[5])) + (1/2 + 1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])])^2) + 2 (1/(10 - 2 Sqrt[5]) - Sqrt[5]/(10 - 2 Sqrt[5]) + 2 Sqrt[2/((10 -2 Sqrt[5]) (5 - Sqrt[5]))]) (1/4 + (5 + Sqrt[5])/(4 (5 - Sqrt[5])) + (1/2 + 1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])])^2) + (4 Sqrt[5] ((5 + Sqrt[5])/(5 - Sqrt[5]) + 2 (1/2 + 1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])])^2))/(10 - 2 Sqrt[5]),

(4 (1/2 Sqrt[5/(10 - 2 Sqrt[5])] + 1/(2 Sqrt[10 - 2 Sqrt[5]]) - Sqrt[2/(5 - Sqrt[5])]))/(10 - 2 Sqrt[5]) + (4 (-(1/2) Sqrt[5/(10 - 2 Sqrt[5])] - 1/(2 Sqrt[10 - 2 Sqrt[5]]) + Sqrt[2/(5 - Sqrt[5])]))/(10 - 2 Sqrt[5]) + (8 (1/2 Sqrt[5/(10 - 2 Sqrt[5])] - 1/(2 Sqrt[10 - 2 Sqrt[5]]) + 1/2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] - 1/2 Sqrt[(5 (5 + Sqrt[5]))/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]))/(10 - 2 Sqrt[5]) + (8 (1/4 Sqrt[5/(10 - 2 Sqrt[5])] - 1/(4 Sqrt[10 - 2 Sqrt[5]]) - 1/Sqrt[2 (5 - Sqrt[5])] + Sqrt[1/2 (5 + Sqrt[5])]/(5 - Sqrt[5]) - 1/4 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] - 1/4 Sqrt[(5 (5 + Sqrt[5]))/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]))/(10 - 2 Sqrt[5]) + (8 (-(1/4) Sqrt[5/(10 - 2 Sqrt[5])] + 1/(4 Sqrt[10 - 2 Sqrt[5]]) + 1/Sqrt[2 (5 - Sqrt[5])] - Sqrt[1/2 (5 + Sqrt[5])]/(5 - Sqrt[5]) + 1/4 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] + 1/4 Sqrt[(5 (5 + Sqrt[5]))/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]))/(10 - 2 Sqrt[5]) + (8 (-(1/2) Sqrt[5/(10 -2 Sqrt[5])] + 1/(2 Sqrt[10 - 2 Sqrt[5]]) - 1/2 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] + 1/2 Sqrt[(5 (5 + Sqrt[5]))/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]))/(10 - 2 Sqrt[5]) - (Sqrt[2 (5 + Sqrt[5])] (4/(10 - 2 Sqrt[5]) +2 (-(5/Sqrt[50 - 10 Sqrt[5]]) - 1/Sqrt[10 - 2 Sqrt[5]])^2))/(5 - Sqrt[5]) + (-(1/2) Sqrt[5/(10 -2 Sqrt[5])] - 1/(2 Sqrt[10 - 2 Sqrt[5]])) (4/(10 - 2 Sqrt[5]) + 2 (-(5/Sqrt[50 - 10 Sqrt[5]]) - 1/Sqrt[10 - 2 Sqrt[5]])^2) + 2 (-(1/4) Sqrt[5/(10 - 2 Sqrt[5])] + 1/(4 Sqrt[10 - 2 Sqrt[5]]) - 1/4 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] - 1/4 Sqrt[(5 (5 + Sqrt[5]))/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) (4/(10 -2 Sqrt[5]) + 2 (-(5/Sqrt[50 - 10 Sqrt[5]]) - 1/Sqrt[10 - 2 Sqrt[5]])^2) + (Sqrt[2 (5 + Sqrt[5])] (4/(10 - 2 Sqrt[5]) + 2 (5/Sqrt[50 - 10 Sqrt[5]] + 1/Sqrt[10 - 2 Sqrt[5]])^2))/(5 - Sqrt[5]) + (1/2 Sqrt[5/(10 - 2 Sqrt[5])] + 1/(2 Sqrt[10 - 2 Sqrt[5]])) (4/(10 - 2 Sqrt[5]) + 2 (5/Sqrt[50 - 10 Sqrt[5]] + 1/Sqrt[10 -2 Sqrt[5]])^2) + 2 (1/4 Sqrt[5/(10 - 2 Sqrt[5])] - 1/(4 Sqrt[10 - 2 Sqrt[5]]) + 1/4 Sqrt[(5 + Sqrt[5])/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))] + 1/4 Sqrt[(5 (5 + Sqrt[5]))/((10 - 2 Sqrt[5]) (5 - Sqrt[5]))]) (4/(10 - 2 Sqrt[5]) + 2 (5/Sqrt[50 - 10 Sqrt[5]] + 1/Sqrt[10 - 2 Sqrt[5]])^2)}

{1.77636*10-15,0.,0.}

{0,0,0}

4.正二十面体の外接球を求める

In[]:

Print["外接球:", \[ScriptCapitalR] = Circumsphere[Icosahedron[]]]
Print["外接球:", N[%]]
Print["外接半径:", PolyhedronData["Icosahedron", "Circumradius"]]
Print["外接半径:", N[%]]

Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.2]}],PolyhedronData[pname = "Icosahedron", "Polyhedron"],PolyhedronData[pname, "Circumsphere"]}, Boxed -> False]

Out[]:

外接球:Sphere[{0,0,0},Sqrt[5/8+Sqrt[5]/8]]

外接球:Sphere[{0.,0.,0.},0.951057]

外接半径:1/4 Sqrt[10+2 Sqrt[5]]

外接半径:0.951057

5.正二十面体の内接球の半径を求める

In[]:

Print["内接球:", \[ScriptCapitalR] = Insphere[Icosahedron[]]]
Print["内接球:", N[%]]

Print["内接半径:", PolyhedronData["Icosahedron", "Inradius"]]
Print["内接半径:", N[%]]

Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.2]}],PolyhedronData["Icosahedron", "Polyhedron"],PolyhedronData[pname, "Insphere"]}, Boxed -> False]

Out[]:

内接球:Sphere[{0,0,0},(3+Sqrt[5])/(4 Sqrt[3])]

内接球:Sphere[{0.,0.,0.},0.755761]

内接半径:1/12 (3 Sqrt[3]+Sqrt[15])

内接半径:0.755761

6.正二十面体の表面積を求める

In[]:

PolyhedronData["Icosahedron","SurfaceArea"]

N[%]

Out[]:

5Sqrt[3]

8.66025

7.正二十面体の体積を求める。

In[]:

PolyhedronData["Icosahedron","Volume"]

N[%]

FunctionExpand[%]

Volume[PolyhedronData["Icosahedron","Polyhedron"]]

N[%]

Out[]:

(5 GoldenRatio2)/6

2.18169

2.18169

5/12 (3+Sqrt[5])

2.1816949

8.Dihedral Angles二面角を求める

In[]:
PolyhedronData["Icosahedron", "DihedralAngles"][[1]]
N[PolyhedronData["Icosahedron", "DihedralAngles"][[1]]]*180/3.14159265358979

Out[]:

ArcSec[-(3/Sqrt[5])]

138.1896851°

9.Central Angleを求める

In[]:

\[Phi] = (1 + Sqrt[5])/2
Print["Central Angle=", 2 ArcSin[Sqrt[5 - Sqrt[5]]/Sqrt[10]]]
Print["Central Angle=",2 ArcSin[Sqrt[5 - Sqrt[5]]/Sqrt[10]]*180/3.14159265358979 "°"]
Print["Dihedral Angles Dodecahedron=", 2 ArcTan[\[Phi]]]
Print["Dihedral Angles Dodecahedron=",2 ArcTan[\[Phi]]*180/3.14159265358979 "°"]

Out[]:

Central Angle=2 ArcSin[Sqrt[1/10 (5-Sqrt[5])]]

Central Angle=63.43494882 °

正二十面体のCentral Angle:63.43494882°と正十二面体の二面角DihedralAngle:116.5650512° の和は180°になる。

Dihedral Angles Dodecahedron=2 ArcTan[1/2 (1+Sqrt[5])]

Dihedral Angles Dodecahedron=116.5650512 °

10.正二十面体の頂点座標を求める

In[]:
PolyhedronData["Icosahedron", "VertexCoordinates"]
N[%]
PolyhedronData["Icosahedron", "FaceIndices"] 
With[{poly =PolyhedronData["Icosahedron", "Polyhedron"]},Graphics3D[{MapIndexed[Text[#2[[1]], #, Background -> Yellow] &,PolyhedronCoordinates[poly]], Opacity[.3], poly},Boxed -> False]] 

Out[]:

頂点座標

{{0, 0, -(5/Sqrt[50 - 10 Sqrt[5]])}, {0, 0, 5/Sqrt[50 - 10 Sqrt[5]]}, {-Sqrt[(2/(5 - Sqrt[5]))],0, -(1/Sqrt[10 - 2 Sqrt[5]])}, {Sqrt[2/(5 - Sqrt[5])], 0, 1/Sqrt[10 - 2 Sqrt[5]]}, {(1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]), -(1/2), -(1/Sqrt[10 - 2 Sqrt[5]])},

{(1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]), 1/2, -(1/Sqrt[10 - 2 Sqrt[5]])}, {(-1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]), -(1/2), 1/Sqrt[10 - 2 Sqrt[5]]}, {(-1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]), 1/2, 1/Sqrt[10 - 2 Sqrt[5]]},

{(1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]), -(1/2) Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])], -(1/Sqrt[10 - 2 Sqrt[5]])}, {(1 - Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]),1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])], -(1/Sqrt[10 - 2 Sqrt[5]])},

{(-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]), -(1/2) Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])],1/Sqrt[10 - 2 Sqrt[5]]}, {(-1 + Sqrt[5])/(2 Sqrt[10 - 2 Sqrt[5]]),1/2 Sqrt[(5 + Sqrt[5])/(5 - Sqrt[5])], 1/Sqrt[10 - 2 Sqrt[5]]}}

頂点座標

{{0., 0., -0.951057}, {0., 0., 0.951057}, {-0.850651, 0., -0.425325}, {0.850651, 0.,0.425325}, {0.688191, -0.5, -0.425325}, {0.688191, 0.5, -0.425325}, {-0.688191, -0.5, 0.425325}, {-0.688191, 0.5,0.425325}, {-0.262866, -0.809017, -0.425325},

{-0.262866,0.809017, -0.425325}, {0.262866, -0.809017, 0.425325}, {0.262866,0.809017, 0.425325}}

面リスト

{{2, 12, 8}, {2, 8, 7}, {2, 7, 11}, {2, 11, 4}, {2, 4, 12}, {5, 9, 1}, {6, 5, 1}, {10, 6, 1}, {3, 10, 1}, {9, 3, 1}, {12, 10, 8}, {8,3, 7}, {7, 9, 11}, {11, 5, 4}, {4, 6, 12}, {5, 11, 9}, {6, 4,5}, {10, 12, 6}, {3, 8, 10}, {9, 7, 3}}

頂点番号

11.正二十面体の展開図を求める

In[]:

PolyhedronData["Icosahedron","Net"]

Out[]:

 

12. Mean Square Spherical Radiusを求める

In[]:

Integrate[x^2 + y^2 + z^2, {x, y, z} \[Element]PolyhedronData[{"Icosahedron", #}, "Polyhedron"]]/PolyhedronData["Icosahedron", "Volume"] & /@PolyhedronData["Icosahedron", "Orientations"]
N[%]
Integrate[x^2 + y^2 + z^2, {x, y, z} \[Element]PolyhedronData[{"Icosahedron", #}, "Polyhedron"]]/PolyhedronData["Icosahedron", "Volume"] & /@PolyhedronData["Icosahedron", "Orientations"] // FullSimplify
N[%]

Out[]:

文字数が多いので省略

{0.392705, 0.392705, 0.392705}

{3/40 (3+Sqrt[5]),3/40 (3+Sqrt[5]), 3/40 (3+Sqrt[5])}

{0.392705, 0.392705, 0.392705}

13. 正二十面体の慣性InertiaTensorを求める

(*InertiaTensor単位質量を仮定した多面体立体の慣性テンソル*)

In[]:

PolyhedronData["Icosahedron", "InertiaTensor"]
N[%]

MomentOfInertia[PolyhedronData["Icosahedron", "Polyhedron"]]/Volume[PolyhedronData["Icosahedron", "Polyhedron"]] // FullSimplify
N[%]

Out[]:

{{1/20 (3+Sqrt[5]), 0, 0}, {0, 1/20 (3+Sqrt[5]), 0}, {0, 0,1/20 (3+Sqrt[5])}}

{{0.261803, 0., 0.}, {0., 0.261803, 0.}, {0., 0., 0.261803}}

{{1/20 (3+Sqrt[5]), 0, 0}, {0, 1/20 (3+Sqrt[5]), 0}, {0, 0,1/20 (3+Sqrt[5])}}

{{0.261803, 0., 0.}, {0., 0.261803, 0.}, {0., 0., 0.261803}}

14.多角形の双対性を求める

 正多面体の面の形をaとする。面の数をfとする。正二十面体はa=3、f=20、af=60。正十二面体はa=5、f=12、af=60。正二十面体と正十二面体は双対である。

In[]:

Table[Graphics3D[{EdgeForm[{Thin, Blue}],FaceForm[{Pink, Opacity[0.6]}], DualPolyhedron[f[1]], f[1]},Boxed -> False], {f, {Icosahedron, Dodecahedron}}]

Out[]:

15.正二十面体諸元の表

    Mathematicaの表作りする為のスクリプトは全て記述したが、出力は最後の結果の表だけを記述した。解の一部は厳密解ではなく、近似解である。

Out[]:

In[]:

(*正二十面体Icosahedron*)
ss = Table[{PolyhedronData["Icosahedron", "SchlaefliSymbol"]}]
v = Table[{PolyhedronData["Icosahedron", "VertexCount"]}]
e = Table[{PolyhedronData["Icosahedron", "EdgeCount"]}]
f = Table[{PolyhedronData["Icosahedron", "FaceCount"]}]
ce = Table[{PolyhedronData["Icosahedron", "Centroid"]}]
ci = Table[{PolyhedronData["Icosahedron", "Circumradius"]}]
cin = Table[{N[%]}]
in = Table[{PolyhedronData["Icosahedron", "Inradius"]}]
inn = Table[{N[%]}]
su = Table[{PolyhedronData["Icosahedron", "SurfaceArea"]}]
sun = Table[{N[%]}]
vo = Table[{Volume[PolyhedronData["Icosahedron", "Polyhedron"]]}]
von = Table[{N[%]}]
da = Table[{PolyhedronData["Icosahedron", "DihedralAngles"][[1]]}]
dan = Table[{N[PolyhedronData["Icosahedron", "DihedralAngles"][[1]]]*180/3.14159265358979}]
ve = Table[{PolyhedronData["Icosahedron", "VertexCoordinates"]}]
ven = Table[{N[%]}]
fa = Table[{PolyhedronData["Icosahedron", "FaceIndices"]}]
it = Table[{PolyhedronData["Icosahedron", "InertiaTensor"]}]
itn = Table[{N[%]}]
TableOfValues1 =Prepend[{ss, v, e, f, ce, ci, cin, in, inn, su, sun, vo, von, da,dan, ve, ven, fa, it, itn}, {"値"}] 
Grid[TableOfValues1]
TableOfValues2 =MapThread[Prepend, {TableOfValues1, {"正二十面体Icosahedron", "SchlaefliSymbol","頂点数VertexCount", "辺の数EdgeCount", "面の数FaceCount", "重心Centroid","外接半径Circumradius", "外接半径Circumradius", "内接半径Inradius","内接半径Inradius", "表面積SurfaceArea", "表面積SurfaceArea", "体積Volume","体積Volume", "Dihedral Angles二面角", "Dihedral Angles二面角°","頂点座標VertexCoordinates", "頂点座標VertexCoordinates","面リストFaceIndices", "慣性テンソルInertiaTensor","慣性テンソルInertiaTensor"}}]
Grid[TableOfValues2, Frame -> All] 

おまけ

 外接球と内接球を纏めて描く。ロシアの人形でマトリョーシカがある。外側の人形を外すと内から、また同じ人形が出てくる。昔、プーチンが出続けた人形があった。それに似てなくもない。またトラと思いきや馬鹿トラでもある、またトラ∩馬鹿トラ。習近平しかり。

Graphics3D[{EdgeForm[{Thin, Blue}], FaceForm[{Pink, Opacity[0.2]}],Icosahedron[], Circumsphere[Icosahedron[]], Icosahedron[],Insphere[Icosahedron[]] }, Boxed -> False]

Print["外接半径:", PolyhedronData["Icosahedron", "Circumradius"]]
Print["外接半径:", N[%]]
Print["内接半径:", PolyhedronData["Icosahedron", "Inradius"]]
PolyhedronData["Icosahedron", "Inradius"]
Print["内接半径:", N[%]]
PolyhedronData["Icosahedron", "Circumradius"]
R = N[%]
PolyhedronData["Icosahedron", "Inradius"]
r = N[%]
Print["内接半径/外接半径%=", 100 r/R]

Out[]:

外接半径:1/4 Sqrt[10+2 Sqrt[5]]

外接半径:0.9510565163

内接半径:1/12 (3 Sqrt[3]+Sqrt[15])

内接半径:0.7557613141

内接半径/外接半径%=79.46544723


横浜金沢区の植物の数学・花弁編Vol.1

2023-08-21 | 数学

横浜金沢区の植物の数学・花弁編Vol.1

相当な字数になり、goo blogの字数制限と言う大人の事情でVol.1~Vol.2に分割した。

 はじめに

 横浜金沢区の植物の数学を記述した。その中で植物の花弁についての考察を文末に記載したが、これはこれはほんのさわり程度であった。植物の花の構造で真っ先に目に付くのは花弁(はなびら)である。代表的な梅、桜の5枚から、タンポポ、ダリア等多数の花弁が付く物があり、多種多様である。一重の花に限っても花弁の形は楕円形、長楕円形、卵状楕円形、その他定義できない細長い物等多数ある。更に八重花を含めると無数にある。花の一般的構造は、花弁の外側に萼片があり、その下に萼筒がある。一方、花弁の内にある柱頭の周りに複数の花糸があり、その先に葯が付く。かなりの分量になる事が予想されるので、花弁編として纏めた。使うツールは数学ソフトWolfram Mathematicaである。このソフトはフリーOSLinuxに添付されている無料版のソフトだが、強力なツールで、グラフ化が優れている。このソフトはWolfram MathematicaURLに実例が豊富に記載されている。本来このソフトは有料だが、ボードPCRaspberry PiのフリーソフトLinux OSに何故か、最初から含まれている。このソフトは有料版のサブセット版である。例えば、環(トーラス)の関数は含まれていない。とは云えWindows10版数学フリーソフトMaximaよりは高機能だ。Raspberry PiボードPCは高専ロボコンでは定番になっている。実際、温湿度センサー、GPS制御に使い易い。制御ソフトはPythonを使う。MathematicaPython等強力な無料ソフトが使える。電気代等諸物価が高騰し続ける昨今、有り難い。ミサイルなんか要らない。下らない物に金を使うのは、外道の常套手段。ここで扱う数学は中程度で、テンソルとか難解な数式は出てこない。高校程度の数学の話をすると、極限値、微分の例題では、問題を解く前に分子・分母の式変形をして、微分公式に乗せて問題を解く。昔はこの方法しかなかったが、今は数学ソフトで例題をそのまま入力すればPCが答を出してくれる。分子・分母の式変形が分からず数学を投げ出す事が多い。数学ソフトではこの作業は不要。更に、積分では置換積分、部分積分の面倒なテクニックを知らなくても、数学ソフトがBlackboxで解いてくれる。昔はA4数頁に解法を長々と鉛筆で書いて、やっと解を得た気持ちの良い達成感が得られたが、今は・・・。Windows10を使っていると勝手に更新プログラムをダウンロードして、インストールされてしまう。そして作業中に再起動してしまう事もある。更新プログラムは百害あって一利なし。問題なく動作している物に変更を加えるとシステムの脆弱性を助長するだけ。挙句の果てにブートローダーを破壊する。そこで回復ドライブ等の手を借りる。この段階でワープロ、画像ソフト等のアプリケーションプログラムは消失してしまう。回復は一筋縄ではいかぬ、それなら最初からWindows10を再インスートルした方が大幅に時間短縮になる。折角手間と時間をかけて修復してもWindows10システムだけしか残らず、ワープロ、画像ソフト等のアプリケーションプログラムを再インストールする羽目になる。ワープロ・ソフトでこれら植物記事を書く際、萼片等植物特有の熟語をその都度、単語登録している。再インストールとなるとこれら時間の掛かる作業が全て水泡に帰する。Windows10は常駐プログラムが多数走っており、PC性能の足を引っ張っている。services.mscプログラムで一時的に更新OFFにできるが、Windows10services.msc設定を書き換えてしまうので、どうにもならない。Product Keyの確認も常駐しているが、これらは使用者にはどうでもいい話。結論から云うとどうでもよい常駐プログラムが多すぎる。普段ルーターの電源はOFFにしており、インターネットに接続していない。セキュリティ更新なんて意味が無い。一方、Linux OSは起動もOFFWindows10に比べてビックリする程速い。PCのハード性能はWindows10PCに比べて遥かに劣るが、下らない常駐プログラム数は少なく、軽いOS。その分Windows10と異なりブートローダーを破壊する事も無い。Windows10を使うのは、RAW現像ソフトCanon Digital Photoprofessional 4が目的で、CanonLinux版をサポートしてくれれば、Windows10とおさらばできだろう。本題に戻り、植物は生物進化の過程で複雑な形状を体得しており、数式化は不可能で、近似の真似事になる。野草は更に難しい。それに比べて園芸種は多少易しい。まず、先人達の業績から述べる。

シリーズ物

  横浜金沢区の植物の数学

 横浜金沢区の植物の数学Ⅱ

 横浜金沢区の植物の数学・花弁編Vol.2

 横花金沢区の数学・花弁編と曼荼羅・弥勒

1. フィボナッチ Fibonacci 1170~1240

 西洋ではエジプト、ギリシャ、アラビア数学の系譜で、ルネッサンス以降イタリアで算術、代数学が勃興した。キリスト教的ヨーロッパ世界が生んだ最初の偉大な数学者。レオナルド・ダ・ピサ Leonardo daPisa,レオナルド・ピサーノ Leonardo Pisano とも云う。イタリアのピサ出身で名にPisaが付く。当時、どこどこの出身で、誰々と呼ばれていた。地中海地域の商業活動に携わる傍ら、高度に発達したアラビア数学の技法を身につけ、後世に大きな影響を与える著作を書いた。その名声は,時の神聖ローマ帝国皇帝フリードリヒ2世にも届き、晩年にはピサ共和国から「卓越し学識あるレオナルド」の名を与えられ、年金を供与されたことが記録に残されている。主著「アバクスの書Liber abaci(算術の書)」、初版1202年、改訂版1228年。インド・アラビア式数字(今日の算用数字)による筆算法をヨーロッパ世界に伝えた画期的な書物である。その最終章は,フワーリズミーやアブー・カーミルの二次方程式論を取り扱っている。アラビアの代数学を伝えた点で、彼はヨーロッパ後期中世の商業用代数学(コス式技法)の祖とみなされる。実用幾何学は、測定問題のみでなく、証明問題をも考察している。「精華」、「平方の書」は、高度な数論的問題を扱った独創的な著作で,例えば二次の連立不定方程式を解いている。「アバクスの書」は多くの後継者をもち、後のヨーロッパ数学を、算術的,代数的な物にするのに大きな力を発揮したが、独創的な「精華」、「平方の書」は,殆ど読まれる事なく終わった。ヨルダヌス N.Jordanus とともに、13世紀の孤高の数学者ぶりを示しているといってよいか。この頃の日本は、鎌倉時代で承久の乱は1221年。「算盤の書」に記載されていた「ウサギの問題」の記述で「フィボナッチ数」が有名になった。6千年前の古代メソポタミア文明、4千年前の古代中国の夏王朝の頃、西欧は森林で覆われていた田舎であった。それが、エジプト、ギリシャ文明を吸収し、ルネサンスを経て世界中に植民地支配を形成し、更に産業革命を起こし、我先に帝国支配の列強国にのし上がった。西欧史を一行で纏めるとこうなる。ヒットラー・ナチス、プーチン・ロシア、イスラエルはこの線上にある。

2.序章として、フィボナッチ数 Fibonacci sequenceを求める。

 数式の文字・記号はワープロで認識できる文字に変換している。数学独自な微積分等の記号・文字を正確に記述するには図で挿入する事になるが、管理が複雑になるので止めた。

Mathematicaを使って、フィボナッチ数を算出した。黄金比 GoldenRatio関数を使う。一般に入力Inに関数式を書いて、求める解を出力Outを出す。20個迄求めた。

In[1]:= Table[Round[GoldenRatio^n/Sqrt[5]],{n,20}]

Out[1]= {1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765}

フィボナッチ数列

 フィボナッチ数はヒマワリの種、松ボックリの配列等に見られる。      

3.黄金比 GoldenRatio

 これも序章。Mathematicaを使って、黄金比を算出した。黄金比 GoldenRatio関数を使う。10桁迄求めた

In[1]:= N[GoldenRatio,10]

Out[1]= 1.618033989
 

4.黄金角 GoldenAngle

 これも序章。Mathematicaを使って、黄金角を算出した。黄金角 GoldenAngle関数を使う。

(*黄金角とは、完全な角度を黄金比で与えられる2つの部分に分ける角である.黄金角の厳密値.*)

In[1]:= FunctionExpand[GoldenAngle]

Out[1]= (3-Sqrt[5]) \[Pi]

(*
ラジアンと度の値を近似する*)
In[2]:=N@{GoldenAngle,GoldenAngle/Degree}

Out[2]= {2.39996,137.508}

ここからが本番で、実際に横浜金沢区で撮影した植物が フィボナッチ数、黄金比に適合するか、検証する。

5.花弁

 ここからは花弁にフォーカスして、話を進める。植物によって花弁の数が異なる。代表例が5枚の梅、桜等でバラ科に属し、他にも草木で花弁数5枚の植物が多い。写真は正面から撮影するので凡庸になってしまう。花弁を数式化するには極座標、三角関数を使う。偶然枚は容易に数式化できるが、奇数は遥かに難しい。また、花弁数が16枚と多い物の方が花弁の形が形式化しているので、数式化し易い。一方、花弁数が少ない植物は形が複雑で数式化は容易ではない。Mathematicaを使って、PolarPlotで近似できる。花弁の数が少ない花から始めが、花弁1,2,3枚の花は見つけていない。

5.1.四花弁

 四花弁から始める。

In[1]:= Rotate[PolarPlot[Evaluate[Table[Abs[Sin[\[Theta]+i]],{i,0,2 Pi,2 Pi/4}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<0.705],ColorFunctionScaling->False,PlotPoints->6480,MaxRecursion->15],45Degree]

Out[1]=

ヤマボウシ Cornus kousa 山法師

白色の花ではなく総苞片

金沢区 202159

上記の写真にPolarPlot_flower_4b を重ねた。

5.2.五花弁

 先に述べたように五花弁は非常に多いので抜粋して記載する事になる。

In[1]:= Rotate[PolarPlot[Evaluate[Table[Abs[3Cos[\[Theta]/2+i]/Sin[\[Theta]/2+i]],{i,0,2Pi,Pi/5}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<4.12],ColorFunctionScaling->False,PlotPoints->15000,MaxRecursion->15],90Degree]

Out[1]=

5.2.1ウメ Prunus mume

花弁の代表で、記章、校章にもなっている。

金沢区 2021211

上記の写真にPolarPlot_flower_5c を重ねた。

5.2.2カワズザクラPrunus X kanzakura cv. Kawazu-zakura 河津桜

 サクラも五花弁の代表

金沢区 202235

上記の写真にPolarPlot_flower_5c を重ねた。

5.3.六花弁

5.3.1花壇の花

In[1]:=Rotate[PolarPlot[Evaluate[Table[Abs[Sin[\[Theta]+i]],{i,0,2 Pi,2 Pi/6}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<0.867],ColorFunctionScaling->False,PlotPoints->6480,MaxRecursion->15],30Degree]

Out[1]=

花壇の花

金沢区 2023724

上記の写真にPolarPlot_flower_6b を重ねた。

5.3.2ザクロPunica granatum 柘榴

前述のPolarPlot_flower_6bと少し形が異なる。

In[1]:=Rotate[PolarPlot[Evaluate[Table[Abs[Sin[\[Theta]+i]],{i,0,2 Pi, Pi/3}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<0.865],ColorFunctionScaling->False,PlotPoints->640,MaxRecursion->8],30Degree]

Out[1]=

ザクロ Punica granatum 柘榴

花弁ではなく、肉厚な6枚の萼片。中は複雑な構造になっている。動物が果実として食らう所。

金沢区 2022524

上記の写真にPolarPlot_flower_6c を重ねた。

5.4.八花弁

In[1]:=Rotate[PolarPlot[Evaluate[Table[Abs[Sin[\[Theta]+i]],{i,0,2 Pi, Pi/4}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<0.708],ColorFunctionScaling->False,PlotPoints->640,MaxRecursion->8],45Degree]

Out[1]=

花壇の花

金沢区 2023724

上記の写真にPolarPlot_flower_8c を重ねた。

5.5.十二花弁

5.5.1キヨスミシラヤマギク清澄白山菊

In[1]:=Rotate[PolarPlot[Evaluate[Table[Abs[Cos[8\[Theta]/4+i]/Sin[8\[Theta]/4+i]],{i,0,2Pi,Pi/3}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<1.728],ColorFunctionScaling->False,PlotPoints->15480,MaxRecursion->15],15Degree]

Out[1]=

キヨスミシラヤマギク清澄白山菊

金沢区 2021115

上記の写真にPolarPlot_flower_12a を重ねた。

5.5.2フクジュソウ Adonis amurensis 福寿草

前述のPolarPlot_flower_12aと少し形が異なる。

In[1]:=Rotate[PolarPlot[Evaluate[Table[Abs[Sin[\[Theta]+i]],{i,0,2 Pi,2 Pi/12}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<0.708],ColorFunctionScaling->False,PlotPoints->6480,MaxRecursion->15],15Degree]

Out[1]

フクジュソウ Adonis amurensis 福寿草

金沢区 2021316

上記の写真にPolarPlot_flower_12d を重ねた。

5.6.十四花弁

5.6.1花壇の花

In[1]:=Rotate[PolarPlot[Evaluate[Table[Abs[Cos[7\[Theta]/3+i]/Sin[7\[Theta]/3+i]],{i,0,2Pi,Pi/3}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<0.57],ColorFunctionScaling->False,PlotPoints->9480,MaxRecursion->15],12.857143Degree]

Out[1]=

花壇の花

金沢区 2023728

上記の写真にPolarPlot_flower_14 を重ねた。

5.6.2花壇の花
前述のPolarPlot_flower_14と少し形が異なる。
Rotate[PolarPlot[Evaluate[Table[Abs[Sin[\[Theta]+i]],{i,0,2 Pi,2 Pi/14}]],{\[Theta],0,2 Pi},PlotStyle->Thick,ColorFunction->Function[{x,y,t,r},Hue[r]],Axes->False,RegionFunction->Function[{x,y,t,r},r<0.78],ColorFunctionScaling->False,PlotPoints->6480,MaxRecursion->15],12.857Degree]

Out[1]=

花壇の花

金沢区 2023724

上記の写真にPolarPlot_flower_14 を重ねた。

続編:横浜金沢区の植物の数学・花弁編Vol.2