Я пытаюсь вычислить интеграл от sin (x) от 0 до PI в C, используя функцию правила Симпсона. Моя программа компилируется, но я получаю ответ 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.