Calling a function within another function
7 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Steven Lord
2018-2-7
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)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Environment and Settings 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!