# Math Help - Matlab bisection method

1. ## Matlab bisection method

Please help me finish this problem

Code:
function bisect(n)

syms x;

f =  4 * x + 2;

n = int32(n);

err = 1;
b=5;
a=-5;

while(b-a > err )
m = (a+b)/2 ;
sa=  sign(feval(f,a)) ;
sb = sign(feval(f,b));
sm= sign(feval(f,m));

if( sm == sa ) a=m;
else b=m;

end

end
The error message that i get is

??? Error using ==> feval
Argument must contain a string or function_handle.

Error in ==> bisect at 17
sa= sign(feval(f,a)) ;

Help me please.

2. Originally Posted by AUCC
Please help me finish this problem

Code:
function bisect(n)

syms x;

f =  4 * x + 2;

n = int32(n);

err = 1;
b=5;
a=-5;

while(b-a > err )
m = (a+b)/2 ;
sa=  sign(feval(f,a)) ;
sb = sign(feval(f,b));
sm= sign(feval(f,m));

if( sm == sa ) a=m;
else b=m;

end

end
The error message that i get is

??? Error using ==> feval
Argument must contain a string or function_handle.

Error in ==> bisect at 17
sa= sign(feval(f,a)) ;

Help me please.
f has to be a function of some kind, try:

f=@(x) 4*x+2; % anonymous function definintion

or:

f=inline('4*x+2'); %inline function definition

for the function definition.

CB

3. Now i want to calculate the root's of a equation of degree 2

Code:
f=inline('x^2 + 2*x + 1');
The root's are given by the value of m.

So i get m=5 as the answer.

Please help me.

4. Originally Posted by AUCC
Now i want to calculate the root's of a equation of degree 2

Code:
f=inline('x^2 + 2*x + 1');
The root's are given by the value of m.

So i get m=5 as the answer.

Please help me.
Without checking you code I can tell you that the bisection method will not work for your function. Bisection finds a point at which the function changes sign, but yours has a single root of multiplicity 2 (it does not change sign at such a root).

In addition your two initial values do not correspond to different signs for the function value.

CB