Functional and variational methods