コード例 #1
0
real IntegraleDeterministico::gauss()
{
    resetIntegral();

    real omega1 = ((real)128.)/225;
    real omega23 = ((322+13*sqrt((real)70))/900);
    real omega45 = ((322-13*sqrt((real)70))/900);

    real xi23 = ( ((real)1) /3)*sqrt(5-2*sqrt( (real)(10./7) ));
    real xi45 = ( ((real)1) /3)*sqrt(5+2*sqrt( (real)(10./7) ));

    for (int i = 0; i < intervalli(); i++) {

        real c = (x_i(i+1)+x_i(i))/2.;
        real m = (x_i(i+1)-x_i(i))/2.;

        // http://mathworld.wolfram.com/Legendre-GaussQuadrature.html

        add( m*omega1*f_test(c) ); // root = 0

        add( m*omega23*f_test(c - m*xi23) );
        add( m*omega23*f_test(c + m*xi23) );

        add( m*omega45*f_test(c - m*xi45) );
        add( m*omega45*f_test(c + m*xi45) );
    }

    return getIntegral();
}
コード例 #2
0
ファイル: switch01.c プロジェクト: ABratovic/open-watcom-v2
int main(void)
{ 
    if( test(-1) != 1 ) fail( __LINE__ );
    if( test(0) != 1 ) fail( __LINE__ );
    if( test(1) != 1 ) fail( __LINE__ );
    if( u_test(-1) != 1 ) fail( __LINE__ );
    if( u_test(0) != 1 ) fail( __LINE__ );
    if( u_test(1) != 1 ) fail( __LINE__ );
    if( a_test(-2) != 1 ) fail( __LINE__ );
    if( a_test(-1) != 1 ) fail( __LINE__ );
    if( a_test(0) != 1 ) fail( __LINE__ );
    if( b_test(INT_MIN+1) != 1 ) fail( __LINE__ );
    if( b_test(INT_MIN) != 1 ) fail( __LINE__ );
    if( b_test(INT_MAX) != 1 ) fail( __LINE__ );
    if( c_test(INT_MAX-1) != 1 ) fail( __LINE__ );
    if( c_test(INT_MAX) != 1 ) fail( __LINE__ );
    if( c_test(INT_MIN) != 1 ) fail( __LINE__ );
    if( d_test(INT_MAX-1) != 1 ) fail( __LINE__ );
    if( d_test(INT_MAX) != 1 ) fail( __LINE__ );
    if( d_test(2) != 1 ) fail( __LINE__ );
    if( e_test(INT_MIN+1) != 1 ) fail( __LINE__ );
    if( e_test(INT_MIN) != 1 ) fail( __LINE__ );
    if( e_test(INT_MAX) != 1 ) fail( __LINE__ );
    if( f_test(INT_MAX-1) != 1 ) fail( __LINE__ );
    if( f_test(INT_MAX) != 1 ) fail( __LINE__ );
    if( f_test(INT_MIN) != 1 ) fail( __LINE__ );
    _PASS;
} 
コード例 #3
0
real IntegraleDeterministico::simpson()
{
    resetIntegral();

    for (int i = 0; i < intervalli()-1; i+=2) {
        add( h()/3 * (f_test(x_i(i)) + 4*f_test(x_i(i+1)) + f_test(x_i(i+2)) ) );
    }

    return getIntegral();
}
コード例 #4
0
real IntegraleDeterministico::trapezi()
{
    resetIntegral();

    for (int i = 0; i < intervalli(); i++) {
        add( h()/2 * (f_test(x_i(i)) + f_test(x_i(i+1)) ) );
    }

    return getIntegral();
}
コード例 #5
0
ファイル: f_test.c プロジェクト: yumm007/C
int main(void) {
	f_init();
	while (f_test()) {
		sleep(1);
	}
	return 0;
}