#include #include int nmin=0,nmax=6; // Energía minima y maxima para listar double Hermite(int n, double x) // Obtiene el valor del polinomio Hn(x) {double H[51];int i; H[0]=1.; H[1]=2*x; if(n<=1) return H[n]; else {for(i=2;i<=n;i++) H[i]=2.*x*H[i-1]-2*(i-1)*H[i-2]; return H[n]; } } main() {FILE * pfileout; int n; double x,a,dx,fi,facn2n; double pi=3.14159265358979323846; a=5.; dx=2.*a/1000; pfileout=fopen("Hermite.txt","w"); fprintf(pfileout,"# Funciones de onda del oscilador armonico x' = beta*x"); printf(" x ");for(n=0;n<=nmax;n++) printf(" f_%i(x) ",n); fprintf(pfileout,"\n# x ");for(n=0;n<=nmax;n++) fprintf(pfileout," f_%i(x)",n); for(x=-a;x<=a*1.01;x=x+dx) {printf("\n%.2lf ",x); fprintf(pfileout,"\n%.2lf ",x); facn2n=1.; for(n=0;n<=nmax;n++) { if(n>0) facn2n=facn2n*2.*n; if(n>=nmin) { //fi=Hermite(n,x); fi=Hermite(n,x)*exp(-x*x/2.)/sqrt(facn2n*sqrt(pi)); printf("%lf ",fi); fprintf(pfileout,"%lf ",fi); } } } fclose(pfileout); }