# Calculating Integral in Mathematica

1. Jul 4, 2008

### jimmy1

I have a function f(x) which is defined as

$$f(x) = \int_{x}^{c} \int_{x}^{c} f(x_1,x_2) dx_1 dx_2$$

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

$$\int_{c_1}^{c} f(x) dx$$

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. Jul 4, 2008

### CompuChip

NIntegrate[ f[x], {x, c1, c} ]
where c1 and c are numerical values or constants (like Pi, 2*E, 33.401 etc).

3. Jul 4, 2008

### jimmy1

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?

4. Jul 4, 2008

### CompuChip

Can you post some code, in particular be a little more specific about f(x1, x2) ?

5. Jul 4, 2008

### jimmy1

Basically, f(x1,x2) is a http://en.wikipedia.org/wiki/Multivariate_normal_distribution" [Broken]. 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)

Last edited by a moderator: May 3, 2017
6. Jul 4, 2008

### CompuChip

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.

E.g.
Code (Text):

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

0.365427

7. Jul 4, 2008

### Crosson

Of course, make sure you load the package with the MultinormalDistribution:
Code (Text):

Needs["MultivariateStatistics`"]
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):
Table[f[x,20],{x,1,10,0.1}]

Last edited by a moderator: May 3, 2017
8. Jul 4, 2008

### jimmy1

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!