#! /usr/bin/env python # def disk01_quarter_monte_carlo_test ( ): #*****************************************************************************80 # ## DISK01_QUARTER_MONTE_CARLO_TEST tests Monte Carlo in the unit quarter disk. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 06 May 2016 # # Author: # # John Burkardt # import numpy as np import platform from disk01_quarter_area import disk01_quarter_area from disk01_quarter_monomial_integral import disk01_quarter_monomial_integral from disk01_quarter_sample import disk01_quarter_sample from monomial_value import monomial_value print ( '' ) print ( 'DISK01_QUARTER_MONTE_CARLO_TEST' ) print ( ' Python version: %s' % ( platform.python_version ( ) ) ) print ( ' Use DISK01_QUARTER_SAMPLE to estimate integrals' ) print ( ' in the unit quarter disk.' ) e = np.zeros ( 2, dtype = np.int32 ) for i in range ( 0, 5 ): e[0] = i for j in range ( 0, 5 - e[0] ): e[1] = j exact = disk01_quarter_monomial_integral ( e ) print ( '' ) print ( ' Estimate integral of X^%d Y^%d' % ( e[0], e[1] ) ) print ( '' ) print ( ' N Estimate Error' ) print ( '' ) n = 1 seed = 123456789 while ( n <= 65536 ): x, seed = disk01_quarter_sample ( n, seed ) value = monomial_value ( 2, n, e, x ) q = disk01_quarter_area ( ) * np.sum ( value ) / n err = abs ( q - exact ) print ( ' %8d %14.6g %10.2e' % ( n, q, err ) ) n = 2 * n print ( ' Exact: %14.6g %10.2g' % ( exact, 0.0 ) ) # # Terminate. # print ( '' ) print ( 'DISK01_QUARTER_MONTE_CARLO_TEST:' ) print ( ' Normal end of execution.' ) return if ( __name__ == '__main__' ): from timestamp import timestamp timestamp ( ) disk01_quarter_monte_carlo_test ( ) timestamp ( )