Finite Difference Methods for Boundary Value Problems