code: def objective_fun(theta, hamiltonian=None,
                    quantum_resource=QVMConnection(sync_endpoint='http://localhost:5000')):
      
      if hamiltonian is None:
          # Hamiltonian is Identity
          return 1.0
  
      if isinstance(hamiltonian, PauliSum):
          result = estimate_locally_commuting_operator(ucc_circuit(theta), hamiltonian,
                                                       1.0E-6, quantum_resource=quantum_resource)
          result = result[0][0].real  # first output is expected value, second is variance, third is shots
      elif isinstance(hamiltonian, np.ndarray) and isinstance(quantum_resource, QVMConnection):
          wf = quantum_resource.wavefunction(ucc_circuit(theta))
          wf = wf.amplitudes.reshape((-1, 1))
          result = np.conj(wf).T.dot(hamiltonian).dot(wf)[0, 0].real
          print(result)
      else:
          raise TypeError("type of hamiltonian or qvm is unrecognized")
  
      return result
docs: Evaluate the Hamiltonian bny operator averaging
  
      :param theta:
      :param hamiltonian:
      :return: