Calling a function within another function
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Brandon Macleod
il 7 Feb 2018
Commentato: Brandon Macleod
il 7 Feb 2018
So I'm writing a bisection method. The beginning of the method looks like this.
function root = Bisect ( xl , xu , eps , imax, f )
i = 1;
fl = f(xl);
So I pass in xl (note that l is the letter L and not a one) when I call this function and it then calls the function f. Here's my function f:
function y = f(x)
y = (pi*x^2)*((3*4.1 - x)/3);
end
The problem is that I called the bisection function with the input "Bisect(0, 4.1, 0.0001, 20, f)" and I keep getting this error:
>> Bisect(0, 4.1, 0.0001, 20, f)
Not enough input arguments.
Error in f (line 3)
y = (pi*x^2)*((3*4.1 - x)/3);
So what am I doing wrong?
0 Commenti
Risposta accettata
Steven Lord
il 7 Feb 2018
That tries to call the function f with 0 inputs and pass the value returned by that call into the Bisect function as the fifth input. You instead want to pass a function handle to f into the Bisect function as the fifth input, so that later on Bisect can call f using that function handle.
Bisect(0, 4.1, 0.0001, 20, @f)
You'd see the same behavior if you did something like:
fzero(sin, 1) % will error because sin needs 1 input
instead of:
fzero(@sin, 1)
or:
fzero(@(x) sin(x), 1)
Vedere anche
Categorie
Scopri di più su Environment and Settings in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!