code: def _back_off(self):
          
          q = self._step_size
          r = self._r_[-1]
          Z_ = self._Z_
          if self._dynamic:
              p_0   = la.norm(Z_[0]['f'])
              dp_0  = p_0*2*la.norm(Z_[0]['J'])
              p_r   = la.norm(Z_[-1]['f'])
              dp_r  = p_0*2*la.norm(Z_[-1]['J'])
              r_new = optimize(r, p_0**2, dp_0, p_r**2, dp_r)
          else :
              r_new = r * q  
          self._r_.append(r_new)
docs: Back off
          Calculate the back off step size
      Inputs : 
          Z_ :
              list of states in current proposal
          r_ : 
              list of back offs in current proposal
          q : 
              step size reduction
          dynamic : 
              set to True if you want to use the dynamic back-off
      Outputs :