复合Simpson在C中的规则

时间:2014-01-29 07:42:18

标签: c math for-loop formula equation

我正在尝试用C编写复合Simpson规则。公式为:

enter image description here

其中x_j=a+jhj=0, 1, ..., n-1nh=(b-a)/n;特别是x_0=ax_n=b

由于某种原因,第一个和第二个循环具有相同的值。我检查了很多次,但我似乎无法找到我的错误。

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

float f(float);
float a;
float b;
float x;
float h;
int n;
int j;


 a=0;
 b=2;
 n=8;
 h = (n - j) / b; 

float first;
float second;
int main() {


  sum = (h / 3.0f) * (f(h) + f(n));

  printf("%f\n", sum);

  second =  (4.0f) * h * f(a);
  }
  printf("second sum: %f\n",second );

  sum = sum + first + second;
  printf("%f\n", sum); 
  return 0;
}

答案应该是3.1(最终sum的值)

1 个答案:

答案 0 :(得分:4)

您的部门可能不会按预期执行:

(2 / 3) == 0

intint分开将产生int

使用浮点常量(2.0f / 3.0f)

修改

您仍然遇到与其他n / 2相同的问题。

打印浮动时应使用%fprintf("first sum: %f\n",first);

The value of the integral is: 3.109337