Ticket #9958: trac_9958-gsl_integration.patch

File trac_9958-gsl_integration.patch, 1.8 KB (added by fbissey, 9 years ago)

fix numerical noise in gsl/integration.pyx

  • sage/gsl/integration.pyx

    # HG changeset patch
    # User Francois Bissey <francois.bissey@canterbury.ac.nz>
    # Date 1323134389 -46800
    # Node ID 41db85fa4b823a85e53c1cf9d54b7fe2e321c266
    # Parent  df5620969fbddef0cf191407d046c2ed522d6a49
    trac 9958: numerical noise in gsl integration
    
    diff --git a/sage/gsl/integration.pyx b/sage/gsl/integration.pyx
    a b  
    108108    To integrate the function $x^2$ from 0 to 1, we do ::
    109109
    110110        sage: numerical_integral(x^2, 0, 1, max_points=100)
    111         (0.33333333333333331, 3.7007434154171879e-15)
     111        (0.3333333333333333, 3.700743415417188e-15)
    112112
    113113    To integrate the function $\sin(x)^3 + \sin(x)$ we do ::
    114114
    115115        sage: numerical_integral(sin(x)^3 + sin(x),  0, pi)
    116         (3.333333333333333, 3.7007434154171883e-14)
     116        (3.333333333333333, 3.700743415417188e-14)
    117117
    118118    The input can be any callable::
    119119
    120120        sage: numerical_integral(lambda x: sin(x)^3 + sin(x),  0, pi)
    121         (3.333333333333333, 3.7007434154171883e-14)
     121        (3.333333333333333, 3.700743415417188e-14)
    122122
    123123    We check this with a symbolic integration::
    124124
     
    129129
    130130        sage: f = x^2
    131131        sage: numerical_integral(f, 0, 1, max_points=200, eps_abs=1e-7, eps_rel=1e-7, rule=4)
    132         (0.33333333333333331, 3.7007434154171879e-15)
     132        (0.3333333333333333, 3.700743415417188e-15)
    133133
    134134    For a Python function with parameters::
    135135
     
    170170    function (which uses GSL) or the native integration (which uses Maxima)::
    171171
    172172        sage: exp(-1/x).nintegral(x, 1, 2)  # via maxima
    173         (0.50479221787318396, 5.6043194293440752e-15, 21, 0)
     173        (0.504792217873184, 5.604319429344075e-15, 21, 0)
    174174        sage: numerical_integral(exp(-1/x), 1, 2)
    175175        (0.50479221787318..., 5.60431942934407...e-15)
    176176