fsolve() relies upon the initial point you give it. It offers three different algorithms with different good points and bad points.
For example Levenberg-Marquardt can be good dealing in changes of direction and for getting around minor "hills", but it can still get caught in steep enough valleys (every direction looks very bad) or even in broad enough valleys (climbing out would require exceeding the stepsize maximum).
Sometimes vpasolve() from the symbolic toolbox can reason better, but certainly not always.
In some cases a useful approach can be using solve() to get a solution in terms of rootof() operators, and then to chase solutions to the rootof() such as with vpasolve() or fsolve() .
Generally speaking, finding the roots of nonlinear equations involving trig functions can be difficult.
Best Answer