Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.



Re: derivatives, syms and fsolve
Posted:
Jul 29, 2009 7:48 AM


The problem you see is because fsolve requires standard floatingpoint numbers as inputs, but D is a symbolic object.
To see an example of converting a problem from symbolic to float, and then solving with Optimization Toolbox, see http://www.mathworks.com/access/helpdesk/help/toolbox/optim/ug/brn4nh7.html#brv_i_1
FYI, to find the maximum likelihood solution, you don't need to take derivatives. Just minimize lik. I believe that in general this will be more robust, because finding a zero of the gradient might find a stationary or even local minimum point.
Alan Weiss MATLAB mathematical toolbox documentation
Andrea Asoni wrote: > Hi, > I would like to define a function, take derivatives of this function and then solve the system of equations formed by putting these derivatives equal to zero. A simplified version of my problem is: >  > age =[12 13 14 15]; age=age'; > sex =[1 1 0 0]; sex=sex'; > > syms a b; > lik= (a^2)*b.*age + (1/b).*sex > > da=diff(lik,a); db=diff(lik,b) > D=[da; db] > > x=[a b] > fun=@(x) D > > init=[1 2] > fsolve(fun,init) >  > > when I run this it gives me the error: "??? Conversion to double from sym is not possible." > > I tried to add after "D=[da;db]" the line "D=double(D)" but it gives me another error "Error using ==> eval > Undefined function or variable 'a'." > > I tried the function "double" in different places (on x, on D, on fun) but it always gives me an error message. > > Anyone knows how to deal with this problem? How do I take derivatives and then solve the system? > > Any help is very appreciated, > Andrea



