The most time consuming part of BVP4C is the function colloc_Jac, especially when the number of equations is large. In bvp4c2 the inefficient sparse matrix operation in colloc_Jac is optimized according to the method intruduced in Loren's blog (http://blogs.mathworks.com/loren/2007/03/01/creating-sparse-finite-element-matrices-in-matlab/). When called without unknown parameters and FJacobian is not used, bvp4c2 is more than 10x faster than BVP4C for large BVP systems.
The mex file SPARSE2.MEXW32 is compiled from SuiteSparse(http://www.cise.ufl.edu/research/sparse/SuiteSparse/). It is about 2x faster than SPARSE. If you encounters problem with it, just comment it out in bvp4c2 and use the MATLAB function sparse.
Still ~2 times faster than the MATLAB original function for large problem.
Mathworks owe me a Thanks.
You do not need this function after MATLAB R2014
MATLAB R2012 and higher versions do not need this code, because the bvp4c.m distributed with the software has already implemented such optimizaion.
Unzip to MATLABROOT\toolbox\matlab\funfun
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.