Trying to do bisection, new to MATLAB

My code is:
function f = bisection2(g,a,b)
g= @x 3*x - e^x
while 1
p =(a+b)/2;
if p-a< 10^-5, break;end
if g(a)*g(p)>0
a = p;
else
b = p;
end
end %while 1
I have tried defining g in a separate .m file, but I keep getting an error in that line. 3x-e^x is the function I am trying to apply bisection to. I am using R2018b.

Answers (1)

As your equation negative value at both ends. So bisection can not be possible for your equation. I am giving this example by taking different function.
g= @(x) 2*x + sin(x)
bisection(g,-5,10)
function p = bisection(f,a,b)
f(a)
f(b)
if f(a)*f(b)>0
disp('The function has positive value at the end points of interval.');
disp('The root can''t be found using bisection method, use some other method.');
else
p = (a + b)/2;
err = abs(f(p));
while err > 1e-7
if f(a)*f(p)<0
b = p;
else
a = p;
end
p = (a + b)/2;
err = abs(f(p));
end
end
end
References:

1 Comment

James Cortez
James Cortez on 6 Oct 2018
Edited: James Cortez on 6 Oct 2018
Figured out what I was doing wrong. I was trying to initiate g inside a .m file instead of putting
"g= @(x) 3*x - exp(x)" into the command window. Hopefully this will help someone else that is just starting out.

Sign in to comment.

Categories

Products

Release

R2018a

Asked:

on 5 Oct 2018

Edited:

on 6 Oct 2018

Community Treasure Hunt

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

Start Hunting!