MATLAB: How to use a piecewise function with fsolve

fsolvepiecewise function

I want to use piecewise objective function with fsolve. If i define the objective function using an if statement I get 'Conversion to logical from sym is not possible.'. When I use piecewise built-in function it returns an error when I try convert the objective function to a matlabFunction.
Actually, the objective function consists of 3 functions, for a region i need fsolve to consider only two of the functions. I was thinking of doing this by defining one of the functions as NaN in a certain region. Is this possible?

Best Answer

It is not possible to use piecewise with fsolve. It is possible to use piecewise with vpasolve.
Also I discovered earlier today that if you have a symbolic expression that contains piecewise, that if you use matlabFunction() with the 'file' option then the code written will use 'if' to decide the case and do the appropriate computation. Unfortunately the generated code is not vectorized (which would require logical indexing rather than if), but provided you used the matlabFunction 'vars' option to put all of variables into a single argument, you would be able to use it with fsolve.