程序编译但收到错误答案-C中的Simpson规则集成

时间:2019-03-22 22:04:54

标签: c

我正在尝试使用Simpson的Rule函数来计算C中从0到PI的sin(x)的积分。我的程序可以编译,但是无论输入什么,我都会收到0.0000的答案。有人可以建议吗?

/*Simpson's Rule*/

#include<stdio.h>
#include<math.h>


/*sin(x) is the function to be integrated*/
double f(double x){
        return sin(x);
}

/*Define the Simpson's Rule function*/
double simps(double f(double x), double a, double b, double n){
        double h, integral, x, sum=0;
        int i;
        h=fabs(b-a)/n;
                for(i=1; i<n; i++){
                        x=a+i*h;
                if(i%2==0){
                        sum=sum+2*f(x);
                }
                else{
                        sum=sum+4*f(x);
                }
        }
        integral=(h/3)*(f(a)+f(b)+sum);
        return integral;
}

/*Main Program*/
main(){
        int n, i;
        double a = 0.0, b = M_PI, h, x, sum=0, integral;
/*Ask for number of intervals */
        printf("\nEnter the number intervals: ");
        scanf("%d",&n);
/*Print the answer */
        printf("\nThe integral of sin(x) using Simpson's Rule is: %lf\n",integral);
        printf("\nActual value of sin(x) from 0 to pi: 2\n");
}

我知道答案应该接近2,但是无论我输入多少间隔时间,我都会收到0.00000的答案。

0 个答案:

没有答案