MATLAB Answers


Quotes around the name of the function

Antonis V. さんによって質問されました 2012 年 12 月 15 日
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 件のコメント

サインイン to comment.

1 件の回答

Matt Fig
回答者: Matt Fig
2012 年 12 月 15 日
編集済み: Matt Fig
2012 年 12 月 15 日

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 件のコメント

Antonis V. 2012 年 12 月 15 日
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
2012 年 12 月 15 日
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. 2012 年 12 月 15 日
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 ?

サインイン to comment.

Translated by