MATLAB Answers

Quotes around the name of the function

14 views (last 30 days)
Antonis V.
Antonis V. on 15 Dec 2012
When do we put quotes around the name of the function and when not ? For example, I used fsolve(myfun,x0) and I got no results , but when I used fsolve('myfun',x0) I got the root I was looking for ...

  0 Comments

Sign in to comment.

Accepted Answer

Matt Fig
Matt Fig on 15 Dec 2012
Edited: Matt Fig on 15 Dec 2012
Typically, you want to pass a handle to a function, not a string.
fsovle(@myfun,x0) % Notice the @ symbol --> a function handle.
The string argument gets evaluated the same way, probably for backward compatibility. The modern way is to use function handles.

  3 Comments

Antonis V.
Antonis V. on 15 Dec 2012
Thanks !! But I still don't get why fsolve(f,0) worked with f(x) = exp(x) - cos(x) - 1 and didn't work with f(x) = exp(x) - x^2 - 68 where I had to use the quotes or the function handle .
Matt Fig
Matt Fig on 15 Dec 2012
You would have to show exactly what you did in order for me to know why one code failed.
f = @(x) exp(x) - cos(x) - 1; % f is a function handle.
fsolve(f,0) % Seems to work....
f = @(x) exp(x) - x^2 - 68 ; % Another function handle.
fsolve(f,0) % Also works....
Antonis V.
Antonis V. on 15 Dec 2012
Ok i found out why it failed ! I had created and saved this function so I guess I had to use fsolve(@f,0) in first place ! Thanks a lot ! And one last thing :P I am a new Matlab user , and I haven't yet figured out how initial guesses work !For instance, I want to find out the roots of the equation F(X) = exp(x) - x^2 - 68 . What values should I put to x0 ? I 've tried several values close to 0 and I got the same result but I noticed I can't use very big numbers , whereas I can use very small numbers. If I want to find all the roots at F's domain range should I put more than one values at x0 ?

Sign in to comment.

More Answers (0)

Sign in to answer this question.