# Problem in triplequad in matlab

1. Nov 16, 2012

### quin

Hi friends

I wanna get 3variable integral from a function which is in terms of x,y,z,m,a
but I know that a=0.01 and m=3
and want to integrate over x ,y,z
Code (Text):

>> triplequad((4 .*((-2.* a + m).^2 .*(4 .*a + m) +4 .*a.^2 .*(2.*(2.*a - m).* cos(z) + cos(y) .*(4.* a - 2.* m + 4 .*a.* cos(z) - m .*cos(z)) + cos(x) .*(4.* a - 2.* m + 4 .*a.* cos(z) - m .*cos(z) +  cos(y) .*(4 .*a - m + 4 .*a.* cos(z))))))./(m.^4 + 64 .*a.^3 .*m .*(1 + cos(x)) .*(1 + cos(y)) .*(1 + cos(z)) - 8 .*a.^2 .*m.^2 .*(3 + 2 .*cos(z) + cos(y) .*(2 + cos(z)) + cos(x) .*(2 + cos(y) + cos(z))) + 16 .*a.^4 .*(-3 + cos(x).^2 .*(cos(y) - cos(z)).^2 - 4 .*cos(z) + cos(y) .*(-4 + cos(z) .*(-6 + cos(y) .*cos(z))) - 2 .*cos(x) .*(2 + 3 .*cos(z) +  cos(y) .*(3 + cos(z).* (6 + cos(y) + cos(z)))))),-pi,pi,-pi,pi,-pi,pi)

but when I run it matlab tells:
??? Error using ==> fcnchk at 103
If FUN is a MATLAB object, it must have an feval method.

Error in ==> triplequad at 45
intfcn = fcnchk(intfcn);

So what should I do?

and also I used .* and ./ and .^ because I think x, y, z are matrix

however if I used * and / and ^ ,still Matlab give the same errors

2. Nov 19, 2012

### uart

You really should consider using an "m" file instead of trying to type a function that long in one line. Anyway, it should work if you make it a function of just x,y,z (that's all triplequad expects).
For example:
Code (Text):

a=0.01
m=3
myfun = @(x,y,z) (4 .*((-2.* a + m).^2 .*(4 .*a + m) +4 .*a.^2 .*(2.*(2.*a - m).* cos(z) + cos(y) .*(4.* a - 2.* m + 4 .*a.* cos(z) - m .*cos(z)) + cos(x) .*(4.* a - 2.* m + 4 .*a.* cos(z) - m .*cos(z) +  cos(y) .*(4 .*a - m + 4 .*a.* cos(z))))))./(m.^4 + 64 .*a.^3 .*m .*(1 + cos(x)) .*(1 + cos(y)) .*(1 + cos(z)) - 8 .*a.^2 .*m.^2 .*(3 + 2 .*cos(z) + cos(y) .*(2 + cos(z)) + cos(x) .*(2 + cos(y) + cos(z))) + 16 .*a.^4 .*(-3 + cos(x).^2 .*(cos(y) - cos(z)).^2 - 4 .*cos(z) + cos(y) .*(-4 + cos(z) .*(-6 + cos(y) .*cos(z))) - 2 .*cos(x) .*(2 + 3 .*cos(z) +  cos(y) .*(3 + cos(z).* (6 + cos(y) + cos(z))))))

3. May 31, 2013

### quin

I wanna get 3variable integral from a function which is in terms of x,y,z,L,T
but I"T" and "L" are just symbols
and want to integrate over x ,y,z
How can I take triple integration from a symbolic function??
thanks alot

4. May 31, 2013

### kreil

What version of MATLAB are you using? Do you have access to Symbolic Math Toolbox?

You can solve this numerically using INTEGRAL3 and either loops or sub-functions in the m-file.

Symbolically, the integration function is int(). This attempts to find the antiderivative so that diff(F) = f, int(f) = F.

For ex,

Code (Text):
syms x y n
f = x^n + y^n;
int(f, y)
ans =
x^n*y + (y*y^n)/(n + 1)

Last edited: May 31, 2013
5. Jun 1, 2013

### quin

thanks but my function is very complex and in this way matlab cannot do anything.In fact it said that the integral cannot be calculated
How can I do the integral numerically but with 2 symbols?
I mean that integrate over x ,y,z with a numerical method but with 2 symbols of t and m .