# include # include # include int main ( ); double w ( double x ); int main ( ) { double a; double b; int i; int n = 1000; double q; double x; q = 0.0; for ( i = 0; i < n; i++ ) { a = ( ( n - i ) * 1.0 + ( i ) * 100.0 ) / n; b = ( ( n - i - 1 ) * 1.0 + ( i + 1 ) * 100.0 ) / n; x = 0.5 * ( a + b ); q = q + ( b - a ) * w ( x ); } printf ( "Q = %g\n", q ); return 0; } double w ( double x ) { double a; double b; int it; double tol = 1.0E-10; double value; value = x + log ( x ); it = 0; while ( 1 ) { if ( 100 < it ) { break; } if ( fabs ( ( x - value * exp ( value ) ) ) < tol * fabs ( ( value + 1.0 ) * exp ( value ) ) ) { break; } a = value * exp ( value ) - x; b = ( value + 1.0 ) * exp ( value ) - ( value + 2.0 ) * ( value * exp ( value ) - x ) / ( 2.0 * value + 2.0 ); value = value - a / b; it = it + 1; } return value; }