docs: def fit(self, x0=None, distribution='lognormal', n=None, **kwargs):
          '''Incomplete method to fit experimental values to a curve. It is very
          hard to get good initial guesses, which are really required for this.
          Differential evolution is promissing. This API is likely to change in
          the future.
          '''
          dist = {'lognormal': PSDLognormal, 
                  'GGS': PSDGatesGaudinSchuhman, 
                  'RR': PSDRosinRammler}[distribution]
          
          if distribution == 'lognormal':
              if x0 is None:
                  d_characteristic = sum([fi*di for fi, di in zip(self.fractions, self.Dis)])
                  s = 0.4
                  x0 = [d_characteristic, s]
          elif distribution == 'GGS':
              if x0 is None:
                  d_characteristic = sum([fi*di for fi, di in zip(self.fractions, self.Dis)])
                  m = 1.5
                  x0 = [d_characteristic, m]
          elif distribution == 'RR':
              if x0 is None:
                  x0 = [5E-6, 1e-2]
          from scipy.optimize import minimize
          return minimize(self._fit_obj_function, x0, args=(dist, n), **kwargs)