  The phase estimation algorithm is a powerful quantum algorithm with
applications in cryptography, number theory, and simulation of quantum systems.
We use this algorithm to simulate the time evolution of a system of two
spin-1/2 particles under a Heisenberg Hamiltonian. The evolution is performed
through both classical simulations of quantum computers and real quantum
computers via IBM's Qiskit platform. We also introduce three optimizations to
the algorithm: circular, iterative, and Bayesian. We apply these optimizations
to our simulations and investigate how the performance improves. We also
discuss the paradigms of iterative and update-based algorithms, which are
attributes of these optimizations that can improve quantum algorithms
generally.
