# Matlab bisection method

Printable View

• Apr 17th 2010, 06:37 PM
AUCC
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.
• Apr 17th 2010, 09:19 PM
CaptainBlack
Quote:

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
• Apr 18th 2010, 07:22 AM
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.
• Apr 18th 2010, 10:21 AM
CaptainBlack
Quote:

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