MATLAB: A function of function problem

call functionfunctionfunction of function

I have an expression f in terms of y (independent variable), a and b(parameters). I would like to take the derivative of f with respect to y, and then set the first order condition df/dy=0 to solve for y. The codes are
function g=derive(y,a,b)
g=diff(fun,y);
end;
function [f,c1,c2]=fun(y,a,b)
f=a*log(c1)+b*log(c2);
c1=y*a;
c2=y*b;
end
y0=1;
y_max=fsolve(g,y0);
I know there are problems in the code. The logic is clear, and I hope someone can tell me how to use function of function (local function or nested function) to solve this problem.

Best Answer

Your code will fail at the diff() if y is not symbolic, unless y happens to be 1.
If y is symbolic, then you need to use solve() with g instead of using fsolve() .