Error propagation of a variable for an integral

In summary: You can get a similar approximation for ##\frac{\partial I}{\partial a}## by evaluating the integral with a±Δa and subtracting the results.Then you can use the uncertainties of a and b to estimate the uncertainty of the integral by adding both contributions in quadrature.In summary, the conversation discusses the calculation of an integral that depends on two parameters, a and b, and how to deal with their uncertainties. The integral is computed numerically and cannot be solved analytically. The results of the integral for different values of a and b are obtained, and it is shown that one combination of values gives the minimum value while another gives the maximum. The conversation also mentions taking derivatives or integrals numerically and provides
  • #1
2,168
192
I have an integral that depends on two parameters ##a\pm\delta a## and ##b\pm \delta b##. I am doing this integral numerically and no python function can calculate the integral with uncertainties.

So I have calculated the integral for each min, max values of a and b.
As a result I have obtained 4 values, such that;

$$(a + \delta a, b + \delta b) = 13827.450210 \pm 0.000015~~(1)$$
$$(a + \delta a, b - \delta b) = 13827.354688 \pm 0.000015~~(2)$$
$$(a - \delta a, b + \delta b) = 13912.521548 \pm 0.000010~~(3)$$
$$(a - \delta a, b - \delta b) = 13912.425467 \pm 0.000010~~(4)$$

So it is clear that ##(2)## gives the min and ##(3)## gives the max. Let us show the result of the integral as ##c \pm \delta c##. So my problem is what is ##c## and ##\delta c## here?

The integral is something like this

$$I(a,b,x) =C\int_0^b \frac{dx}{\sqrt{a(1+x)^3 + \eta(1+x)^4 + (\gamma^2 - a - \eta)}}$$

where ##\eta## and ##\gamma## are constant.

Note: You guys can also generalize it by taking ##\eta \pm \delta \eta## but it is not necessary for now.

I have to take derivatives or integrals numerically. There's no known analytical solution for the integral.

##\eta = 4.177 \times 10^{-5}##, ##a = 0.1430 \pm 0.0011##, ##b = 1089.92 \pm 0.25##, ##\gamma = 0.6736 \pm 0.0054##, ##C = 2997.92458##
 
Last edited:
Mathematics news on Phys.org
  • #2
Generally, if your intergal is [itex]I(a,b) = \int_{x_0}^{x_1} F(a,b,x)\,dx[/itex], then uncertainties in [itex]a[/itex] and [itex]b[/itex] would lead to [tex]I(a,b)
\pm\frac{\partial I}{\partial a}\delta a \pm \frac{\partial I}{\partial b}\delta b[/tex] with the partial derivatives evaluated at [itex]a[/itex] and [itex]b[/itex]. You can evaluate these derivatives by differentiating under the integral:
[tex]
\frac{\partial I}{\partial a} = \int_{x_0}^{x_1} \frac{\partial F}{\partial a}(a, b, x)\,dx[/tex] etc.
 
  • Like
Likes Arman777
  • #3
The integral is something like this

$$I(a,b,x) =\int_0^b \frac{dx}{\sqrt{a(1+x)^3 + \eta(1+x)^4 + (\gamma^2 - a - \eta)}}$$

where ##\eta## and ##\gamma## are constant.
 
  • #4
Assuming a and b are uncorrelated: Calculate the integral at (a,b+delta_b), (a,b-delta_b) and analogous for delta_a. Then use the deviations as approximation for ##\frac{\partial I}{\partial b}\delta b## and add both uncertainties in quadrature.
 
  • #5
mfb said:
Assuming a and b are uncorrelated: Calculate the integral at (a,b+delta_b), (a,b-delta_b) and analogous for delta_a. Then use the deviations as approximation for ##\frac{\partial I}{\partial b}\delta b## and add both uncertainties in quadrature.
I did not quite understand it..Can you maybe put it in a more mathematical way
 
  • #6
Code:
  from numpy import sqrt
    from scipy import integrate
    import uncertainties as u
    from uncertainties.umath import *

    #Important Parameters
    C = 2997.92458  # speed of light in [km/s]
    eta = 4.177 * 10**(-5)
    a = u.ufloat(0.1430, 0.0011)
    b = u.ufloat(1089.92, 0.25)
    gama = u.ufloat(0.6736, 0.0054)

    @u.wrap
    def D_zrec_finder(gama, a, b):
        def D_zrec(z):
            return C / sqrt(a * (1+z)**3 + eta * (1+z)**4 + (gama**2 - a - eta))
        result, error = integrate.quad(D_zrec, 0, b)
        return result    print((D_zrec_finder(gama, a, b)).n)
    print((D_zrec_finder(gama, a, b)).s)

This works
 
  • #7
Arman777 said:
I did not quite understand it..Can you maybe put it in a more mathematical way
$$\frac{\partial I}{\partial b}\delta b \approx \frac 1 2 (I(a,b+\delta b)-I(a,b-\delta b))$$
$$\frac{\partial I}{\partial a}\delta a \approx \frac 1 2 (I(a+\delta a,b)-I(a-\delta a,b))$$

As b is your integration border you can simplify this one: ##\frac{\partial I}{\partial b}## is simply the function value at x=b.
 

Suggested for: Error propagation of a variable for an integral

Replies
3
Views
1K
Replies
5
Views
929
Replies
3
Views
640
Replies
3
Views
1K
Replies
31
Views
1K
Replies
1
Views
925
Replies
1
Views
531
Replies
2
Views
2K
Back
Top