Symplectic Geometric Algorithms for Hamiltonian Systems