新しく発言する EXIT インデックスへ
三体問題

  三体問題 けい 2005/01/16 22:25:55 
  えーと、太陽-地球地球-月月-隕石 青木太一 2005/01/17 04:01:44 
  │└そうそう、書き忘れましたが、元のプログラ... 青木太一 2005/01/17 04:06:37 
  あ、これ月の軌道がちゃんと見られるように... 青木太一 2005/01/17 04:12:08 

  三体問題 けい 2005/01/16 22:25:55  ツリーへ

三体問題 返事を書く
けい 2005/01/16 22:25:55
以下のプログラムがあります。太陽、地球、月の関係を表したものなんですが、このプログラムを書き換えて地球、月、隕石に置き換え、隕石の座標と質量と初速度を入力するようにしたいんです。ですが自分で作ったものではないでどこをどうすればよいかわかりません。

SET WINDOW -150,150,-150,150
flood 0,0
SET COLOR 4
DRAW disk WITH SCALE(5)*SHIFT(0,0)
LET Km=3.69E-8
LET Ke=3.01E-6
DEF Re(t) = SQR(Xe^2+Ye^2)
DEF Rm(t) = SQR(Xm^2+Ym^2)
DEF R(t) = SQR((Xe-Xm)^2+(Ye-Ym)^2)
LET X=Xm-Xe
LET Y=Ym-Ye
DEF Ax(t)=-Xe/Re(t)^3+Km*X/R(t)^3
DEF Ay(t)=-Ye/Re(t)^3+Km*Y/R(t)^3
DEF Bx(t)=-Xm/Rm(t)^3-Ke*X/R(t)^3
DEF By(t)=-Ym/Rm(t)^3-Ke*Y/R(t)^3
LET Xe=100
LET Ye=0
LET Vx=0
LET Vy=0.1002
LET Xm=100.257
LET Ym=0
LET Ux=0
LET Uy=0.1037
LET Dt=1
LET Vx=Vx+Ax(t)*(Dt/2)
LET Vy=Vy+Ay(t)*(Dt/2)
LET Ux=Ux+Bx(t)*(Dt/2)
LET Uy=Uy+By(t)*(Dt/2)
DO
DRAW axes0(100,100)
LET Xe=Xe+Vx*Dt
LET Ye=Ye+Vy*Dt
LET Xm=Xm+Ux*Dt
LET Ym=Ym+Uy*Dt
LET t=t+Dt
PRINT "t=";t
LET X=Xm-Xe
LET Y=Ym-Ye
SET COLOR 2
DRAW disk WITH SCALE(1)*SHIFT( Xe,-Ye)
SET COLOR 6
DRAW disk WITH SCALE(0.27)*SHIFT(Xe+X*20,-(Ye+Y*20))
FOR i=0 TO 10000
next i
SET COLOR 1
DRAW disk WITH SCALE(1)*SHIFT( Xe2,-Ye2)
DRAW disk WITH SCALE(0.27)*SHIFT(Xe2+X2*20,-(Ye2+Y2*20))
LET Xe2=Xe
LET Ye2=Ye
LET X2=X
LET Y2=Y
LET Vx=Vx+Ax(t)*Dt
LET Vy=Vy+Ay(t)*Dt
LET Ux=Ux+Bx(t)*Dt
LET Uy=Uy+By(t)*Dt

LOOP
END

  えーと、太陽-地球地球-月月-隕石 青木太一 2005/01/17 04:01:44  ツリーへ

Re: 三体問題 返事を書く
青木太一 2005/01/17 04:01:44
えーと、太陽->地球 地球->月 月->隕石
というふうに置き換えちゃっていいんですか?それならまあ簡単で、もとのプログラムとしては月の初期位置がXm,Ymで、初速度がUx,Uyですから、それをinput文なりなんなりで最初に手で入力するようにすればいいのではないでしょうか。
月の質量はKmみたいですけど、太陽の質量や万有引力定数で正規化しているみたいなので、(というか、どういう単位で入力したいのでしょう?)その正規化された値を入力するのでよければ、同様にKmもinputで変えられるようにすればいいでしょう。

プログラムをちゃんと見てないので間違いあるかも。
間違ってたらごめんなさい。

関係ないですけど
SET COLOR 1
の前に以下の二行
set draw mode explicit
set draw mode hidden
を付け足すと画面のちらつきがなくなっていいですよ。
アニメーションを行うときは、前の画像を消している処理から新しい画像を出す間までは、画面に処理内容が反映されないようにしないとちらつきがおきます。

  │└そうそう、書き忘れましたが、元のプログラ... 青木太一 2005/01/17 04:06:37  ツリーへ

Re: えーと、太陽-地球地球-月月-隕石 返事を書く
青木太一 2005/01/17 04:06:37
そうそう、書き忘れましたが、元のプログラムは太陽は原点で不動になっていますよね。
地球や月の質量に比して太陽はばかでかいのでそれでもいいと思いますが、
それぞれを地球、月、隕石におきかえたのなら、
地球が月によってふりまわされる(共通重心周りを回る)ことも考えにいれて、プログラムを書き直したほうがいいのかもしれません。
けいさんのプログラムがどこまで厳密性を要求する目的のものなのかわからないので、なんともいえませんが。

  あ、これ月の軌道がちゃんと見られるように... 青木太一 2005/01/17 04:12:08  ツリーへ

Re: 三体問題 返事を書く
青木太一 2005/01/17 04:12:08
あ、これ月の軌道がちゃんと見られるように、実際の位置より月が地球から離れて表示されるようになっているんですね。
隕石版に書き換えるとき、そこのところも注意しないといけないかな。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。