Passing functions in MATLAB

Hi I am having some difficulty passing functions on MATLAB and needed some help.
I am trying to implement a bisection algorithm, [l,r,nf] = bisect ( fname, a,b, tol)
Where l and r are the left and right handed end-points of the root-bracketing interval, and fname is another M-file in my directory that contains the actual function being evaluated (also an M-file)
How does one use a function as the input for an argument in MATLAB? Thanks!

Respuestas (1)

dpb
dpb el 3 de Oct. de 2018

0 votos

Look at function handles; there's a section under Data Types in the documentation...

2 comentarios

Shakil Rafi
Shakil Rafi el 4 de Oct. de 2018
Hi so suppose I want to use @ to call the function, I am unclear what my code would look like then.
Would it be something like
[l,r,nf] = bisect (@fname, a,b,tol)
if @fname(a) * @fname(b) > 0
disp (' Function does not bracket a root');
...
or
[l,r,nf] = bisect (fname, a,b,tol)
if @fname(a) * @fname(b) > 0
disp (' Function does not bracket a root');
...
or
[l,r,nf] = bisect (@fname, a,b,tol)
if fname(a) * fname(b) > 0
disp (' Function does not bracket a root');
...
because all three of these seem to not work.
And when i want to test them out in the command window, how would i test out the function? would it be bisect(fofx,1,2,0.0001) or bisect (@fofx,1,2,0.001)
Thanks
function [l,r,nf] = bisect ( fname, a, b, tol)
if fname(a) * fname(b) > 0
[...]
To be called with something like
[left, right, count] = bisect( @(x) sin(x).^2 - tan(x), -pi/2, pi/2, 0.01 )

La pregunta está cerrada.

Productos

Etiquetas

Preguntada:

el 3 de Oct. de 2018

Cerrada:

el 20 de Ag. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by