code: def multi_reciprocal_extra(xs, ys, noise=False):
      
      ns = np.linspace(0.5, 6.0, num=56)
      best = ['', np.inf]
      fit_results = {}
      weights = get_weights(xs, ys)
      for n in ns:
          popt = extrapolate_reciprocal(xs, ys, n, noise)
          m = measure(reciprocal, xs, ys, popt, weights)
          pcov = []
          fit_results.update({n: {'measure': m, 'popt': popt, 'pcov': pcov}})
      for n in fit_results:
          if fit_results[n]['measure'] <= best[1]:
              best = reciprocal, fit_results[n]['measure'], n
      return fit_results[best[2]]['popt'], fit_results[best[2]]['pcov'], best
docs: Calculates for a series of powers ns the parameters for which the last two points are at the curve.
      With these parameters measure how well the other data points fit.
      return the best fit.