QuanGuru (pronounced Kangaroo) is a Python library for numerical modelling of quantum systems. It is still under-development, and it consists of tools for numerical simulations of Quantum systems.
Context
To create a quantum system contains random Hamiltonians with its elements are randomly generated from a normal(Gaussian) distribution (can add another distribution in the future)
Suggested Implementation
Create a randomH function in qg.QuantumToolbox.operators with the input parameters:
dimension: int - dimension of Hilbert space
sparse: bool - if True, return sparse matrix
mean: int - mean of the distribution
SD: int - standard deviation of the distribution
normalise: bool - if True, return normalised matrix
symmetric: bool - if True, return symmetry matrix
seedNum: int - specify the seed for random function
If setting seedNum=None, the function will generate random matrix and we can know the seedNum of the output matrix such that we are able to reproduce this random matrix.
If creating new random operator with the same seedNum, it will return the same matrix.
Create a randSys class in qg.classes.Qsystem which is using randomH operator
Also, we are able to know the seedNum of the randomH operator
Problem
In qg.classes.Qsystem, it requires dimension, operator, and frequency. But we cannot set the values inside the operator function, so we cannot set seedNum in randomH operator.
If we randomly choose seedNum in randomH, we can generate a random matrix every time, but cannot reproduce the previous random matrix because we don't know the seedNum
Benefits from this implementation
Able to generate a quantum system with random Hamiltonian
Able to use _createTerm to add a random Hamiltonian term to any quantum systems that is currently in QuanGuru, i.e. _qg.QubitcreateTerm(operator=qg.randomH,...).
This random Hamiltonian system can be used to test the Trotterization performance for a general system
What feature should we add?
Context To create a quantum system contains random Hamiltonians with its elements are randomly generated from a normal(Gaussian) distribution (can add another distribution in the future)
Suggested Implementation
Create a randomH function in qg.QuantumToolbox.operators with the input parameters: dimension: int - dimension of Hilbert space sparse: bool - if True, return sparse matrix mean: int - mean of the distribution SD: int - standard deviation of the distribution normalise: bool - if True, return normalised matrix symmetric: bool - if True, return symmetry matrix seedNum: int - specify the seed for random function
Create a randSys class in qg.classes.Qsystem which is using randomH operator Also, we are able to know the seedNum of the randomH operator
Problem
Benefits from this implementation