docs: def fit(self, x, y, dcoef='none'):
          '''
          performs the fit
  
          x, y : list
              Matching data arrays that define a numerical function y(x),
              this is the data to be fitted.
          dcoef : list or string
              You can provide a different guess for the coefficients, or
              provide the string 'none' to use the inital guess.  The
              default is 'none'.
  
          Returns
          -------
          ierr
              Values between 1 and 4 signal success.
  
          Notes
          -----
          self.fcoef, contains the fitted coefficients.
  
          '''
          self.x = x
          self.y = y
  
          if dcoef is not 'none':
              coef = dcoef
          else:
              coef = self.coef
  
          fcoef=optimize.leastsq(self.residual,coef,args=(y,self.func,x))
          self.fcoef = fcoef[0].tolist()
          return fcoef[1]