## How to find double integral in MATLAB

### may (view profile)

on 16 Sep 2013

Given mean1, mean2, sigma1,sigma2, and u, I want to find the following integral:

for example: mean1=0, mean2=0, sigma1=0.2, sigma2=1, and u=0.4

```F = @(x,y)normpdf(x, mean1, sigma1).*normpdf(y, mean2, sigma2).*dirac(x*y-u);
```

but I get the following error

|Error using integralCalc/finalInputChecks (line 511) Input function must return 'double' or 'single' values. Found 'function_handle'.|

I would appreciate if you could help me to fix my code. Thank you.

may

### may (view profile)

on 17 Sep 2013

Thanks for your help. I think another way is to approximate the distribution of X*Y by producing some random numbers from the distribution of X and Y then multiply them all together and find its histogram.

Walter Roberson

### Walter Roberson (view profile)

on 17 Sep 2013

If you define a true function you can use conditional logic for it.

```function r = F(x)
r = zeros(size(x));
r(x==0) = whatever it should be;
nzx = x(x ~=0);
r(x~=0) = normpdf(nxz, mean1, sigma1).*normpdf(u./nzx, mean2, sigma2).*(1./abs(nzx);
end
```
may

on 17 Sep 2013

### Sean de Wolski (view profile)

on 16 Sep 2013

Running your example I get an error saying the matrix dimensions must agree. Changing the x*y to x.*y inside of dirac allows it to run and returns an answer of zero

```F = @(x,y)normpdf(x, mean1, sigma1).*normpdf(y, mean2, sigma2).*dirac(x.*y-u);
```

may

### may (view profile)

on 16 Sep 2013

thank you, but now I get zero for all the inputs i am trying.

### Walter Roberson (view profile)

on 16 Sep 2013

Which dirac are you using? It appears you might be using dirac from the Symbolic toolbox, You should experiment with

```class(dirac(5))   %for example
```

You might need something like double(dirac(x*y-u)) in your code instead of a plan dirac() call.

Walter Roberson

### Walter Roberson (view profile)

on 16 Sep 2013

You should be using symbolic integration instead of numeric integration. symbolic integration is int() in the Symbolic Toolbox