function [root,fx,ea,iter]=bisect( @(x)x^7+3*x-1;0;1;0;3 )% bisect: root location zeroes
% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):
% uses bisection method to find the root of func
% input:
% func = name of function
% xl, xu = lower and upper guesses
% es = desired relative error (default = 0.0001%)
% maxit = maximum allowable iterations (default = 50)
% p1,p2,... = additional parameters used by func
% output:
% root = real root
% fx = function value at root
% ea = approximate relative error (%)
% iter = number of iterations
if nargin<3,error('at least 3 input arguments required'),endtest = func(xl)*func(xu);if test>0,error('no sign change'),endif nargin<4|isempty(es), es=0.0000001;endif nargin<5|isempty(maxit), maxit=3;enditer = 0; xr = xl; ea = 100;while (1) xrold = xr; xr = (xl + xu)/2; iter = iter + 1; if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end test = func(xl)*func(xr); if test < 0 xu = xr; elseif test > 0 xl = xr; else ea = 0; end if ea <= es | iter >= maxit,break,endendroot = xr; fx = func(xr);Then it says "Error: ... Line: 1 Column: 36Invalid use of operator." while underlining the '@' and last parantheses ')' for bisect in red. I'm not sure why
MATLAB: How to fix the ‘Invalid use of operator’ Error in the anonymous function bisect code
invalid
Best Answer