float simpson( float a, float b, float (* function) (float x) , int n ) { float value; /* Calkowanie metoda Simpsona */ float h, x, sum; int i; int nc; // oznaczenie dla liczby wezlow wewnetrznych
nc = abs( n / 2 ) * 2; h = (b - a) / (float) nc; // krok calkowania
sum = 0.0; for( i=1; i x = a + (float) i * h; sum += 4.0*function(x) + 2.0*function(x+h); }
value = ( function(a) + sum + 4.0*function(b-h) + function(b) ) * h / 3.0;