Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Calculating Integral in Mathematica

  1. Jul 4, 2008 #1
    I have a function f(x) which is defined as

    [tex]f(x) = \int_{x}^{c} \int_{x}^{c} f(x_1,x_2) dx_1 dx_2 [/tex]

    where c is a known constant and f(x1,x2) is a multivariate Gaussian. Unfortunetaly there is no closed form solution for f(x).
    My problem is I want to numerically calculate

    [tex] \int_{c_1}^{c} f(x) dx [/tex]

    where again c_1, and c are known constants.
    How do I numerically evaluate such an integral in Mathematica? I get errors every time saying "x is not a valid limit of integration".
    Any ideas, how I would input the above into Mathematica to get a numerical solution?
  2. jcsd
  3. Jul 4, 2008 #2


    User Avatar
    Science Advisor
    Homework Helper

    NIntegrate[ f[x], {x, c1, c} ]
    where c1 and c are numerical values or constants (like Pi, 2*E, 33.401 etc).
  4. Jul 4, 2008 #3
    Unfortunately f(x) has no closed form solution (so the expression for f(x) still has the symbols x1, x2) and thus evaluating "NIntegrate[ f[x], {x, c1, c} ]" just gives the error the "Integrand ..... is not numerical at...".

    I've also tried "NIntegrate[ f[x], {x1, x, c}, {x2, x, c}, {x, c1, c} ]", but this gives the error "x1 = x is not a valid limit of integration. "

    I'm sure there's some way to do it, but just can't figure it out?
  5. Jul 4, 2008 #4


    User Avatar
    Science Advisor
    Homework Helper

    Can you post some code, in particular be a little more specific about f(x1, x2) ?
  6. Jul 4, 2008 #5
    Basically, f(x1,x2) is a multivariate Normal pdf. An example in Mathematica code would be:

    f(x) = "Integrate[PDF[MultinormalDistribution[{5,6}, {{1,1}, {1,2}}], {x1,x2}], {x1,x,c},{x2,x,c}]"

    For any particular value of x and c (c is a known constant) I can numerically evaluate the above expression, however, I want to evaluate the above expression for all possible values of x, where x is a countinous number, and hence I need to integrate the above expression for all possible values of x (say, x ranges from 0-10 in the above example)
  7. Jul 4, 2008 #6


    User Avatar
    Science Advisor
    Homework Helper

    You are right that
    Code (Text):
    NIntegrate[ f[x], {x1, x, c}, {x2, x, c}, {x, c1, c} ]
    doesn't work, but I think that
    Code (Text):
    NIntegrate[ f[x], {x, c1, c}, {x1, x, c}, {x2, x, c} ]
    does. At least it gives an answer... apparently the integration is in a different order than you'd expect.

    Code (Text):

    NIntegrate[PDF[MultinormalDistribution[{5, 6}, {{1, 1}, {1, 2}}], {x1, x2}], {x, 5, 10}, {x1, x, 10}, {x2, x, 10}]

  8. Jul 4, 2008 #7
    Of course, make sure you load the package with the MultinormalDistribution:
    Code (Text):

    Then turn your code into a function:

    Code (Text):
    f[x_, c_] :=  NIntegrate[PDF[MultinormalDistribution[{5, 6}, {{1, 1}, {1, 2}}], {x1,
        x2}], {x1, x, c}, {x2, x, c}]
    Now you say that you want to evaluate this repeatedly for different values of x, you could use a table:

    Code (Text):
  9. Jul 4, 2008 #8
    Cool, thanks guys! I've used your suggestions and I think I've got it now, just need to test the result a bit more. Anyway, cheers for the help!
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Similar Discussions: Calculating Integral in Mathematica