作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 C 语言编写复合辛普森法则。公式为:
哪里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
)
最佳答案
您的部门可能不会达到您的预期:
(2 / 3) == 0
将 int
除以 int
将得到 int
。
使用浮点常量(2.0f/3.0f)
编辑:
您仍然遇到与其他 n/2
相同的问题。
打印 float 时应该使用%f
:printf("first sum: %f\n",first);
关于C 语言的复合辛普森规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424945/
我是一名优秀的程序员,十分优秀!