プログラミング(c言語)
以下のプログラムでオイラー法を用いた2階微分方程式を解きたいのですが、xとvyの値が変化しません。どこが間違っているのか教えて欲しいです
写真は問題文です
#define _USE_MATH_DEFINES
#include<stdio.h>
#include<math.h>
int main(){
int i;
double x,x0,y,y0,vx,vx0,vy,vy0,r,dt,t=0.0;
double G=6.674/pow(10.0,11.0),M=1.988*pow(10.0,30.0);
x0=1.496*pow(10.0,11.0),y0=0.0,vx0=0.0,vy0=2.978*pow(10.0,4.0);
dt=M_PI/100;
for(i=1;i<=2000;i++){
x=x0+dt*vx0; y=y0+dt*vy0;
r=sqrt(x0*x0+y0*y0);
vx=vx0-dt*(G*M*x0/(r*r*r));vy=vy0-dt*(G*M*y0/(r*r*r));
t=dt*i;
printf("x(%f)=%e y(%f)=%e vx(%f)=%e vy(%f)=%e\n",t,x,t,y,t,vx,t,vy);
x0=x; y0=y; vx0=vx; vy0=vy;
}
return(0);
}
お礼
なるほど! 己の未熟さを痛感しました… ありがとうございました。