電子書籍の厳選無料作品が豊富!

以下の問題について


『原点に質量Mの天体があり、点(x.y)上にある質量mの天体が万有引力で引かれているとする。M>>mとして、質量Mの天体は動かないと仮定する。そのとき、質量mの天体の運動方程式は以下のようになる。

mdVx/dt=-GMmx/r^3

mdVy/dt=-GMmy/r^3

ここでGは万有引力定数でr=√x^2+y^2である。

問: 簡単のためにGM=1として、初期条件x(t=0)=0:5、y(t=0)=0:0、vx(t=0)=0、vy(t=0)=1:63のもとで、上の微分方程式をオイラー法によって解け。適当な力学の教科書を見れば、この初期条件では、答えは閉じた楕円軌道になることが、この系の持つ力学的エネルギーの値から分かる。また、長軸、短軸、周期なども、力学的エネルギーや角運動量の値から計算できる。この答えを実現するためには時間刻み
Δtの値はどの程度でないといけないかを調べよ。』

使用するc++のソースコードに間違いがあるのですが、よくわかりません。知識のある方に教えていただきたいです。↓ソースコード


//n.C
#include <iostream>
#include <cmath>
using namespace std;
main()
{
int n;
float vx=0.0;
float vy=1.63;
float x=0.5;
float y=0.0;
float t=0.0;
float dt=0.05;
float r, r3;
float x1, y1;
cout << x << " "<< y <<"\n";

for (n=1; n<=100; ++n){
x=x+vx*dt;
y=y+vy*dt;
r=sqrt(x*x+y*y);
r3=r*r*r;
vx=vx-(x/r3)*dt;
vy=vy-(y/r3)*dt;
cout << x << " "<< y <<"\n";
}
}


よろしくお願い致します!!

質問者からの補足コメント

  • 回答ありがとうございます。これは課題として出されたものでして、前提として「このソースコードには間違いがあります」とされているのですが質問文に記載するのを忘れていたようです。申し訳ありません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/02/01 10:19

A 回答 (2件)

では「使用するc++のソースコードに間違いがあるのですが、よくわかりません。

」の「よくわかりません」が
どこがどのように「よくわからない」
といっているのか (どこまでがよくわかっていてどこで困っているのか), 具体的に説明をお願いします.
    • good
    • 2

どうして「間違いがある」とわかったのでしょうか?

この回答への補足あり
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!