Code covered by the BSD License  

Highlights from
Bisection Method Root Finding

4.9 | 8 ratings Rate this file 59 Downloads (last 30 days) File Size: 7.09 KB File ID: #28150 Version: 1.14
image thumbnail

Bisection Method Root Finding


Sky Sartorius (view profile)


08 Jul 2010 (Updated )

Very simple to use and robust method that takes array inputs, so it even has advantages over fzero.

| Watch this File

File Information

BISECTION is a fast, simple-to-use, and robust root-finding method that handles n-dimensional arrays.
Additional optional inputs and outputs for more control and capabilities that don't exist in other implementations of the bisection method or other root finding functions like fzero.
This function really shines in cases where fzero would have to be implemented in a loop to solve multiple cases, in which case this will be much faster.

It can find zero or non-zero roots.

This code can be a bit cryptic. This is for the sake of speed and increased capability. See the many acknowledged other submissions for simpler, easier-to-follow implementations to understand the basics of the bisection method.


Bisection, Bisection's Method, Bisection, Numerical Methods: Bisection Method, Bisection Method, Bisection.M, Bisection Method Animation, and Bisection Method inspired this file.

This file inspired Fuel Fraction Sizing.

MATLAB release MATLAB 8.5 (R2015a)
MATLAB Search Path
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (11)
20 Aug 2015 Herbert  
06 May 2015 Ole

Ole (view profile)

If there are several root in the interval does it find the first closes to LB only ?

Comment only
27 Mar 2015 Chi-Fu

Chi-Fu (view profile)

great program, saved me a lot of time, thank you!

16 Dec 2014 SiddharthK

The vectorization feature is really really helpful. I was vexed with having to put fzero into for loops.

25 Aug 2014 Philip Ohnewein

Works brilliantly in my case. Replaces a loop with ~1 million iterations, brings down execution time by several orders of magnitude.
Plus it is well-written and well-documented and a numerically robust method.

03 May 2014 Fabian

Fabian (view profile)

Excellent file. Much faster than using fzero in a long loop!

10 Mar 2014 Siegmar W

Thanks! Had a similar file of my own, but yours is better!

25 Jul 2013 Umberto Picchini

I am so glad I found this submission and I'm very grateful to the author for providing an excellent, well-documented code. I had my custom Newton-Raphson algorithm (with provided analytical gradient) invoked thousands of times inside a for loop. I substituted the loop with a single invocation to bisection.m and achieved a 15x acceleration! Awesome.

01 Dec 2012 Sky Sartorius

Sky Sartorius (view profile)

I just uploaded an entirely new function with almost all new code and documentation and a lot of added features. With so much new code, please let me know if you find a bug.

This is about as far as I'll take this function. I would love to see MathWorks or someone in the community develop a vectorized implementation of Brent's method, i.e. make FZERO vectorized to be able handle array problems. A vectorized FZERO (with a TolFun feature) would be superior to this in every way.

Comment only
29 Nov 2012 Yoshiaki

There seems to be a typo on line 80:
jnk = f(UB+LB)/2; % test if f returns multiple outputs

It should be

Comment only
04 Nov 2012 Matthew

Excellent documentation with example. Simple function that works as advertised.

24 Jul 2010 1.1


24 Jul 2010 1.2

Vectorized; fixed bug for decreasing functions; some check

02 Nov 2012 1.5

better example, fixed some help typos, tested in 2012b

12 Nov 2012 1.6

made it possible to handle a function that returns array results for scalar input; changed help a bit and added an example for new awesome feature

19 Nov 2012 1.7

fixed a bug that was very rarely throwing out some valid results

27 Nov 2012 1.8

fixed bug that sometimes caused premature convergence; redid funcntion halding to get rid of one of the input checks and simplify the code and make it more understandable; changed some of the help documentation

03 Dec 2012 1.9

Practically all new code and documentation with added features. A good deal of testing done, but with so much new code, please let me know if you find errors.

26 Dec 2012 1.11

New tagline

23 Aug 2013 1.12

minor speed and formatting improvements

20 Aug 2015 1.13

Small changes to help.

16 Oct 2015 1.14


Contact us