I saw the 2 forms of writing:
  • fzero(f,x0)
  • fsolve(@(x)f,xo)
in both cases we use symbolic function (f) before the above orders.
I am trying to understand why in the first case we could write only "f", while in the second one we had to write the whole expression "@(x)f"?

 Akzeptierte Antwort

Star Strider
Star Strider am 21 Sep. 2018

0 Stimmen

Without knowing the relevant context, it is difficult to say.
The first syntax:
fzero(f,x0)
implies that ‘f’ is a function of one variable, and already exists in the workspace as a function handle.
The second syntax:
fsolve(@(x)f,x0)
actually throws this error when I run it (in R2018b):
Error using fsolve (line 281)
FSOLVE requires all values returned by functions to be of data type double.
The correct way to use that syntax is to express ‘f’ as a function to be evaluated:
fsolve(@(x)f(x),x0)
and this works correctly.

Weitere Antworten (0)

Kategorien

Mehr zu Symbolic Math Toolbox finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2018a

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by