variational method