This project aims to build a generalized program for calculating the time evolution of a quantum state. This will involve parsing input to generate a , diagonalizing the hamiltonian matrix to find the eigenvalues and eigenvectors, then repeatedly applying the time evolution operator to an initial state. After running the time evolution, analysis will be performed to gind if there are any envelopes that can contain the oscilating state, and also finding the dominant frequency.
This project will likely be written in C or C++ and may make use of pre-existing libraries for diagonalization and fourier transforms.
The first thing that needs to be done is to have a way to represent the quantum state that we are time evolving. To start out with, we can represent a simple system with particles of spin 1/2 to be a
The Hamiltonian is the descriptor of the energy of a quantum state. The Hamiltonian is an operator and can be represented by a $S$x$S$ matrix where
The Hamiltonian needs to be diagonalized in order to construct the time evolution operator, but we also need to retrieve the eigenvectors corresponding to each eigenvalue as they are the corresponding state or superposition of states corresponding to the energy in the hamiltonian. Diagonalization mainly involves as per usual solving the characteristic polynomial for the eigenvalues and then solving for the eigenvectors. I had intended to find a diagonalization library or program for use but did not manage to in time.
From here we can simply repeatedly apply the time evolution operator to the state vector for the diagonalized hamiltonian starting from some initial position.
I had intended to after writing code to run the time evolution, write code to fourier transform and then analyse the output for some simple test cases. I didn't manage to reach that point, and have only untested pseudocode written out so far. The intention was to be able to find the characteristic frequency and any upper and lower bounds on the oscilation of the quantum state.