【初心者向け】三角関数と指数・対数関数の「巡回性」について。

今回は大上段に構えて**既存知識**(<font color=blue>Existing Knowledge</font>)の**点検**(<font color=blue>Inspection</font>)と**保守**(<font color=blue>Maintenance</font>)という話から始めましょう。

**数理的問題解決方法**(<font color=blue>Mathematical Problem Solving</font>)の世界は、特に厳密な手続きを必要とします。「<font color=purple>すでに正しいことが明らかになっている事柄を基にして別の新しい事柄が正しいことを説明していく</font>」**演繹法**(<font color=blue>Deduction</font>)の**論理**(<font color=blue>Logic</font>)と「<font color=purple>いくつかの具体例を調べて共通性を見付ける</font>」**帰納法**(<font color=blue>Induction</font>)や「<font color=purple>既習の内容との類似性に着目して新しい事柄を見いだす</font>」**類推法**(<font color=blue>Analogy</font>)の論理を突き合わせ、<font color=red>適切</font>かつ合理的な**手続き**(<font color=blue>Method</font>)に従って粛々と**点検**(<font color=blue>Inspection</font>)と**再点検**(<font color=blue>Re-inspection</font>)を重ねていくのです。
[小学校算数科数学的な考え方「演繹的な考え方」](https://www.programming-edu.com/2017/05/29/deductive-thinking/)
[適切なって英語でなんて言うの？](https://eikaiwa.dmm.com/uknow/questions/33792/)

>**appropriate**は「規定のルールに合致する</font>」
**suitable**は「状況的にふさわしい</font>」
**proper**は「社会的な基準に照らし合わせ、礼儀にかなっている</font>」
**right**は「大まかに回答として間違ってない、道義的に正しいと見做される</font>」

それではおもむろに自分の**三角関数**(<font color=blue>Trigonometric Function</font>)についての知識の保守点検作業に入ります。
![20191028123539.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/6ecec94f-f795-b69a-df0e-7cdc9fa8dde7.gif)
[三角関数 - Wikipedia](https://ja.wikipedia.org/wiki/%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0)

>**平面三角法**における、角の大きさと線分の長さの関係を記述する関数の**族**(<font color=blue>Famiry</font>)および、それらを拡張して得られる関数の総称である。鋭角を扱う場合、その値は対応する直角三角形の二辺の長さの比となり**三角比**(<font color=blue>Triangular Ratio</font>)とも呼ばれる。三角法に由来する三角関数という呼び名のほかに、**半径**<font color=green>1</font>の**単位円**(<font color=blue>Unit Circle</font>)を用いた定義に由来する**円関数**（<font color=blue>Circular Function</font>）という呼び名もある。

①ある意味「**安楽椅子数学者**(<font color=blue>Armchair Mathematician</font>)」っぽい雰囲気が漂う**三角比**(<font color=blue>Triangular Ratio</font>)の世界には**演繹法**(<font color=blue>Deduction</font>)の産物という印象がある。実際には測量技術の流れもあるから**帰納法**(<font color=blue>Induction</font>)と完全に無縁でもないだろうが「<font color=purple>半円しか描けない</font>」制約を自力で乗り越えられなかった事実は動かない。
[【Rで球面幾何学】「半円しか描けなかった」世界の思い出？](https://qiita.com/ochimusha01/items/cf74b1fff650edb0a496)
![CFS02.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2dfd4ce6-a552-f9c1-31c2-d474d39fad5c.gif)
②一方、現在につながる**円関数**（<font color=blue>Circular Function</font>）の世界は天体や等速円運動の物理的観測から出発した**帰納法**(<font color=blue>Induction</font>)の産物と言える。
[【初心者向け】物理学における「単位円筒(Unit Cylinder)」の概念について。](https://qiita.com/ochimusha01/items/ced1c21b4411e79cdcbe)
**XY軸**（円弧）
![20191029133633.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0e55e673-d89e-6d33-6e33-9edf6fecdbdd.gif)
**XZ軸**（Cos波）
![20191029193635.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/529cc2b1-3476-4eba-1c07-a79cc8ba16d7.gif)
**YZ軸**（Sin波）
![20191029194000.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/fa66cf1a-291e-8e76-8ea7-c586efcb1e21.gif)

>特に sin, cos は幾何学的にも解析学的にも良い性質を持っているので、様々な分野で用いられる。例えば波や電気信号などは正弦関数と余弦関数を組み合わせることで表現することができる。この事実はフーリエ級数およびフーリエ変換の理論として知られ、音声などの信号の合成や解析の手段として利用されている。
>
>他にもベクトルの外積や内積は正弦関数および余弦関数を用いて表すことができ、ベクトルを図形に対応づけることができる。

#三角関数の基礎定理①ピタゴラスの定理。

**ピタゴラスの定理**(<font color=blue>Pythagorean Theorem</font>)…**円概念**(<font color="blue">Circle Concept</font>)/**球面概念**(<font color="blue">Sphere Concept</font>)そのものを構築する基本演算。
[【初心者向け】ピタゴラスの定理あるいは三平方の定理からの出発](https://qiita.com/ochimusha01/items/4c7f731b0ef3cc998aa1)
![20190918061420.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c7cb8211-2ac7-8acb-c35a-573af944e931.gif)

* **半径**<font color="green">r</font>=<font color="green">sqrt(x座標^2+y座標^2)</font>…ただし**直交座標系**(<font color="blue">Cartesian Coordinate System</font>)<font color="green">{x座標,y座標}</font>において円の**中心**(<font color="blue">Center</font>)が**原点**<font color="green">{0,0}</font>の場合。**半径**<font color="green">1</font>の**単位円**(<font color="blue">Unit Circle</font>)<font color="green">sqrt(x^2+y^2)=1</font>の<font color="green">r</font>**倍**の**同心円集合**(<font color="blue">Concentric Set</font>)を構築する。<font color="green">y=±sqrt(1-x^2)</font>あるいは<font color="green">x=±sqrt(1-y^2)</font>の**計算集合**(<font color="blue">Calculation Set</font>)に従ってそれぞれの座標を求める。
* **半径**<font color="green">r</font>=<font color="green">sqrt(x座標^2+y座標^2+z座標^2)</font>…ただし**直交座標系**<font color="green">{x座標,y座標,z座標}</font>において円の**中心**が**原点**<font color="green">{0,0,0}</font>の場合。**半径**<font color="green">1</font>の**単位球面**(<font color=blue>Unit Sphere</font>)<font color=green>sqrt(x^2+y^2+z^2)=1</font>の<font color=green>r</font>**倍**の**同心球面集合**(<font color=blue>Homocentric Sphere Set</font>)を構築する。<font color=green>xy</font>面では<font color=green>y=sqrt(1-x^2)</font>あるいは<font color=green>x=sqrt(1-y^2)</font>、<font color=green>xz</font>面では<font color=green>z=sqrt(1-x^2)</font>あるいは<font color=green>x=sqrt(1-z^2)</font>、<font color=green>yz</font>面では<font color=green>z=sqrt(1-z^2)</font>あるいは<font color=green>x=sqrt(1-z^2)</font>の計算でそれぞれの座標を求める。

私が思うに、ここで確実にしっかり把握すべきは「**数直線概念**(<font color=blue>Number Line Concept</font>)」との連続性です。
[【Rで球面幾何学】等差数列(算術数列)②数直線概念から同心円集合概念へ](https://qiita.com/ochimusha01/items/2a16c3cba3f88986c767)
![20200109155657.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/75d73c90-9af4-26aa-b976-65065d64f546.gif)
何故なら実は**ピタゴラスの定理**(<font color="blue">Pythagorean Theorem</font>)は、**二項展開** (<font color=blue>binomial expansion</font>)の以下の特殊型に過ぎず直交の概念と深く関わってくるからです。

* **余弦定理**(<font color=blue>cosine formula</font>)<font color=green>a^2=(b-c)^2=b^2+c^2−2bc*cos(α)</font>において<font color=green>α=90度</font>(<font color=blue>π/2ラジアン</font>)の場合、<font color=green>cos(α)=0</font>なので<font color=green>a^2=b^2+c^2−2bc*0=b^2+c^2</font>となる。

[【初心者向け】パスカルの三角形と二項定理または二項展開](https://qiita.com/ochimusha01/items/d668b19d5389b52e0dd2)

あと(<font color=blue>現在の私にはまだちゃんとした形で説明出来ませんが</font>)ここでの半径<font color=blue>r</font>の概念はその後**ノルム**(<font color=blue>Norm</font>)の概念に拡張される筈で、そういう意識も重要そうです。
[ノルムとは - コトバンク](https://kotobank.jp/word/%E3%83%8E%E3%83%AB%E3%83%A0-112587)
[ノルムの意味とL1，L2，L∞ノルム](https://mathtrain.jp/lpnorm)
[関数の内積とノルムの定義を総ざらい！意外に重要な単元！](https://univ-study.net/inner-product-norm/)
**ハミルトンの四元数**(<font color=blue>quaternion</font>)が<font color=green>Re+Xi+Yj+Zk</font>で表されるのもこれですね。そう、**ノルム**は**スカラー量**…
[【Rで球面幾何学】ハミルトンの四元数は何を表しているのか？](https://qiita.com/ochimusha01/items/aff8d52f20af01d13bed)
![square003.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a3185dfd-eb2e-00be-01b7-79cd6d8f019f.gif)
![square009.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c8853011-e9d4-2c66-9242-42199a31dc67.gif)
[【Rで球面幾何学】そもそも「内積」とは「外積」とは何か？](https://qiita.com/ochimusha01/items/b34f73d13eef785365cd)
![20191021210648.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/82515a21-28ac-756f-2f7c-980acb027b44.gif)

#三角関数の基礎定理②合成角の公式。

[三角関数の合成公式](http://w3e.kanazawa-it.ac.jp/math/category/sankakukansuu/kahouteiri/henkan-tex.cgi?target=/math/category/sankakukansuu/kahouteiri/gouseikousiki.html)

* <font color=green>α</font>(<font color=blue>-180度<=α<=180度あるいは-πラジアン<=α<=πラジアン</font>)が与えられ<font color=green>cos(α)</font>=<font color=green>b/sqrt(a^2+b^2)</font>,<font color=green>sin(α)</font>=<font color=green>a/sqrt(a^2+b^2)</font>の条件が満たされる時、<font color=green>a×sin(θ)+b×cos(θ)</font>=<font color=green>sqrt(a^2+b^2)×sin(θ+α)</font><br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0d2030bc-c67b-6c2b-f278-953c48e13763.png)
* <font color=green>β</font>(<font color=blue>-180度<=α<=180度あるいは-πラジアン<=α<=πラジアン</font>)が与えられ<font color=green>cos(β)</font>=<font color=green>a/sqrt(a^2+b^2)</font>,<font color=green>sin(β)</font>=<font color=green>b/sqrt(a^2+b^2)</font>の条件が満たされる時、<font color=green>a×sin(θ)+b×cos(θ)</font>=<font color=green>sqrt(a^2+b^2)×cos(θ-β)</font><br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/36e386c9-eca3-d765-6ed3-652b37dd6800.png)

<font color=purple>統計言語Rによる検算結果</font>

```R
#theta_a(pi/3ラジアン(60度)=1.047198
theta_a<-pi/3
> pi/3
[1] 1.047198

#theta_c=π/4ラジアン(45度)=0.7853982
> theta_c
[1] 0.7853982
> pi/4
[1] 0.7853982

#a×sin(θ)+b×cos(θ)=sin(θ+α)
> a<-sin(theta_a)
> a
[1] 0.8660254
> b<-cos(theta_a)
> b
[1] 0.5
> a*sin(theta_c)+b*cos(theta_c)
[1] 0.9659258
> sin(theta_a+theta_c)
[1] 0.9659258

#a×sin(θ)+b×cos(θ)=cos(α-θ)
> a<-cos(theta_a)
> a
[1] 0.5
> b<-sin(theta_a)
> b
[1] 0.8660254
> a*sin(theta_c)+b*cos(theta_c)
[1] 0.9659258
> cos(theta_c-theta_a)
[1] 0.9659258
```

この様に**半径**<font color=green>1</font>の**単位円**(<font color=blue>Unit Circle</font>)上では**半径**<font color=green>1</font>=<font color=green>sqrt(a^2+b^2)</font>と置けるので、上掲式は以下の様に統合されるのです。

* (<font color= blue>三角形の内角の和が180度(πラジアン)でそのうち1角が90度(π/2ラジアン)を占める</font>)**直角三角形の特徴**から合計が<font color=purple>90度</font>(<font color=blue>π/2ラジアン</font>)となる**角**<font color=purple>a0b/b0a</font>=<font color=green>α</font>(<font color=blue>-180度<=α<=180度あるいは-πラジアン<=α<=πラジアン</font>),<font color=purple>0ba/ab0</font>=<font color=green>β</font>(<font color=blue>90度~-90度あるいはπ/2ラジアン~-π/2ラジアン</font>)が与えられ、<font color=purple>X</font>**成分**(<font color=blue>X Elements</font>)<font color=green>a</font>=<font color=green>cos(α)</font>=<font color=green>sin(β)</font>,<font color=purple>Y</font>**成分**(<font color=blue>Y Elements</font>)<font color=green>b</font>=<font color=green>cos(β)</font>=<font color=green>sin(α)</font>と置ける時、<font color=green>a×sin(θ)+b×cos(θ)</font>=<font color=green>cos(θ-β)</font>=<font color=green>sin(θ+α)</font><br>![TEST001.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2cbfd8e5-53c4-49a0-6efc-ff903cce5e77.gif)

<font color=purple>統計言語Rによるグラフ化</font>

```R
#複素平面（球面）
Complex_plane<-function(x){
theta<-c(seq(0, pi, length=180),seq(-pi, 0, length=180))
dr<-seq(0,2*pi,length=360)

plot(cos(theta),sin(theta),asp=1,xlim=c(-1,1), ylim=c(-1,1), type="l", main="Unit Circle",xlab="X Elements(Cos(θ))", ylab="Y Elements(Sin(θ))")

#線を引く
segments(cos(dr[x]),0,0,0,col=rgb(0,1,0),lwd=2)
segments(cos(dr[x]),sin(dr[x]),cos(dr[x]),0,col=rgb(0,0,1),lwd=2)
segments(cos(dr[x]),sin(dr[x]),0,0,col=rgb(1,0,0),lwd=2)

#文字追加
text(c(cos(dr[x]),cos(dr[x]),0),c(0,sin(dr[x]),0), labels=c("a","b","0"),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)),cex=c(2,2,2))

#内積を塗りつぶす
polygon(c(cos(dr[x]),cos(dr[x]),0), #x
c(sin(dr[x]),0,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
legend("bottomleft", legend=c("a=Cos(θ)","b=Sin(θ)","sqrt(a^2+b^2)=1", "inner product"), lty=c(1,1),col =c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0),c(200,200,200)))

}
#アニメーションさせてみる。

library("animation")
Time_Code=c(1,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345)
saveGIF({
for (i in Time_Code){
　　Complex_plane(i)
}
}, interval = 0.1, movie.name = "TEST.gif")
```

<font color=purple>統計言語Rによる検算結果</font>

```R
#theta_a(pi/3ラジアン(60度)
theta_a<-pi/3
#theta_b(pi/6ラジアン(30度)
theta_b<-pi/6
#theta_a+theta_b=π/2ラジアン(90度)
theta_a+theta_b
> pi/3+pi/6
[1] 1.570796
> pi/2
[1] 1.570796

#theta_c=π/4ラジアン(45度)=0.7853982
> theta_c
[1] 0.7853982
> pi/4
[1] 0.7853982

#a=cos(theta_a)=sin(theta_b)
> a<-cos(theta_a)
> cos(theta_a)
[1] 0.5
> sin(theta_b)
[1] 0.5

#b=sin(theta_a)=cos(theta_b)
> b<-sin(theta_a)
> sin(theta_a)
[1] 0.8660254
> cos(theta_b)
[1] 0.8660254

#a×sin(θ)+b×cos(θ)=cos(theta_b-θ)=sin(θ+theta_a)
> a*sin(theta_c)+b*cos(theta_c)
[1] 0.9659258
> cos(theta_c-theta_b)
[1] 0.9659258
> sin(theta_c+theta_a)
[1] 0.9659258
```
実はこの表現には問題があり、**集合論**(<font color= blue>Set Theory</font>)的に言い直そうとすると、とりあえずこうなります。

* (<font color= blue>三角形の内角の和がπラジアンでそのうち1角がπ/2ラジアンを占める</font>)**直角三角形の特徴**から合計が<font color=purple>π/2ラジアン</font>(<font color=blue>π/2ラジアン</font>)となる**角集合**<font color=purple>(<font color=blue>Angle Set</font>)a0b/b0a</font>=<font color=green>αn</font>(<font color=blue>(n1→n2=n1→…)=(0ラジアン→2πラジアン=0ラジアン…)</font>),<font color=purple>0ba/ab0</font>=<font color=green>βm</font>(<font color=blue>m=n+π/2ラジアン</font>)が与えられ、<font color=purple>X</font>**座標集合**(<font color=blue>X Coordinate Set</font>)<font color=green>Xn</font>(<font color=blue>(n1→n2→n3→n4→n1→…</font>){<font color=green>1→0→-1→0→1→…</font>}=<font color=green>cos(αn)</font>=<font color=green>sin(βm)</font>,<font color=purple>Y</font>**座標集合**(<font color=blue>Y Coordinate Set</font>)<font color=green>Yn</font>(<font color=blue>(n1→n2→n3→n4→n1→…</font>){<font color=green>0→1→0→-1→0→…</font>}=<font color=green>sin(αn)</font>=<font color=red>-cos(βm)</font>と置ける時、<font color=green>Xn×cos(θ)+Ym×sin(θ)</font>=<font color=red>cos(θ-αn)</font>=<font color=green>sin(θ+αn)</font><br>![UC001.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/64fecdc6-e885-34ee-f9ec-9c18fd1507e4.gif)

<font color=purple>統計言語Rによるグラフ化</font>

```R
#複素平面（球面）
Complex_plane<-function(x){
theta<-c(seq(0, pi, length=180),seq(-pi, 0, length=180))
dr<-seq(0,2*pi,length=360)

plot(cos(theta),sin(theta),asp=1,xlim=c(-1,1), ylim=c(-1,1), type="l", main="Unit Circle",xlab="X Coordinate Set(Cos(θ))", ylab="Y Coordinate Set(Sin(θ))")

#線を引く
segments(cos(dr[x]),0,0,0,col=rgb(0,1,0),lwd=2)
segments(cos(dr[x]),sin(dr[x]),cos(dr[x]),0,col=rgb(0,0,1),lwd=2)
segments(cos(dr[x]),sin(dr[x]),0,0,col=rgb(1,0,0),lwd=2)

#文字追加
text(c(cos(dr[x]),cos(dr[x]),0),c(0,sin(dr[x]),0), labels=c("Xn","Yn","0"),col=c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0)),cex=c(2,2,2))

#内積を塗りつぶす
polygon(c(cos(dr[x]),cos(dr[x]),0), #x
c(sin(dr[x]),0,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45),　 　　　#塗りつぶす斜線の角度
col=c(200,200,200)) 　#塗りつぶす色
legend("bottomleft", legend=c("Xn=Cos(θ)","Yn=Sin(θ)","sqrt(Xn^2+Yn^2)=1", "inner product"), lty=c(1,1),col =c(rgb(0,1,0),rgb(0,0,1),rgb(1,0,0),c(200,200,200)))

}
#アニメーションさせてみる。

library("animation")
Time_Code=c(1,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345)
saveGIF({
for (i in Time_Code){
　　Complex_plane(i)
}
}, interval = 0.1, movie.name = "UC01.gif")
```

<font color=purple>統計言語Rによる検算結果</font>

```R
#theta_a(90度=π/2ラジアン単位の回転)
theta_a<-c(0,pi/2,pi,3*pi/2,2*pi)
> theta_a
[1] 0.000000 1.570796 3.141593 4.712389 6.283185
#1周2πでリセット
> theta_a%%(2*pi)
[1] 0.000000 1.570796 3.141593 4.712389 0.000000

#theta_b(theta_aの90度=π/2ラジアン位相ずれ)
> theta_b<-theta_a+pi/2
> theta_b
[1] 1.570796 3.141593 4.712389 6.283185 7.853982
> theta_b-theta_a
[1] 1.570796 1.570796 1.570796 1.570796 1.570796
> theta_b%%(2*pi)
[1] 1.570796 3.141593 4.712389 0.000000 1.570796

#theta_c=π/4ラジアン(45度)=0.7853982
> theta_c
[1] 0.7853982
> pi/4
[1] 0.7853982

#Xn=cos(theta_a)=sin(theta_b)
>Xn<-cos(theta_a)
> round(cos(theta_a), digits=4)
[1]  1  0 -1  0  1
> round(sin(theta_b), digits=4)
[1]  1  0 -1  0  1
 
#Yn=sin(theta_a)=cos(theta_b)
> Yn<-sin(theta_a)
> round(sin(theta_a),digits=4)
[1]  0  1  0 -1  0
round(cos(theta_b),digits=4)
[1]  0 -1  0  1  0

#Xn×sin(θ)+Yn×cos(θ)=cos(θ-theta_b)=sin(θ+theta_a)
> Xn*sin(theta_c)+Yn*cos(theta_c)
[1]  0.7071068  0.7071068 -0.7071068 -0.7071068  0.7071068
> cos(theta_c-theta_b)
[1]  0.7071068 -0.7071068 -0.7071068  0.7071068  0.7071068
> sin(theta_c+theta_a)
[1]  0.7071068  0.7071068 -0.7071068 -0.7071068  0.7071068

```
そう、それまでの方法では<font color=green>b</font>がマイナスの場合<font color=green>cos(π/2)</font>,<font color=green>cos(3π/2)</font>の計算が狂ってしまうのです。<font color=green>b</font>がマイナスの場合も視野に入れると以下の様に計算しないといけません。

* <font color=green>Yn=sin(theta_a)</font>=<font color=red>-cos(theta_b)</font>
* <font color=green>Xn×sin(θ)+Yn×cos(θ)</font>=<font color=red>cos(θ-theta_a)</font>

<font color=purple>統計言語Rによる検算結果</font>

```R
#Yn=sin(theta_a)=-cos(theta_b)
> Yn<-sin(theta_a)
> round(sin(theta_a),digits=4)
[1]  0  1  0 -1  0
> round(-cos(theta_b),digits=4)
[1]  0  1  0 -1  0

#Xn×sin(θ)+Yn×cos(θ)=cos(θ-theta_a)=sin(θ+theta_a)
> Xn*sin(theta_c)+Yn*cos(theta_c)
[1]  0.7071068  0.7071068 -0.7071068 -0.7071068  0.7071068
> cos(theta_c-theta_a)
[1]  0.7071068  0.7071068 -0.7071068 -0.7071068  0.7071068
> sin(theta_c+theta_a)
[1]  0.7071068  0.7071068 -0.7071068 -0.7071068  0.7071068
```
[三角関数の合成の問題で、sinθまたはcosθの係数が負の場合はどう処理するのですか？](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1028301940?__ysp=5LiJ6KeS6Zai5pWw44Gu5ZCI5oiQ5YWs5byPIOODnuOCpOODiuOCuQ%3D%3D)

><font color=green>a×Sin(θ)-b×Cos(θ)</font>=<font color=green>sqrt(a^2+b^2)Sin(θ-a)</font>
<font color=green>Sin(θ)</font>,<font color=green>Cos(θ)</font>の係数が**正**なら括弧の中の角は**第一象限**
<font color=green>Sin(θ)</font>が負、<font color=green>Cos(θ)</font>が正なら**第二象限**
<font color=green>Sin(θ)</font>,<font color=green>Cos(θ)</font>が負なら**第三象限**
<font color=green>Sin(θ)</font>が**正**、<font color=green>Cos(θ)</font>が**負**なら**第四象限**

#三角関数の基礎定理③加法定理。
**加法定理**(<font color=blue>Addition Theorem</font>)…**角**<font color=green>α</font>と**角**<font color=green>β</font>を足し合わせ**角**<font color=green>γ</font>にする際の<font color=green>Cos(γ)</font>と<font color=green>Sin(γ)</font>を求める式である。
[【初心者向け】「加法定理の幾何学的証明」に挑戦。](https://qiita.com/ochimusha01/items/36c0e84c434e6cdd6ec3)
![TR004.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/25081e53-4ab7-3977-e9cd-dd5ccbae74d1.gif)
**加算**

* **Cos(α+β)**=<font color=green>Cos(α)Cos(β)-Sin(α)Sin(β)</font>
* **Sin(α+β)**=<font color=green>Cos(α)Sin(β)+Sin(α)Cos(β)</font>
* **Tan(α+β)**=<font color=green>(Tan(α)+Tan(β))/(1-Tan(α)Tan(β))</font>

**減算**

* **Cos(α-β)**=<font color=green>Cos(α)Cos(β)+Sin(α)Sin(β)</font>
* **Sin(α-β)**=<font color=green>Sin(α)Cos(β)-Cos(α)Sin(β)</font>
* **Tan(α-β)**=<font color=green>(Tan(α)-Tan(β))/(1+Tan(α)Tan(β))</font>

ちなみに学校教育では以下も習います。

**倍角の公式**

* **Cos(2a)**=<font color=green>Cos(a)^2-Sin(a)^2=1-2*Sin(α)^2</font>
* **Sin(2α)**=<font color=green>2*Sin(α)*Cos(α)</font>
* **Tan(2a)**=<font color=green>2*tan(α)/1-Tan(α)^2</font>

**３倍角の公式**

* **Cos(3α)**=<font color=green>4*Cos(α)^3-3*cos(α)</font>
* **Sin(3α)**=<font color=green>3*Sin(α)^3-4*Sin(α)</font>

**半角の公式**

* **Cos(α/2)^2**=<font color=green>(1+Cos(α))/2</font>
* **Sin(α/2)^2**=<font color=green>(1-Cos(α))/2</font>
* **Tan(α/2)^2**=<font color=green>(1-Cos(α))/(1+Cos(α))</font>

**積和の公式**

* **Sin(α)*Cos(β)**=<font color=green>(Sin(α+β)+Sin(α-β))/2</font>
* **Cos(α)*Sin(β)**=<font color=green>(Sin(α+β)-Sin(α-β))/2</font>
* **Cos(α)*Cos(β)**=<font color=green>(Cos(α+β)+Cos(α-β))/2</font>
* **Sin(α)*Sin(β)**=<font color=green>(Cos(α+β)-Cos(α-β))/2</font>

**和積の公式**

* **Sin(α)+Sin(β)**=<font color=green>2*Sin((α+β)/2)*Cos((α-β)/2)</font>
* **Cos(α)-Cos(β)**=<font color=green>2*Cos((α+β)/2)*Sin((α-β))/2)</font>
* **Cos(α)+Cos(β)**=<font color=green>2*Cos((α+β)/2)*Cos((α-β))/2)</font>
* **Cos(α)-Cos(β)**=-<font color=green>2*Sin((α+β)/2)*Sin((α-β)/2)</font>

#三角関数の基礎定理④三角不等式との関係について。

**三角不等式**(<font color="blue">Triangle Inequality</font>)
[【初心者向け】「三角不等式(Triangle Inequality)」の体感方法？](https://qiita.com/ochimusha01/items/325717eef47b1cbeadb1)
<font color="green">‖x+y‖<=‖x‖+‖y‖</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/8903475d-89f3-ad32-6ea9-ba3302c5f82a.png)

* <font color="green">‖x‖</font>と<font color="green">‖y‖</font>が同一直線上にある場合のみ<font color="green">‖x+y‖=‖x‖+‖y‖</font>が成立。その時の三角形の面積は<font color="green">0</font>に退化する。

**単位円**(<font color="blue">Unit Circle</font>)上の直径を長編とする**直角三角形**では、**正弦定理**（<font color="blue">Law of Sines</font>）<font color="green">a/sin(a)+b/sin(b)+c/sin(c)~2r</font>の特殊形たる**ターレスの定理**(<font color="blue">Thales' theorem</font>)によって必ずその対角が<font color="green">π/2ラジアン(<font color="blue">90度</font>)となり、残り2角<font color="green">α</font>,<font color="green">β</font>の合計も三角形の内角の和が<font color="green">πラジアン</font>(<font color="blue">180度</font>)である事から<font color="green">π/2ラジアン</font>(<font color="blue">90度</font>)と定まる。
[【初心者向け】三角関数と指数・対数関数の「巡回性」について。](https://qiita.com/ochimusha01/items/61d8cfa89dc078cbe472)
![CFS005.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/3790fccd-c18b-bec4-b0e4-a85cd11697f1.gif)
![CFS90Sift002.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/e724467e-c87d-f8a4-8459-218f87113d29.gif)

* この時<font color="green">‖x+y‖=‖x‖+‖y‖</font>が成立するのは<font color="green">cos(θ)=0</font>か<font color="green">sin(θ)=0</font>の場合のみ。

ちなみに**単位円**において**三角比**(<font color="blue">Triangular ratio</font>)概念が通用する範囲は以下の6通り。
[【Rで球面幾何学】「半円しか描けなかった」世界の思い出？](https://qiita.com/ochimusha01/items/cf74b1fff650edb0a496)

* **第一象限**(<font color="blue">cos(θ)>=0,sin(θ)>=0</font>)のみ。
* **第一象限**とそれに隣接する**第二象限**(<font color="blue">cos(θ)=1→0→-1,sin(θ)=0→1→0</font>)。
* **第一象限**とそれに隣接する**第四象限**(<font color="blue">cos(θ)=0→1→0,sin(θ)=1→0→-1</font>)。
* **第三象限**(<font color="blue">cos(θ)<=0,sin(θ)<=0</font>)のみ。
* **第三象限**とそれに隣接する**第四象限**(<font color="blue">cos(θ)=1→0→-1,sin(θ)=0→-1→0</font>)。
* **第三象限**とそれに隣接する**第二象限**(<font color="blue">cos(θ)=0→-1→0,sin(θ)=1→0→-1</font>)。

#三角関数の基礎定理⑤極座標系。

三角関数というと**極座標系**（<font color=blue>Polar Coordinates System</font>）を思い浮かべる人も多いと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c673690f-439b-0392-e08d-68ea34aa4206.png)

①二次元空間における**デカルト座標**<font color=blue>(x,y)</font>の極座標系上における表現

* **原点**<font color=green>(0,0)</font>からの**距離**<font color=green>r=sqrt(x^2+y^2)</font>
* **x**=<font color=green>r*cos(φ)</font>
* **y**=<font color=green>r*sin(φ)</font>

②三次元空間における**デカルト座標**<font color=green>(x,y,z)</font>の極座標系上における表現

* **原点**<font color=green>(0,0,0)</font>からの**距離**<font color=green>r=sqrt(x^2+y^2+z^2)</font>
* **x**=<font color=green>r*sin(θ)cos(φ)</font>
* **y**=<font color=green>r*sin(θ)sin(φ)</font>
* **z**=<font color=green>r*cos(θ)</font>

#三角関数の基本定理⑥高校レベルの公式一覧の再確認
以降は**高校レベルの三角関数の公式一覧**を再確認しながら全体像の俯瞰を試みます。学童時代の私はこうした公式一覧全ての暗記を強要され、それで一旦は完全に算数に挫折したのです。
[三角関数の公式一覧](https://sci-pursuit.com/math/trigonometric-function-formulae.html)

* <font color=green>Cos(θ)^2+Sin(θ)^2=1</font>(<font color=blue>ピタゴラスの定理の応用</font>)
* <font color=green>Tan(θ)=Sin(θ)/Cos(θ)</font>(<font color=blue>Tangent関数の定義</font>)
* <font color=green>1+Tan(θ)^2=1/Cos(θ)^2</font>

**Cosine関数の基本公式**

* <font color=green>Cos(-θ)=Cos(θ)</font>(<font color=blue>符号の逆転</font>)
* <font color=green>Cos(θ+2nπ)=Cos(θ)</font>(<font color=blue>1回転)
* <font color=green>Cos(θ+π/2)=-Sin(θ)</font>(<font color=blue>θ+π/2の三角関数</font>)
* <font color=green>Cos(π/2-θ)=Sin(θ)</font>(<font color=blue>π/2-θの三角関数</font>)
* <font color=green>Cos(θ+π)=-Cos(θ)</font>(<font color=blue>θ+πの三角関数</font>)
* <font color=green>Cos(π-θ)=-Cos(θ)</font>(<font color=blue>π-θの三角関数</font>)

**Sine関数の基本公式**

* <font color=green>Sin(-θ)=-Sin(θ)</font>(<font color=blue>符号の逆転</font>)
* <font color=green>Sin(θ+2nπ)=Sin(θ)</font>(<font color=blue>1回転</font>)
* <font color=green>Sin(θ+π/2)=Cos(θ)</font>(<font color=blue>θ+π/2の三角関数</font>)
* <font color=green>Sin(π/2-θ)=Cos(θ)</font>(<font color=blue>π/2-θの三角関数</font>)
* <font color=green>Sin(θ+π)=-Sin(θ)</font>(<font color=blue>θ+πの三角関数</font>)
* <font color=green>Sin(π-θ)=Sin(θ)</font>(<font color=blue>π-θの三角関数</font>)

**Tangent関数の基本公式**

* <font color=green>Tan(-θ)=-Tan(θ)</font>(<font color=blue>符号の逆転</font>)
* <font color=green>Tan(θ+2nπ)=Tan(θ)</font>(<font color=blue>1回転</font>)
* <font color=green>Tan(θ+π/2)=-1/Tan(θ)</font>(<font color=blue>θ+π/2の三角関数</font>)
* <font color=green>Tan(π/2-θ)=1/Tan(θ)</font>(<font color=blue>π/2-θの三角関数</font>)
* <font color=green>Tan(θ+π)=Tan(θ)</font>(<font color=blue>θ+πの三角関数</font>)
* <font color=green>Tan(π-θ)=-Tan(θ)</font>(<font color=blue>π-θの三角関数</font>)

```R
#周期性検証の準備(θ)
> d0<-pi/8
> d0
[1] 0.3926991

#周期性検証の準備(θの周期)
> d1<-seq(-5,5,length=11)
> d1
 [1] -5 -4 -3 -2 -1  0  1  2  3  4  5

#基本公式

#Cos(θ)^2+Sin(θ)^2=1
> cos(d0)^2+sin(d0)^2
[1] 1
#Tan(θ)=Sin(θ)/Cos(θ)
> tan(d0)
[1] 0.4142136
> sin(d0)/cos(d0)
[1] 0.4142136
#1+Tan(θ)^2=1/Cos(θ)^2
> 1+tan(d0)^2
[1] 1.171573
> 1/cos(d0)^2
[1] 1.171573

#Cosine関数の基本公式

#Cos(-θ)=Cos(θ)(符号の逆転)
> cos(-d0)
[1] 0.9238795
> cos(d0)
[1] 0.9238795
#Cos(θ+2nπ)=Cos(θ)(1回転)
> cos(d0)
[1] 0.9238795
> cos(d0+d1*pi)
[1]  0.9238795 -0.9238795  0.9238795 -0.9238795  0.9238795 -0.9238795  0.9238795
[8] -0.9238795  0.9238795
#Cos(θ+π/2)=-Sin(θ)(θ+π/2の三角関数)
> cos(d0+pi/2)
[1] -0.3826834
> -sin(d0)
[1] -0.3826834
#Cos(π/2-θ)=Sin(θ)(π/2-θの三角関数)
> cos(pi/2-d0)
[1] 0.3826834
> sin(d0)
[1] 0.3826834
#Cos(θ+π)=-Cos(θ)(θ+πの三角関数)
> cos(d0+pi)
[1] -0.9238795
> -cos(d0)
[1] -0.9238795
#Cos(θ-π)=-Cos(θ)(θ-πの三角関数)
> cos(pi-d0)
[1] -0.9238795
> -cos(d0)
[1] -0.9238795

#Sine関数の基本公式

#Sin(-θ)=-Sin(θ)(符号の逆転)
> sin(-d0)
[1] -0.3826834
> -sin(d0)
[1] -0.3826834
#Sin(θ+2nπ)=Sin(θ)(1回転)
> sin(d0)
[1] 0.3826834
> sin(d0+d1*2*pi)
 [1] 0.3826834 0.3826834 0.3826834 0.3826834 0.3826834 0.3826834 0.3826834 0.3826834
 [9] 0.3826834 0.3826834 0.3826834
#Sin(θ+π/2)=Cos(θ)(θ+π/2の三角関数)
> sin(d0+pi/2)
[1] 0.9238795
> cos(d0)
[1] 0.9238795
#Sin(π/2-θ)=Cos(θ)(π/2-θの三角関数)
> sin(pi/2-d0)
[1] 0.9238795
> cos(d0)
[1] 0.9238795
#Sin(θ+π)=-Sin(θ)(θ+πの三角関数)
> sin(d0+pi)
[1] -0.3826834
> -sin(d0)
[1] -0.3826834
#Sin(θ+π)=-Sin(θ)(θ+πの三角関数)
> sin(pi-d0)
[1] 0.3826834
> sin(d0)
[1] 0.3826834

#Tangent関数の基本公式

#Tan(-θ)=-Tan(θ)(符号の逆転)
> tan(-d0)
[1] -0.4142136
> -tan(d0)
[1] -0.4142136
#Tan(θ+2nπ)=Tan(θ)(1回転)
> tan(d0)
[1] 0.4142136
> tan(d0+d1*2*pi)
 [1] 0.4142136 0.4142136 0.4142136 0.4142136 0.4142136 0.4142136 0.4142136 0.4142136
 [9] 0.4142136 0.4142136 0.4142136
#Tan(θ+π/2)=-1/Tan(θ)(θ+π/2の三角関数)
> tan(d0+pi/2)
[1] -2.414214
> -1/tan(d0)
[1] -2.414214
#Tan(π/2-θ)=1/Tan(θ)(π/2-θの三角関数)
> tan(pi/2-d0)
[1] 2.414214
> 1/tan(d0)
[1] 2.414214
#Tan(θ+π)=Tan(θ)(θ+πの三角関数)
> tan(d0+pi)
[1] 0.4142136
> tan(d0)
[1] 0.4142136
Tan(π-θ)=-Tan(θ)(π-θの三角関数)
> tan(pi-d0)
[1] -0.4142136
> -tan(d0)
[1] -0.4142136
```
#複素数平面(<font color=blue>Complex Plane</font>)概念の導入。

上掲の様に**等速円運動**(<font color=blue>Constant Velocity Circular Motion</font>)の観察結果から、**円描画関数**が<font color=green>X</font>**軸**とY</font>**軸**で位相が半分ズレた2つの**単振動**(<font color=blue>x軸=cos(θ),y軸=sin(θ)</font>)によって構成される事自体は先行して**自明の場合**(<font color=blue>Trival Case</font>)となりました。その事実を一つの数式で表すにはどうしたら良いでしょうか。(<font color=blue>三次方程式の解を表す為に発案された</font>)**虚数**(<font color=blue>Imaginary Number</font>)<font color=green>i^2=-1</font>の概念と**複素数**(<font color=blue>Complex Representation</font>)<font color=green>(X,Yi)=cos(θ)+sin(θ)i</font>の導入はまさにこの観点から導入される運びとなったのです。

```R
c0<-seq(-1,1,length=21)
c0
r1=complex(real=0,imaginary=1)
f1<-function(x)r1^(2*x)
round(f1(c0),digit=4)
r2=complex(real=0,imaginary=-1)
f2<-function(x)r2^(2*x)
round(f2(c0),digit=4)
cmp01<-f1(c0)
cmp02<-f2(c0)

#c0=添字集合In(n=-1->1)
> c0<-seq(-1,1,length=21)
> c0
 [1] -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6
[18]  0.7  0.8  0.9  1.0

#Xi=(0,1i)^2xはπ/2ラジアン単位(90度)で　以下の様に推移
#(-1,0i)→(0,-1i)→(1,0i)→(0,1i)→(-1,0i)
#要するに「-1から反時計回り」
> r1=complex(real=0,imaginary=1)
> f1<-function(x)r1^(2*x)
> round(f1(c0),digit=4)
 [1] -1.0000+0.0000i -0.9511-0.3090i -0.8090-0.5878i -0.5878-0.8090i -0.3090-0.9511i
 [6]  0.0000-1.0000i  0.3090-0.9511i  0.5878-0.8090i  0.8090-0.5878i  0.9511-0.3090i
[11]  1.0000+0.0000i  0.9511+0.3090i  0.8090+0.5878i  0.5878+0.8090i  0.3090+0.9511i
[16]  0.0000+1.0000i -0.3090+0.9511i -0.5878+0.8090i -0.8090+0.5878i -0.9511+0.3090i
[21] -1.0000+0.0000i

#Xi=(0,-1i)^2xはπ/2ラジアン単位(90度)で　以下の様に推移
#(-1,0i)→(0,1i)→(1,0i)→(0,-1i)→(-1,0i)
#要するに「-1から時計回り」
r2=complex(real=0,imaginary=-1)
> f2<-function(x)r2^(2*x)
> round(f2(c0),digit=4)
 [1] -1.0000+0.0000i -0.9511+0.3090i -0.8090+0.5878i -0.5878+0.8090i -0.3090+0.9511i
 [6]  0.0000+1.0000i  0.3090+0.9511i  0.5878+0.8090i  0.8090+0.5878i  0.9511+0.3090i
[11]  1.0000+0.0000i  0.9511-0.3090i  0.8090-0.5878i  0.5878-0.8090i  0.3090-0.9511i
[16]  0.0000-1.0000i -0.3090-0.9511i -0.5878-0.8090i -0.8090-0.5878i -0.9511-0.3090i
[21] -1.0000+0.0000i
```
有名な**オイラーの等式**(<font color=blue>Eulerian Identity</font>)<font color=green>e^πi=-1</font>が円を描くのも、かかる**等比数列**<font color=green>-1^x=((0,±1i)^2)^x=(0,±1i)^2x</font>の作用。

```R
#y=(0,1i)^2x「-1から反時計回り」
cmp01<-f1(c0)
cmp01x<-Re(cmp01)
cmp01y<-Im(cmp01)
plot(cmp01x,cmp01y,asp=1,type="l",xlim=c(-1,1),ylim=c(-1,1),main="y=(0,1i)^2x",xlab="Real",ylab="Imaginaly")
cmp02<-f2(c0)
```
![Rplot08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/028abcda-0923-1bcd-acf4-c6cc032610f2.png)

```R
#y=(0,-1i)^2x「-1から時計回り」
cmp02<-f2(c0)
cmp02x<-Re(cmp02)
cmp02y<-Im(cmp02)
plot(cmp02x,cmp02y,asp=1,type="l",xlim=c(-1,1),ylim=c(-1,1),main="y=(0,-1i)^2x",xlab="Real",ylab="Imaginaly")
```
![Rplot09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/37b13cbd-4569-5f39-6b29-ec52d4b3cd35.png)

実際<font color=green>-1</font>から<font color=green>-2</font>の間を<font color=green>N</font>**分割**した**添字集合**を与えられた**複素数関数**の出力結果を<font color=green>-π</font>から<font color=green>π</font>の間を同様に<font color=green>N</font>**分割**した**角**<font color=green>θ</font>の集合と比較すると、**実数部**が<font color=green>Cos(θ)</font>,**虚数部**が<font color=green>Sin(θ)</font>の出力結果と一致します。残された問題は**等速円運動**を構成する<font color=green>X</font>**要素**=<font color=green>cos(θ)</font>や<font color=green>Y</font>**要素**=<font color=green>sin(θ)</font>の周期が<font color=green>2π</font>(<font color=blue>n=-π→π</font>)なのに対し、かかる**複素数関数**の周期が<font color=green>4</font>(<font color=green>n=-1→1→1</font>)である点。とりあえずその都度、円の**半径**(<font color=green>Radius</font>)に**円周上を移動させたい距離**を掛ければ「<font color=red>移動距離の齟齬</font>」問題自体は解決しますが、これが正解とは到底思えません。

```R
c1<-seq(-1,1,length=21)
c1
c2<-seq(-pi,pi,length=21)
c2
r0=complex(real=0,imaginary=1)
f0<-function(x)r0^(2*x)
cmp0<-f0(c1)
cmp01x<-Re(cmp0)
cmp01x
cmp01x*pi
cmp01y<-Im(cmp0)
cmp01y
cmp01y*pi


#c1=添字集合In(n=-1->1)
> c1<-seq(-1,1,length=21)
> c1
 [1] -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6
[18]  0.7  0.8  0.9  1.0

#c2=添字集合Ln(n=-π->π)
> c2<-seq(-pi,pi,length=21)
> c2
 [1] -3.1415927 -2.8274334 -2.5132741 -2.1991149 -1.8849556 -1.5707963 -1.2566371
 [8] -0.9424778 -0.6283185 -0.3141593  0.0000000  0.3141593  0.6283185  0.9424778
[15]  1.2566371  1.5707963  1.8849556  2.1991149  2.5132741  2.8274334  3.1415927

#複素数関数の出力結果を得る。
>r0=complex(real=0,imaginary=1)
>f0<-function(x)r0^(2*x)
> cmp0<-f0(c1)
> cmp01x<-Re(cmp0)

#複素数関数の実数部は、その分割数に応じた
#角度θを与えられたCos(θ)関数の出力に一致。
> round(cmp01x,digit=4)
 [1] -1.0000 -0.9511 -0.8090 -0.5878 -0.3090  0.0000  0.3090  0.5878  0.8090  0.9511
[11]  1.0000  0.9511  0.8090  0.5878  0.3090  0.0000 -0.3090 -0.5878 -0.8090 -0.9511
[21] -1.0000
> round(cos(c2),digit=4)
 [1] -1.0000 -0.9511 -0.8090 -0.5878 -0.3090  0.0000  0.3090  0.5878  0.8090  0.9511
[11]  1.0000  0.9511  0.8090  0.5878  0.3090  0.0000 -0.3090 -0.5878 -0.8090 -0.9511
[21] -1.0000

#複素数関数の虚数部は、その分割数に応じた
#角度θを与えられたSin(θ)関数の出力に一致。
> cmp01y<-Im(cmp0)
> round(cmp01y,digit=4)
 [1]  0.0000 -0.3090 -0.5878 -0.8090 -0.9511 -1.0000 -0.9511 -0.8090 -0.5878 -0.3090
[11]  0.0000  0.3090  0.5878  0.8090  0.9511  1.0000  0.9511  0.8090  0.5878  0.3090
[21]  0.0000
> round(sin(c2),digit=4)
 [1]  0.0000 -0.3090 -0.5878 -0.8090 -0.9511 -1.0000 -0.9511 -0.8090 -0.5878 -0.3090
[11]  0.0000  0.3090  0.5878  0.8090  0.9511  1.0000  0.9511  0.8090  0.5878  0.3090
[21]  0.0000

#複素数関数の出力結果をN倍しても半径Nの円が出現するだけ。
#しかし少なくとも円周上の移動距離は一致する。
> cmp01x*pi
 [1] -3.1415927 -2.9878322 -2.5416018 -1.8465818 -0.9708055  0.0000000  0.9708055
 [8]  1.8465818  2.5416018  2.9878322  3.1415927  2.9878322  2.5416018  1.8465818
[15]  0.9708055  0.0000000 -0.9708055 -1.8465818 -2.5416018 -2.9878322 -3.1415927
> cmp01y*pi
 [1]  0.0000000 -0.9708055 -1.8465818 -2.5416018 -2.9878322 -3.1415927 -2.9878322
 [8] -2.5416018 -1.8465818 -0.9708055  0.0000000  0.9708055  1.8465818  2.5416018
[15]  2.9878322  3.1415927  2.9878322  2.5416018  1.8465818  0.9708055  0.0000000
```
そう、**オイラーの等式**(<font color=blue>Eulerian Identity</font>)<font color=green>e^πi=-1</font>をやたらと神聖視してる人達には大変残念なお知らせですが、実はこの数式に登場する<font color=green>π</font>はここでいう「<font color=red>円周上を移動させたい距離</font>」に過ぎず、それが**半周分**=<font color=green>πラジアン</font>だと**出発点**<font color=green>(1,0i)</font>の**対蹠**(<font color=blue>Antipodal</font>)<font color=green>(-1,0i)</font>まで到達するというだけの話に過ぎないのです。
[【Rで球面幾何学】「世界で一番美しい公式」オイラーの等式の罠？](https://qiita.com/ochimusha01/items/7fa9d091f7ba9414dfc3)
![20190419000412.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c8083c61-f436-5f02-3124-95075ffdc1db.gif)
本当は「**2つでセット**」。
![20190419001208.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/f5cd790a-972d-4dca-c001-754e1ed8ef0d.gif)
![20190418235412.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/95fb9843-af74-501a-aac7-b394f60c8cb4.gif)
そして与える距離によって…
![20190630063059.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/42abf46b-55b6-4712-2d52-091912fa1ad4.gif)
![20190630062745.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a43e3609-8af6-e2ea-b565-40282ae276f7.gif)
![20190701065405.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/83c1c8e0-b703-6668-b2de-5228850cd737.gif)

ここまで見てきてやっと「<font color=red>移動したい距離×複素関数の出力結果</font>」を**添字**として与えられた**自然指数関数**が「<font color=purple>出発点を</font><font color=green>(-1,0i)</font><font color=purple>から</font><font color=green>(1,0i)</font><font color=purple>に変更し</font>（<font color=blue>与えられた移動距離はそのまま継承しつつ</font>）<font color=purple>円の半径を</font><font color=green>1</font><font color=purple>に保つ</font>」働きをしている事が明らかになります。如何なる数理の組み合わせで実現しているかまでは現段階では分かりません。現段階で明らかになっているのは「**自然対数関数も同じ役割を果たす**」「**ただし根がネイピア数の場合しか完全には機能しない**」事くらい。
[【Rで球面幾何学】指数関数や対数関数における「ネイピア数周期」の意味について。](https://qiita.com/ochimusha01/items/bebb9eb56346f57ff651)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F597772%2F17183052-29c7-20cc-2e31-67cb248665b8.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=1f5402a625562fc9426f5c68c893c7a9)
![20190628102545.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/1204f224-00ed-745d-d403-3d928e689354.gif)
![20190628110120.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c5c12c1a-3006-bedc-f083-85e77bee289c.gif)
![20190628110257.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/aff8270e-f0c0-b1b5-4984-932a1e9b4a54.gif)


#三角関数の微積分とその巡回性について。
**正弦波の位相変遷の法則**は基本中の基本。
[サイン波（正弦波、sine wave、sinusoidal wave） - Wikipedia](https://ja.wikipedia.org/wiki/%E6%AD%A3%E5%BC%A6%E6%B3%A2)
>正弦関数として観測可能な周期的変化を示す波動のことで、その波形は**正弦曲線**（sine curve）もしくは**シヌソイド** (Sinusoid) と呼ばれ、数学、信号処理、電気工学およびその他の分野において重要な働きをする。
>
>**コサイン波形**（Cosine wave=余弦波）もシヌソイドと言われる。これは、正弦波が後方にシフトされたもので波形が同一（Sin(θ+π/2)=Cos(θ)）だからである。

1. _cos(x+pi/2)=-sin(x)_（位相+90度、一階微分と同じ）
2. _cos(x-pi/2)=sin(x)_（位相-90度、一階積分と同じ）
![20191014091535.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ceaf9151-8aef-801f-a771-812bfef7b1d6.gif)

```R
Waves01<-function(prm){

#関数定義

f0=function(x)  cos(x)
f1=function(x)  sin(x)
f2=function(x)  -sin(x)
f3=function(x)  cos(x+prm)
f4=function(x)  cos(x-prm)
#正弦波描写

plot(f0,type="l",xlim=c(-pi,pi),ylim=c(-1,1),main="cos(x+pi/2)=-sin(x), cos(x-pi/2)=sin(x)",xlab="Frequency",ylab="Amplitude")
par(new=T) #上書き指定
plot(f1,type="l",xlim=c(-pi,pi),col=rgb(1,1,0),ylim=c(-1,1),main="",xlab="",ylab="")
par(new=T) #上書き指定
plot(f2,type="l",xlim=c(-pi,pi),col=rgb(0,1,1),ylim=c(-1,1),main="",xlab="",ylab="")
par(new=T) #上書き指定
plot(f3,type="l",xlim=c(-pi,pi),col=rgb(0,0,1),ylim=c(-1,1),main="",xlab="",ylab="")
par(new=T) #上書き指定
plot(f4,type="l",xlim=c(-pi,pi),col=rgb(1,0,0),ylim=c(-1,1),main="",xlab="",ylab="")

#凡例

legend("bottomleft", legend=c("Cos(θ)","Sin(θ)","-Sin(θ)","Cos(θ+π/x)","Cos(θ-π/x)"), lty=c(1,1,1,1,1), col=c(rgb(0,0,0),rgb(1,1,0),rgb(0,1,1),rgb(0,0,1),rgb(1,0,0)))
}

library("animation")
Time_Code=seq(0,pi/2,length=15)
saveGIF({
for (i in Time_Code){
　Waves01(i)
}
}, interval = 0.1, movie.name = "CosSin01.gif")
```
1. _cos(x+pi)=-cos(x)_（位相+180度、二階微分と同じ）
2. _cos(x-pi)=-cos(x)_（位相-180度、二階積分と同じ）
![20191014142817.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/f0b0218a-9773-6903-ed6a-b3c88c7eb448.gif)

```R
Waves02<-function(prm){

#関数定義

f0=function(x)  cos(x)
f1=function(x)  -cos(x)
f2=function(x)  cos(x+prm)
f3=function(x)  cos(x-prm)
#正弦波描写

plot(f0,type="l",xlim=c(-pi,pi),ylim=c(-1,1),main="cos(x+pi)=cos(x-pi)=-cos(x)",xlab="Frequency",ylab="Amplitude")
par(new=T) #上書き指定
plot(f1,type="l",xlim=c(-pi,pi),col=rgb(1,0,1),ylim=c(-1,1),main="",xlab="",ylab="")
par(new=T) #上書き指定
plot(f2,type="l",xlim=c(-pi,pi),col=rgb(0,0,1),ylim=c(-1,1),main="",xlab="",ylab="")
par(new=T) #上書き指定
plot(f3,type="l",xlim=c(-pi,pi),col=rgb(1,0,0),ylim=c(-1,1),main="",xlab="",ylab="")

#凡例

legend("bottomleft", legend=c("Cos(θ)","-Cos(θ)","Cos(θ+π/x)","Cos(θ-π/x)"), lty=c(1,1,1,1), col=c(rgb(0,0,0),rgb(1,0,1),rgb(0,0,1),rgb(1,0,0)))
}

library("animation")
Time_Code=seq(0,pi,length=15)
saveGIF({
for (i in Time_Code){
　Waves02(i)
}
}, interval = 0.1, movie.name = "CosCos01.gif")
```
ちなみに統計言語Rから呼び出せる汎用代数ライブラリRyhacasは、こういう「**頭が悪く見えそうな**」単純過ぎる位相変遷を扱ってくれません。単なる計算機のくせにお高くとまりやがって…

```R
library(Ryacas)
#Cos(x+Pi/2)

yac("Cos(x+Pi/2)")
[1] "Cos(x+Pi/2)"
yac("TrigSimpCombine(Cos(x+Pi/2))")
[1] "Cos(Pi/2+x)"

#Cos(x-Pi/2)
yac("Cos(x-Pi/2)")
[1] "Cos(x-Pi/2)"
yac("TrigSimpCombine(Cos(x-Pi/2))")
[1] "Cos(Pi/2-x)"

#Cos(x+Pi)
yac("Cos(x+Pi)")
[1] "Cos(x+Pi)"
yac("TrigSimpCombine(Cos(x+Pi))")
[1] "Cos(Pi+x)"
#Cos(x-Pi)
yac("Cos(x-Pi)")
[1] "Cos(x-Pi)"
yac("TrigSimpCombine(Cos(x-Pi))")
[1] "Cos(Pi-x)"
```
実質ここでやってるのは三角関数の微積分そのもので、そういう「**頭が良く見えそうな**」の問題なら喜んで解いてくれます。

1. _Cos(θ)_を微分すると_-Sin(θ)_となる（位相+90度）。
2. _Cos(θ)_を積分すると_Sin(θ)_となる（位相-90度）。
3. _Sin(θ)_を微分すると_Cos(θ)_となる（位相+90度）。
4. _Sin(θ)_を微分すると_-Cos(θ)_となる（位相+90度）。
5. _Cos(θ)_を2階微分すると_-Cos(θ)_となる（位相+180度）。
6. _Cos(θ)_を2階積分すると_-Cos(θ)_となる（位相-180度）。

```R
library(Ryacas)

#Cos(θ)を微分すると-Sin(θ)となる（位相-90度）。
yac("D(x) Cos(x)")
[1] "-Sin(x)"

#Sin(θ)を微分するとCos(θ)となる（位相-90度）。
yac("D(x) Sin(x)")
[1] "Cos(x)"

#Cos(θ)を積分するとSin(θ)となる（位相+90度）。
yac("Integrate(x) Cos(x)")
[1] "Sin(x)"

#Sin(θ)を微分すると-Cos(θ)となる（位相+90度）。
yac("Integrate(x) Sin(x)")
[1] "-Cos(x)"
#Cos(θ)を2階微分すると-Cos(θ)となる（位相+180度）。
yac("D(x,2) Cos(x)")
[1] "-Cos(x)"

#Cos(θ)を2階積分すると-Cos(θ)となる（位相-180度）。
yac("Integrate(x) Cos(x)")
[1] "Sin(x)"
yac("Integrate(x) Sin(x)")
[1] "-Cos(x)"
```
つまり三角関数の微積分は「**４階で１周期**」するのです。**解析学**（Mathematical Analysis）の分野は正弦波をその様に捉えます。

**三角関数の微分（それぞれが-90度の変遷に対応）**

1. _Cos(θ)_→_-Sin(θ_)→_-Cos(θ)_→_Sin(θ)_→_Cos(θ)_
2. _Sin(θ)_→_Cos(θ)_→_-Sin(θ)_→_-Cos(θ)_→_Sin(θ)_

**三角関数の積分（それぞれが+90度の変遷に対応）**

1. _Cos(θ)_→_Sin(θ)_→_-Cos(θ)_→_-Sin(θ)_→_Cos(θ)_
2. _Sin(θ)_→_-Cos(θ)_→_-Sin(θ)_→_Cos(θ)_→_Sin(θ)_

```R
library(Ryacas)

#Cos波の微分（位相変遷-90度、４回で１周）
yac("D(x,1) Cos(x)")
[1] "-Sin(x)"
yac("D(x,2) Cos(x)")
[1] "-Cos(x)"
yac("D(x,3) Cos(x)")
[1]"Sin(x)"
yac("D(x,4) Cos(x)")
[1] "Cos(x)"

#Sin波の微分（位相変遷-90度、４回で１周）

yac("D(x,1) Sin(x)")
[1] "Cos(x)"
yac("D(x,2) Sin(x)")
[1] "-Sin(x)"
yac("D(x,3) Sin(x)")
[1] "-Cos(x)"
yac("D(x,4) Sin(x)")
[1] "Sin(x)"

#Cos波の積分（位相変遷+90度、４回で１周）

yac("Integrate(x) Cos(x)")
[1] "Sin(x)"
yac("Integrate(x) Sin(x)")
[1] "-Cos(x)"
yac("Integrate(x) -Cos(x)")
[1] "-Sin(x)"
yac("Integrate(x) -Sin(x)")
[1] "Cos(x)"

#Sin波の積分（位相変遷+90度、４回で１周）

yac("Integrate(x) Sin(x)")
[1] "-Cos(x)"
yac("Integrate(x) -Cos(x)")
[1] "-Sin(x)"
yac("Integrate(x) -Sin(x)")
[1] "Cos(x)"
yac("Integrate(x) Cos(x)")
[1] "Sin(x)"
```
ところで、こうした性質を備えた関数は三角関数のみに限りません。

#指数関数や対数関数の「微積分」とその巡回性について。
こうした性質は**指数関数**（Exponential function）や**対数関数**（Logarithm function）と似ており、**解析学**（Mathematical Analysis）の分野はこれをセットで扱います。
[【Rで球面幾何学】指数・対数関数の発見](https://qiita.com/ochimusha01/items/3e28f4f06abd8cef0af1)
![20190927233136 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/216d94f6-b445-ae38-64d8-bd6f8db5a2c9.png)
**指数関数内における±90度位相変遷**

**-90度**（微分）**方向**…exp(θ)→-exp(-θ)→-exp(-θ)→exp(-θ)→exp(θ)
**+90度**（積分）**方向**…exp(θ)→exp(-θ)→-exp(-θ)→-exp(θ)→exp(θ)

**対数関数内における±90度位相変遷**

**-90度**（微分）**方向**…log(θ)→-log(θ)→-log(-θ)→log(-θ)→log(θ)
**+90度**（積分）**方向**…log(θ)→log(-θ)→-log(-θ)→-log(θ)→log(θ)

**指数・対数関数間変遷を含む±90度位相変遷**

**指数関数**

**-90度**（微分）**方向**…exp(θ)→log(θ)→-exp(θ)→-log(θ)→exp(θ)
**+90度**（積分）**方向**…exp(θ)→-log(θ)→-exp(θ)→log(θ)→exp(θ)

**対数関数**

**-90度**（微分）**方向**…log(θ)→-exp(θ)→-log(θ)→exp(θ)→log(θ)
**+90度**（積分）**方向**…log(θ)→exp(θ)→-log(θ)→-exp(θ)→log(θ)

もちろんYacasばかりか、解析学そのものがこういう「**頭が悪く見えそうな**」時代遅れの位相変遷を微分や積分の範疇では取り扱ってくれません。しかしながら、こうした共通点への注目から数学者**レオンハルド・オイラー**（Leonhard Euler, 1707年〜1783年）は**マクローリン展開**（Maclaurin expansion） を用いて**オイラーの公式（Euler's formula）**_e^Θ=cos(Θ)+sin(Θ)i_を発想したのでした。
[【Rで球面幾何学】オイラーの公式を導出したマクローリン級数](https://qiita.com/ochimusha01/items/4a484d5759f96abb0ab3)
[【Rで球面幾何学】オイラーの公式とは、そもそも何か？](https://qiita.com/ochimusha01/items/ebb190371d9f268723a6)
![20190512232958.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/5e4451eb-9eb8-e8dd-040d-a04a87773795.gif)
以下続報…