【Unity】カオスな連成振り子を動かしてみる♬

連成振り子は以下のように最近でもカオスの研究もあることから、楽しみな系である。
【参考】
・[二重振り子の振る舞いからカオスへ](https://ir.library.osaka-u.ac.jp/repo/ouka/all/60332/28-19-理-玉置.pdf)
・[連成振り子による非線形な振る舞いとカオス ](http://www.phys.chuo-u.ac.jp/labs/taguchi/sotsuron/2000/fujita00/sotsuron.pdf)
ということで、今回はマイカオスを求めてこれを数値解とOculusGoで再現することを試みた。
###やったこと
（１）かわいい天使が出てきた
（２）数値解について
（３）連成振り子をOculusGoする
###（１）かわいい天使が出てきた
![plot_xp1omega490.png](https://qiita-image-store.s3.amazonaws.com/0/233744/9152cbb5-33fb-8dde-35a0-eae4ed0c975c.png)
![plot_xp2omega490.png](https://qiita-image-store.s3.amazonaws.com/0/233744/3a2dd560-a0ae-1d66-b94f-2ee9267cce05.png)ウワンには天使に見えたよ♬

ても振動はエネルギーが増大していて、エネルギー注入しないと実現しない。
![plot_thomegavst2490g.png](https://qiita-image-store.s3.amazonaws.com/0/233744/6f153212-3519-86d4-019a-3a245dd15021.png)
![plot_thomegavst1490g.png](https://qiita-image-store.s3.amazonaws.com/0/233744/e4006370-d921-f6b9-bdcb-c0efbdfe0861.png)
###（２）数値解について
今回の連成振り子の方程式は以下のようなものである。

```py

def dualPendulum(y, t, b, c):
    """
    (𝑚1 +𝑚2)𝑙1^2𝜃1̈  = -(+𝑚2𝑙1𝑙2(𝜃2̈ cos(𝜃1 −𝜃2)+𝜃2̇ ^2 sin(𝜃1 −𝜃2)) +(𝑚1 +𝑚2)𝑔𝑙1 sin𝜃1)
    𝑚2𝑙2^2𝜃2̈  = -(+𝑚2𝑙1𝑙2(𝜃1̈ cos(𝜃1 −𝜃2)−𝜃1̇ 2 sin(𝜃1 −𝜃2)) +𝑚2𝑔𝑙2 sin𝜃2)
    𝜃1'' = - (a*(𝜃2''*cos(𝜃1-𝜃2)+𝜃2'^2*sint(𝜃1-𝜃2)) + b*sint𝜃1)
    𝜃2'' = -(c*(𝜃1''*cos(𝜃1-𝜃2)-𝜃1'^2*sin(𝜃1-𝜃2))+d*sin𝜃1)
    𝜃1'(t) = ω1(t)
    𝜃2'(t) = ω2(t)
    ω1'(t) = - (a*(ω2'*cos(𝜃1-𝜃2)+ω2^2*sin(𝜃1-𝜃2)) + b*sin𝜃1)
    ω2'(t) = - (c*(ω1'*cos(𝜃1-𝜃2)-ω1^2*sin(𝜃1-𝜃2)) + d*sin𝜃2)
    
    theta''(t) + b*theta'(t) + c*sin(theta(t)) = 0
    theta'(t) = omega(t) 
    omega'(t) = -b*omega(t) - c*sin(theta(t))
    """
    theta1, omega1,theta2, omega2 = y
    dydt = [omega1, -b*omega1 - c*np.sin(theta1)+4.90*omega2,omega2, -b*omega2 - c*np.sin(theta2)-4.90*omega1]
    return dydt

b = 0.025
c = 5.0
y0 = [np.pi - 0.1, 0.0,np.pi - 0.1, 0.0]
t = np.linspace(0, 100, 1001)
sol = odeint(dualPendulum, y0, t, args=(b, c))
x1, p1,x2,p2 = sol.T[0], sol.T[1], sol.T[2], sol.T[3]
```
ちょっと言い訳すると、まともの連成振り子やろうかと思ったけど、結局緩く連結する減衰振動子というイメージで相互作用は、+s*omega2や+s*theta2にしました。
※誰も言っていないけど、要はこの辺りは適当に非線形に相互作用する振動子系ならカオスな領域がありそう。。。
因みに[数値解法は以前の記事](https://qiita.com/MuAuan/items/64d698d6f34ebe63afe8)見てください。
ということで、相互作用s*omega2をいろいろ変更すると以下のような特徴な絵が出てきました。
相互作用なし；目玉
![plot_xp.png](https://qiita-image-store.s3.amazonaws.com/0/233744/c9664f15-84bf-865b-b4da-b9fb0e8cd417.png)
0.01omega2*omega2；オタマジャクシ
![plot_xp1.png](https://qiita-image-store.s3.amazonaws.com/0/233744/61342fdd-2c12-a44e-fa67-91cf0024a9f5.png)
k=0.01；目ぢから
![plot_xp1omega001.png](https://qiita-image-store.s3.amazonaws.com/0/233744/8df2ac80-51ba-b75b-626d-dfa9f69062ef.png)
k=0.02；眼の虹彩
![plot_xp1omega002.png](https://qiita-image-store.s3.amazonaws.com/0/233744/0854486c-6b07-c219-4def-3d5958b8d803.png)
k=0.03；成熟したオタマジャクシ
![plot_xp1omega003.png](https://qiita-image-store.s3.amazonaws.com/0/233744/d9e41aea-178f-be7a-acf5-75f57a0502d8.png)
k=0.25；串団子
![plot_xp1omega025.png](https://qiita-image-store.s3.amazonaws.com/0/233744/16d90d28-bc4d-c08a-a9f5-305ff4d827a9.png)
k=0.45；バットマン
![plot_xp1omega045.png](https://qiita-image-store.s3.amazonaws.com/0/233744/034aa6de-17fd-6cab-50cd-89992939d8aa.png)
k=0.90；アラジンの魔法使い
![plot_xp1omega090.png](https://qiita-image-store.s3.amazonaws.com/0/233744/b8d53b78-7000-3ff2-186c-6e82d4619b61.png)
k=4.90；天使
![plot_xp1omega490.png](https://qiita-image-store.s3.amazonaws.com/0/233744/751375ee-d065-3634-1d32-99d6e10907b2.png)
上記の代表的なthetavstを見ると
0.01omega2*omega2
![plot_thomegavst1.png](https://qiita-image-store.s3.amazonaws.com/0/233744/31c6d22c-84f4-fa82-d73f-94d8c037f413.png)
k=0.25
![plot_thomegavst1025g.png](https://qiita-image-store.s3.amazonaws.com/0/233744/c1d28425-4066-e2fc-e903-22c825062488.png)
k=0.90
![plot_thomegavst1090g.png](https://qiita-image-store.s3.amazonaws.com/0/233744/b0628804-dd9f-67e9-bb4f-42445c8a0815.png)
omegavstを見ると
0.01omega2*omega2
![plot_thomegavst2.png](https://qiita-image-store.s3.amazonaws.com/0/233744/884d751e-6979-de43-23fe-227cd97e9a26.png)
k=0.25
![plot_thomegavst2025g.png](https://qiita-image-store.s3.amazonaws.com/0/233744/b4e3fe24-a802-2aef-d44e-f9f6f20731bb.png)
k=0.90
![plot_thomegavst2090g.png](https://qiita-image-store.s3.amazonaws.com/0/233744/4ac570c8-ce89-859e-89bb-24f4aeca8710.png)
###（３）連成振り子をOculusGoする
とにかく連成振り子作った。。って、鎖もないから振り子作るのもちょっとでした。

【参考】
・[Unityで超シンプルで超カンタンに”揺れもの”の実装](https://qiita.com/amano-kiyoyuki/items/86b0bcdc759a562d10f9)
参考の記載はある意味簡単に見えますが、。。。実は振り子動くまで二日かかりました。
原理的には、回転中心（固定位置）と回転方向とそもそもそれぞれの接点を合わせないといけないという。。。よくよく計算しないと動かない。。
ということで普通の振り子は以下のとおりの設定です。
![penPanel.jpg](https://qiita-image-store.s3.amazonaws.com/0/233744/18d99fe7-960c-5b35-14a3-b4145245c402.jpeg)
![penCylinder.jpg](https://qiita-image-store.s3.amazonaws.com/0/233744/30505432-8615-18fe-9d92-8f491955ef05.jpeg)
![penSphere.jpg](https://qiita-image-store.s3.amazonaws.com/0/233744/bf9a24fb-64d6-159c-076b-f0923eb4cf89.jpeg)
連成振り子も同じように作成します。
この振り子のパネルをはずして、もう一個振り子を作成してその間を仕方ないのでCylinderで連結しました。
ということでこんな感じになりました。
![dablePenCylinder0.jpg](https://qiita-image-store.s3.amazonaws.com/0/233744/61dab3cd-38f3-fcd1-3d86-d9bb2be639fc.jpeg)
上記の振り子のパネルの代わりにCylinder0をiskineticにチェックして動かないようにして、これでエネルギー授受を期待したましたが。。。
以下の通り。。。
[【OculusGo】いわゆる緩い連成振り子♬](https://youtu.be/3ndDRC4vf1Y)
<a href="http://www.youtube.com/watch?feature=player_embedded&v=3ndDRC4vf1Y" target="_blank"><img src="http://img.youtube.com/vi/3ndDRC4vf1Y/0.jpg" 
 </a>
※画像をクリックするとYouTube動画につながります

やはり、残念ながら、なかなかカオスな振舞の領域が再現できませんでした。。。まだまだやり切れていないが。。
###まとめ
・連成振り子のカオス的振舞をいろいろやってみた
・位相空間の絵が天使な図柄が出てきた。。マイカオス（笑）
・OculusGoで連成振り子を作成できた

・OculusGoはエネルギー伝達が不十分でカオスな領域を実現できていない
・連成振り子の相図作成までできていない。。そもそも相図作成のパラメーターが定まっていない

・