Javascriptで数値計算その3(Symplectic 8次で三体問題、8の字解)
三体問題の解で、8の字になるものがある。
http://www.scholarpedia.org/article/Three_body_problem
http://www.clas.kitasato-u.ac.jp/~fujiwara/nBody/rims/RIMS2003Abstract.pdf
以前はExcel VBAでシンプレクティック 8次で計算したけれど、今度はJavascript版。
※Canvasが現れるまでOK押さないで。
プログラムソースはこちら。
function func100421() {
var ctx = document.getElementById('c100421').getContext('2d');
w = new Array(8);
c = new Array(17);
d = new Array(17);
px = new Array(4);
py = new Array(4);
qx = new Array(4);
qy = new Array(4);
m = new Array(4);
w[1] = 0.311790812418427;
w[2] = -1.55946803821447;
w[3] = -1.6789692825964;
w[4] = 1.66335809963315;
w[5] = -1.06458714789183;
w[6] = 1.36934946416871;
w[7] = 0.629030650210433;
w[0] = 1. - 2. * (w[1] + w[2] + w[3] + w[4] + w[5] + w[6] + w[7]);
d[1] = w[7];
d[15] = w[7];
d[2] = w[6];
d[14] = w[6];
d[3] = w[5];
d[13] = w[5];
d[4] = w[4];
d[12] = w[4];
d[5] = w[3];
d[11] = w[3];
d[6] = w[2];
d[10] = w[2];
d[7] = w[1];
d[9] = w[1];
d[8] = w[0];
d[16] = 0.;
c[1] = 0.5 * w[7];
c[16] = 0.5 * w[7];
c[2] = 0.5 * (w[7] + w[6]);
c[15] = 0.5 * (w[7] + w[6]);
c[3] = 0.5 * (w[6] + w[5]);
c[14] = 0.5 * (w[6] + w[5]);
c[4] = 0.5 * (w[5] + w[4]);
c[13] = 0.5 * (w[5] + w[4]);
c[5] = 0.5 * (w[4] + w[3]);
c[12] = 0.5 * (w[4] + w[3]);
c[6] = 0.5 * (w[3] + w[2]);
c[11] = 0.5 * (w[3] + w[2]);
c[7] = 0.5 * (w[2] + w[1]);
c[10] = 0.5 * (w[2] + w[1]);
c[8] = 0.5 * (w[1] + w[0]);
c[9] = 0.5 * (w[1] + w[0]);
n = 3;
m[1] = 1.;
m[2] = 1.;
m[3] = 1.;
qx[1] = 0.97000436;
qy[1] = -0.24308753;
px[1] = -0.5 * 0.93240737;
py[1] = -0.5 * 0.86473146;
qx[2] = -0.97000436;
qy[2] = 0.24308753;
px[2] = -0.5 * 0.93240737;
py[2] = -0.5 * 0.86473146;
qx[3] = 0.;
qy[3] = 0.;
px[3] = 0.93240737;
py[3] = 0.86473146;
G = 1.;
ctx.clearRect(0,0,300,300);
ctx.strokeStyle ="rgb(0,0,0)";
ctx.strokeRect(0,0,300,300);
nmax = parseInt(document.Form100421.nvalue.value);
G=1.0;
t=0.;
dt=0.01;
ctx.strokeStyle ="rgb(255,0,0)";
ctx.beginPath();
ctx.moveTo(150.+150.*qx[1]/2.,150.-150.*qy[1]/2.);
for (i=1;i<=nmax;i++) {
for (k=1;k<=16;k++) {
for (j=1;j<=3;j++) {
qx[j] = qx[j] + dt * c[k] * px[j] / m[j];
qy[j] = qy[j] + dt * c[k] * py[j] / m[j];
}
for (j=1;j<=3;j++) {
fx = 0.;
fy = 0.;
for (ii=1;ii<=3;ii++) {
if (ii!=j) {
r = Math.sqrt((qx[ii] - qx[j]) * (qx[ii] - qx[j]) + (qy[ii] - qy[j]) * (qy[ii] - qy[j]));
fx = fx + G * m[ii] * m[j] * (qx[ii] - qx[j]) / (r*r*r);
fy = fy + G * m[ii] * m[j] * (qy[ii] - qy[j]) / (r*r*r);
}
}
px[j] = px[j] + dt * d[k] * fx;
py[j] = py[j] + dt * d[k] * fy;
}
}
t = t + dt;
ctx.lineTo(150.+150.*qx[1]/2.,150.-150.*qy[1]/2.);
}
ctx.stroke();
}
« 「暗黒館の殺人」を読んだ。 | トップページ | 金礼宮におまいり。 »
「パソコン・インターネット」カテゴリの記事
- 家で使うPCをゲーミングノートPC、ASUS TUF Gaming A16に買い替えた。CPUはAMD Ryzen 9 8940HX、メモリ32GB、GPUはNVIDIA GeForce RTX 5060 Laptop GPU、SSD 1TB。ゲームをしたいわけでなくてNVIDIAの最新GPUで機械学習・数値計算やろうかと。(2025.11.13)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/3-2025/11/9(2025.11.09)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3(2025.11.04)
- Google AI StudioのBuild(アプリを作る機能)で高周波・RFニュースを1週間分まとめるアプリを作った(最終版) 私がいつも調査しているサイト67個を全部入れて調べてもらうようにした。これでとりあえず完成かな。QorvoとSkyworksの合併も拾ってくれた。(2025.10.30)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年11月13日 QorvoがTWTA置き換えの広帯域SSPA発表、iFixitがiPad Pro M5分解、KYOCERA AVXが0.9Vで動く超小型クロック発表、Mini-Circuitsが様々なBALUNやトランス解説、軍用5G解説、imecの110GHz可能な300mm GeSiウェハー(2025.11.13)
- 高周波・RFニュース 2025年11月12日 Qualcommが語る技術の標準化、STMicroelectronicsが語るシリコンフォトニクス、HuaweiがイノベーションとIPフォーラム開催、6G SummitでFCCのコミッショナーが米国が6Gをリードすべしと語る(2025.11.12)
- トランジスタ技術2025年12月号 電波と回路のススメMHz~GHzを操る!を買った。GHzはアナデバのICを使った信号発生器(信号検出付きなのが面白い)のみだったが、マルチパス、高調波で周波数拡大、6.78MHzのワイヤレス給電、オシロでSDRなど話題も豊富で面白かった。(2025.11.11)
- 高周波・RFニュース 2025年11月10日 Qorvoらが参加する5G, 6Gオンラインパネル開催、SkyworksがBAWを使った高性能クロック発表、Nokiaベル研とKDDIが6Gで協業、次世代FWAのアンテナ設計解説(2025.11.10)
トラックバック
この記事へのトラックバック一覧です: Javascriptで数値計算その3(Symplectic 8次で三体問題、8の字解):
» FXの成功の法則について [【FX外国為替】初心者のための必勝法]
もしFXの成功の法則はと聞かれれば?
単純に負けないトレードをする事と言えます。
どんなに素晴らしい本を読んだり、理論を学んだりしても
いつも負けていては当然意味がないのです。
では、成功の法則として負けにくい方法とはどんな方法なのか?
まず、取引手数料が無料で、スプレッドが低い業者を選ぶ事が近道です。
どんなに有名なFX会社でも、手数料もスプレッドも高いと
実際には中々勝てないものです。
... [続きを読む]


コメント