MATLAB: “Too many input arguments” when using integral2

integrationmatlab function

xmin = 0;
xmax = 1;
ymin = 0;
ymax = @(x) x.^3;
fun= @(x)x;
fun2= @(y)y;
xbar = quad2d(fun,xmin,xmax,ymin,ymax);
fprintf('xbar = \n',xbar);
ybar = integral2(fun2,xmin,xmax,ymin,ymax);
fprintf('ybar = \n',ybar);
I'm working on setting up a quick program for help finding the centroids of areas bounded by functions, and I get the above error as soon as the code gets to the "fun" within the first quad2d function. I tried using the "integral2" function instead, and I get the same error.
I tried looking around the help boards here but none of the solutions for "Too many inputs…" seem to be for my specific problem. Is there an error with the way I'm trying to write the function, or can it just not be done symbolically this way?

Best Answer

You have a couple unrelated problems.
1. Your functions need to be functions of x and y, even if you don’t use the other argument;
2. You need numeric format descriptors in your fprintf statements.
This works:
xmin = 0;
xmax = 1;
ymin = 0;
ymax = @(x) x.^3;
fun= @(x,y)x;
fun2= @(x,y)y;
xbar = quad2d(fun,xmin,xmax,ymin,ymax);
fprintf('xbar = %f\n',xbar);
ybar = integral2(fun2,xmin,xmax,ymin,ymax);
fprintf('ybar = %f\n',ybar);