/*********************************************************************** * * File: cromosc.c (06-Apr-2001) * (27-May-2005) * (27-Mar-2008) * * Harmonischer Oszillator mit dem Cromer-Verfahren * * dv/dt = -x * dx/dt = v * * dt..........Zeitschritt * itpr........Ausgabe alle itpr Zeitschritte * itmax.......maximale Anzahl Zeitschritte * x(0),v(0)...Startwerte * * Ausgabe auf File "cromosc.dat" * **********************************************************************/ #include /**********************************************************************/ int main() { /**********************************************************************/ FILE *fout; int it,itmax,itpr; float dt,t,v,vn,x,xn; printf(" dt,itpr,itmax="); scanf("%f,%d,%d",&dt,&itpr,&itmax); printf(" x(0),v(0)="); scanf("%f,%f",&x,&v); fout=fopen("cromosc.dat","w"); t=0.0; fprintf(fout," %11.6f %14.7e %14.7e\n",t,x,v); for(it=1;it<=itmax;it++) { vn=v-dt*x; /* Cromer */ xn=x+dt*vn; /* */ t=it*dt; x=xn; v=vn; if(it%itpr==0) { fprintf(fout," %11.6f %14.7e %14.7e\n",t,x,v); } } fclose(fout); return 0; } /**********************************************************************/