#include #include #include #include #include void integral(void); double a,b; double pi=atan2(0.,-1); double D; double sum; double x; long i,j; double f[200]; double Upper_Limit; FILE *pFile[4]; char filename[4][FILENAME_MAX]; void main() { printf("\n\n cosine_inegral.cpp ver 1.2 June 17, 2005 \n"); printf("\n by Tom Irvine Email: tomirvine@aol.com \n"); printf("\n This program integrates the function: \n "); printf("\n S (1/x)cos(x) dx \n"); printf("\n Enter upper limit \n"); scanf("%lf",&b); printf("\n Enter lower limit \n"); scanf("%lf",&a); if(a>10 || b>10) { printf("\n error: maximum limit is 10 \n"); exit(1); } if( a > b) { printf("\n error: lower limit must be < upper limit \n"); exit(1); } if( a<=0 || b<=0) { printf("\n error: limits must be > 0 \n"); exit(1); } f[1]=1.; printf("\n\n"); for(i=2;i<=150;i++) { f[i]=f[i-1]*double(i); } printf("\n\n"); x=b; integral(); D=sum; x=a; integral(); printf(" Value at upper limit = %8.4lf \n",D); printf(" Value at lower limit = %8.4lf \n\n",sum); printf(" Integrated Sum = %8.4lf\n",(D-sum)); strcpy(filename[0],"cosine.out"); pFile[0]=fopen(filename[0],"w"); double delta,y; long n=10000; delta = (b-a)/n; for(i=0;i<=n;i++) { x=delta*i+a; y=(1./x)*cos(x); fprintf(pFile[0]," %8.4g \t %8.4g \n",x,y); } printf("\n Press any key to exit.\n"); getch(); } void integral(void) { sum=log(x); int sign=-1; for(i=2;i<=150;i+=2) { sum+=sign*pow(x,i)/(double(i)*f[i]); if(sign==1) { sign=-1; } else { sign=1; } } }