/*----------------- SIMPSON'S 3/8 RULE OF INTEGRATION ----------------*/ /* THIS PROGRAM CALCULATES THE VALUE OF INTEGRATION USING SIMPSON'S 3/8 RULE. THE FUNCTION TO BE INTEGRATED IS, f(x) = 4 + 2 sin x INPUTS : 1) Lower and upper limits of integration. 2) Number of intervals. OUTPUTS : Result of integration. */ /*------------------------------ PROGRAM -------------------------*/ #include #include #include #include void main() { double fx (double x0); /* DECLARATION OF A FUNCTION fx */ double lo,up,f[20],h,x0,sum,result; int i,n; clrscr(); printf("\n\t SIMPSON'S 3/8 RULE OF INTEGRATION"); printf("\n\nEnter the lower limit of integration = "); scanf("%lf",&lo); /* ENTER LOWER LIMIT OF INTEGRATION */ printf("\n\nEnter the upper limit of integration = "); scanf("%lf",&up); /* ENTER UPPER LIMIT OF INTEGRATION */ printf("\n\nEnter the value of h = "); scanf("%lf",&h); /* ENTER THE VALUE OF h */ n = (up - lo)/h; /* CALCULATION VALUE OF n i.e.STRIPS */ x0 = lo; for(i = 0; i <= n; i++) /* LOOP TO CALCULATE VALUE OF f(x) */ { f[i] = fx(x0); /* FUNCTION fx IS CALLED HERE */ x0 = x0 + h; /* NEXT VALUE OF x IS CALCULATED HERE */ } sum = 0; for(i = 1; i <= n-1; i++) { if(i == 3*(i/3) ) continue; sum = sum + 3*f[i]; /* 3 * SUM OF ORDINATES NOT MULTIPLE OF 3 */ } for(i = 3; i <= n-1; i = i + 3) { sum = sum + 2*f[i]; /*2 * SUM OF ORDINATES WHICH ARE MULTIPLE OF 3*/ } result = (3*h/8) * ( f[0] + f[n] + sum ); /*Result = (3h/8) * (3 * sum of ordinates not multiple of 3 + 2 * sum of ordinates which are multiple of 3 ) */ printf("\n\nThe result of integration is = %lf",result); } double fx ( double x) /* FUNCTION TO CALCULATE VALUE OF f(x) */ { double f; f = 4 + 2 * sin(x); /* function f(x) = 4 + 2 sin x */ return(f); } /*------------------------ END OF PROGRAM ------------------------------*/