2014-01-29 61 views
-2

我試圖編程複合辛普森在C.規則的公式是規則:複合辛普森在C

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左右

+0

什麼問題是什麼呢? – user2485710

+0

第一個和第二個初始值應該是什麼?你現在的代碼是什麼? – Abizern

+0

好吧,我添加了它。 – J0natthaaann

回答

4

你的部門不會做很可能你所期望(最終sum值):

(2/3) == 0 

劃分intint將導致int

使用float常數(2.0f/3.0f)

編輯:

你仍然有同樣的問題與其他n/2

和打印花車什麼時候應該使用%fprintf("first sum: %f\n",first);

The value of the integral is: 3.109337

+0

好的,讓我試試看。 – J0natthaaann

+0

我不知道它是否是有意的,但你可能會遇到'(n/2)'相同的問題。 – user694733

+0

沒關係。第一個和第二個循環仍然具有相同的值...自己嘗試一下代碼。 – J0natthaaann