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