Google ColabのJulia言語でDifferentialEquationsパッケージを使ってピタゴラスの三体問題を35段14次ルンゲクッタFeagen法で計算し、Colab上でGIFアニメにしてみた。dtminを小さくしないと途中で止まってしまうことにハマった…
今回はピタゴラスの三体問題。質量mが3,4,5の三体が辺の長さが3,4,5の直角三角形の頂点におかれている場合にどのような動きをするか、というもの。
以前、Python、Visual C#, Unityで計算したがJuliaでもやってみよう。
まずはめちゃくちゃ時間がかかるが
using DifferentialEquations
using Plots
function threebody!(du, u, p, t)
m1 = p[1]
m2 = p[2]
m3 = p[3]
qx1 = u[1]
vx1 = u[2]
qy1 = u[3]
vy1 = u[4]
qx2 = u[5]
vx2 = u[6]
qy2 = u[7]
vy2 = u[8]
qx3 = u[9]
vx3 = u[10]
qy3 = u[11]
vy3 = u[12]
Ra = sqrt((qx2 - qx1)^2.0 + (qy2 - qy1)^2.0)^3.0
Rb = sqrt((qx3 - qx1)^2.0 + (qy3 - qy1)^2.0)^3.0
du[1] = vx1
du[2] = m2 * (qx2 - qx1) / Ra + m3 * (qx3 - qx1) / Rb
du[3] = vy1
du[4] = m2 * (qy2 - qy1) / Ra + m3 * (qy3 - qy1) / Rb
Ra = sqrt((qx1 - qx2)^2.0 + (qy1 - qy2)^2.0)^3.0
Rb = sqrt((qx3 - qx2)^2.0 + (qy3 - qy2)^2.0)^3.0
du[5] = vx2
du[6] = m1 * (qx1 - qx2) / Ra + m3 * (qx3 - qx2) / Rb
du[7] = vy2
du[8] = m1 * (qy1 - qy2) / Ra + m3 * (qy3 - qy2) / Rb
Ra = sqrt((qx1 - qx3)^2.0 + (qy1 - qy3)^2.0)^3.0
Rb = sqrt((qx2 - qx3)^2.0 + (qy2 - qy3)^2.0)^3.0
du[9] = vx3
du[10] = m1 * (qx1 - qx3) / Ra + m2 * (qx2 - qx3) / Rb
du[11] = vy3
du[12] = m1 * (qy1 - qy3) / Ra + m2 * (qy2 - qy3) / Rb
nothing
end
tspan = (0, 100)
p = [3.0, 4.0, 5.0]
u0 = [big(1.0), big(0.0), big(3.0), big(0.0), big(-2.0), big(0.0), big(-1.0), big(0.0), big(1.0), big(0.0), big(-1.0), big(0.0)]
prob = ODEProblem(threebody!, u0, tspan, p)
sol = solve(prob, Feagin14(), dtmin = 1.0e-20, abstol = big(1.0e-30), reltol = big(1.0e-30))
|
これが何回やってもまともな精度がでないまま、途中でステップが小さくなり過ぎだと出て止まる。止まらないように精度を落とすと全然まともな波形が出ない。どのアルゴリズム使っても一緒。
なぜ?と思ったらデフォルトの最小刻み幅設定が~10^(-6)で、それはこの問題に対しては大きすぎていたから。ここにめっちゃくちゃハマった。dtminを設定するとうまく動いた。
Juliaは結果を簡単にGIFアニメにできるのでやってみた。ただ膨大なデータになったので500個飛ばしにしないといつまでたっても処理が終わらなかった。結果はこれ。
« 高周波・RFニュース 2025年3月26日 ルネサスが車載Bluetooth Soc発表、QorvoがUltra-Wideband(UWB)レーダについて解説、VNPTがQualcommの XGS-PONとWi-Fi 7ソリューション採用、SpirentのAIインフラのテストレポート | トップページ | 高周波・RFニュース 2025年3月27日 Qualcommが3GPP 6Gワークショップで議論された内容を紹介、Broadcomが00G/lane DSP PHYチップ発表、DreiとEricssonが5GのWバンド(92~115 GHz )テスト中、Siversが高性能レーザでWINセミコンダクタと提携、Semtechの50G PON »
「パソコン・インターネット」カテゴリの記事
- Interface2025年8月号Pythonで体験!はじめての暗号を買った。上杉暗号からRSA、AES、DHなど、特に楕円曲線暗号についてはコードも実際に動かすところまで詳しくかかれていた。耐量子暗号や聞いたことなかったY-00暗号や関数型暗号も記載。(2025.07.10)
- Gemini CLIが使えるようになっていたので早速VSCodeのターミナルから使って、JavaScriptで連立一次方程式を計算するコードを書いてもらった。普通にガウスの消去法で計算するhtmlを作ってくれた。(2025.06.27)
- Google ColabのJulia言語で1次元のGray-Scottモデル(∂u/∂t=u²v-(F+k)u+Du∂²u/∂x²,∂v/∂t=-u²v+F(1-v)+Dv∂²v/∂x²)を計算してパルスが次々分裂する様子を見る。空間6次の差分、時間8次のルンゲクッタ法で計算。(2025.07.08)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年7月13日 Pythonの高周波ライブラリscikit-rfがv1.8.0に、SamsungがGalaxy Z Fold7など発表→QualcommがSnapdragon 8 Eliteが使われていると発表、NGMNが基地局アンテナの推奨事項をまとめる、STMicroとMetalenzがメタサーフェス光学のライセンス締結(2025.07.14)
- Interface2025年8月号Pythonで体験!はじめての暗号を買った。上杉暗号からRSA、AES、DHなど、特に楕円曲線暗号についてはコードも実際に動かすところまで詳しくかかれていた。耐量子暗号や聞いたことなかったY-00暗号や関数型暗号も記載。(2025.07.10)
- 高周波・RFニュース 2025年7月8日 NordicとSercommのセルラーIoTモジュール、iFixitがFairphone 6を分解、スコアは10/10、RCR wireless newsのウェビナー2件(6GとIndustry4.0)、SEMCOが高耐圧C0G MLCCを車載急速充電に提案(2025.07.09)
- 高周波・RFニュース 2025年7月2日 5G Americasが6Gに向けセンシングと通信ホワイトペーパー発行、KYOCERA AVXが3dBハイブリッドカプラ発表、TDKが車載薄膜インダクタ発表、Nordicが1次電池向けPMIC発表、ローデ・シュワルツの6GとAI/ML解説記事(2025.07.02)
- 高周波・RFニュース 2025年6月30日 QualcommがAIを用いた6Rxアンテナ解説、Next G Allianceと日本のXGMFが5G,6Gで協力、5G Americasが25Q1で5G加入者増加と発表、TechInsigtsがHuawei Pura 80 Pro+分解、Qorvoが5-7GHzのWi-Fi 7 FEM発表(2025.06.30)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年7月13日 Pythonの高周波ライブラリscikit-rfがv1.8.0に、SamsungがGalaxy Z Fold7など発表→QualcommがSnapdragon 8 Eliteが使われていると発表、NGMNが基地局アンテナの推奨事項をまとめる、STMicroとMetalenzがメタサーフェス光学のライセンス締結(2025.07.14)
- 高周波・RFニュース 2025年7月8日 NordicとSercommのセルラーIoTモジュール、iFixitがFairphone 6を分解、スコアは10/10、RCR wireless newsのウェビナー2件(6GとIndustry4.0)、SEMCOが高耐圧C0G MLCCを車載急速充電に提案(2025.07.09)
- 高周波・RFニュース 2025年7月2日 5G Americasが6Gに向けセンシングと通信ホワイトペーパー発行、KYOCERA AVXが3dBハイブリッドカプラ発表、TDKが車載薄膜インダクタ発表、Nordicが1次電池向けPMIC発表、ローデ・シュワルツの6GとAI/ML解説記事(2025.07.02)
- 高周波・RFニュース 2025年6月30日 QualcommがAIを用いた6Rxアンテナ解説、Next G Allianceと日本のXGMFが5G,6Gで協力、5G Americasが25Q1で5G加入者増加と発表、TechInsigtsがHuawei Pura 80 Pro+分解、Qorvoが5-7GHzのWi-Fi 7 FEM発表(2025.06.30)
- 高周波・RFニュース 2025年6月27日 Qualcommが6Gに向けての3GPPリリース20解説、TDKが100V1608サイズ1μFのMLCCを発表、Skyworksが低ジッタのクロックファミリーを発表、Elisa,Ericsson,MediaTekが5G SAで8Gbpsを達成(2025.06.27)
« 高周波・RFニュース 2025年3月26日 ルネサスが車載Bluetooth Soc発表、QorvoがUltra-Wideband(UWB)レーダについて解説、VNPTがQualcommの XGS-PONとWi-Fi 7ソリューション採用、SpirentのAIインフラのテストレポート | トップページ | 高周波・RFニュース 2025年3月27日 Qualcommが3GPP 6Gワークショップで議論された内容を紹介、Broadcomが00G/lane DSP PHYチップ発表、DreiとEricssonが5GのWバンド(92~115 GHz )テスト中、Siversが高性能レーザでWINセミコンダクタと提携、Semtechの50G PON »
コメント