class_docstr: Forrester function. 
  
  :param sd: standard deviation, to generate noisy evaluations of the function.
code: def f(self, X):
      X = X.reshape((len(X), 1))
      n = X.shape[0]
      fval = ((6 * X - 2) ** 2) * np.sin(12 * X - 4)
      if self.sd == 0:
          noise = np.zeros(n).reshape(n, 1)
      else:
          noise = np.random.normal(0, self.sd, n).reshape(n, 1)
      return fval.reshape(n, 1) + noise
  
imports: import matplotlib.pyplot
  import numpy
label_desc: Use image node_id 2 for calling the forrester obj's underlying member method code with example usage: obj.f(X) and returns: unknown