4 down vote curve-fit is using leastsq for the calculation, so they should always give the same result. The miniscule difference you see there is probably a result of rounding error somewhere. calling leastsq directly should eliminate that. From the docs of curve_fit: The algorithm uses the Levenbe