我正在尝试用C编写复合Simpson规则。公式为:
其中x_j=a+jh
为j=0, 1, ..., n-1
,n
为h=(b-a)/n
;特别是x_0=a
和x_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
的值)
答案 0 :(得分:4)
您的部门可能不会按预期执行:
(2 / 3) == 0
将int
与int
分开将产生int
。
使用浮点常量(2.0f / 3.0f)
修改强>
您仍然遇到与其他n / 2
相同的问题。
打印浮动时应使用%f
:printf("first sum: %f\n",first);