###前提・実現したいこと
斜方投射のプログラムをオイラー法で作りたいのですが、このプログラムはなぜいけないのですか?
###該当のソースコード
C
1#include <stdio.h> 2#include <math.h> 3#include <stdlib.h> 4#define g 9.8 5 6double f1(double t,double x,double v); 7double f2(double t,double x,double v); 8double f3(double t,double x,double v); 9double f4(double t,double x,double v); 10 11int main(){ 12 13 double θ,v,vθ,v0,x,xv,y,yv,t,dt,tmax; 14 double k0[2],k1[2]; 15 16 FILE *output; 17 output=fopen("output.data","w"); 18 19 x=0.0; 20 y=0.0; 21 θ=45; 22 v0=10.0; 23 dt=0.01; 24 tmax=60; 25 26 //rad=deg*(MPI/180); 27 //xv=v0*cos(rad); 28 //yv=v0*sin(rad); 29 30 31 for(t=0.0;t<=tmax;t+=dt){ 32 k0[0]=dt*f1(t,x,v); 33 k0[1]=dt*f2(t,x,v); 34 x=x+k0[0]; 35 xv=v0+k0[1]; 36 37 k1[0]=dt*f3(t,x,v); 38 k1[1]=dt*f4(t,x,v); 39 y=y+k0[0]; 40 yv=v0+k0[1]; 41 fprintf(output,"%f %f\n",x,v); 42 } 43 fclose(output); 44 return 0; 45} 46 47double f1(double t,double x,double v){ 48 return v; 49} 50double f2(double t,double x,double v){ 51 return (-x); 52} 53double f3(double t,double x,double v){ 54 return 0; 55} 56double f4(double t,double x,double v){ 57 return v; 58} 59
回答1件
あなたの回答
tips
プレビュー