Jump to content

User:Sueco Viejo/sandbox

From Wikipedia, the free encyclopedia

Galileo prime number gravity stuff

[edit]

Drafts

[edit]

Alexander Unzicker

Fling (social network)

QuTip

[edit]

History

[edit]

The idea for the QuTip project was conceived in 2010 by PhD student Paul Nation, who decided to create a python package similar to the quantum optics toolbox for MATLAB. As a postdoctoral fellow, at the RIKEN Institute in Japan, he met Robert Johansson and the two worked together on the package[1]. In contrast to its predecessor qotoolbox, which relies on the proprietary MATLAB environment, it was published under an open source license and is continually updated by a large community of contributors.

Examples

[edit]

Creating quantum objects

[edit]
>>> import qutip 
>>> import numpy as np
>>> psi=qutip.Qobj([[0.6],[0.8]]) # create quantum state from a list
>>> psi
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[0.6]
 [0.8]]
>>> phi=qutip.Qobj(np.array([0.8,-0.6])) # create quantum state from a numpy-array
>>> phi
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[ 0.8]
 [-0.6]]
>>> e0=qutip.basis(2,0) # create a basis vector
>>> e0
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[1.]
 [0.]]
>>> A=qutip.Qobj(np.array([[1,2j],[-2j,1]])) # create quantum operator from numpy array
>>> A
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True
Qobj data =
[[1.+0.j 0.+2.j]
 [0.-2.j 1.+0.j]]
>>> qutip.sigmay() # some common quantum objects, like pauli matrices, are predefined in the qutip package
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True
Qobj data =
[[0.+0.j 0.-1.j]
 [0.+1.j 0.+0.j]]

Basic operations

[edit]
>>> A*qutip.sigmax()+qutip.sigmay() # we can add and multiply quantum objects of compatible shape and dimension
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = False
Qobj data =
[[0.+2.j 1.-1.j]
 [1.+1.j 0.-2.j]]
>>> psi.dag() # hermitian conjugate
Quantum object: dims = [[1], [2]], shape = (1, 2), type = bra
Qobj data =
[[0.6 0.8]]
>>> psi.proj() # projector onto a quantum state
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True
Qobj data =
[[0.36 0.48]
 [0.48 0.64]]
>>> A.tr() # trace of operator
2.0
>>> A.eigenstates() # diagonalize an operator
(array([-1.,  3.]), array([Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
       Qobj data =
       [[-0.70710678+0.j        ]
        [ 0.        -0.70710678j]]                                  ,
       Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
       Qobj data =
       [[-0.70710678+0.j        ]
        [ 0.        +0.70710678j]]                                  ],
      dtype=object))
>>> (1j*A).expm() # matrix exponential of an operator
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = False
Qobj data =
[[-0.2248451-0.35017549j -0.4912955-0.7651474j ]
 [ 0.4912955+0.7651474j  -0.2248451-0.35017549j]]
>>> qutip.tensor(qutip.sigmaz(),qutip.sigmay()) # tensor product
Quantum object: dims = [[2, 2], [2, 2]], shape = (4, 4), type = oper, isherm = True
Qobj data =
[[0.+0.j 0.-1.j 0.+0.j 0.+0.j]
 [0.+1.j 0.+0.j 0.+0.j 0.+0.j]
 [0.+0.j 0.+0.j 0.+0.j 0.+1.j]
 [0.+0.j 0.+0.j 0.-1.j 0.+0.j]]

Time evolution

[edit]
>>> Hamiltonian=qutip.sigmay()
>>> times=np.linspace(0,2,10)
>>> result=qutip.sesolve(Hamiltonian,psi,times,[psi.proj(),phi.proj()]) # unitary time evolution of a system according to schroedinger equation
>>> expectpsi,expectphi=result.expect # expectation values of projectors onto psi and phi 
>>> plt.figure(dpi=200)
>>> plt.plot(times,expectpsi)
>>> plt.plot(times,expectphi)
>>> plt.legend([r"$\psi$",r"$\phi$"])
>>> plt.show()
results of a simulation of a simple quantum system using qutip

Simulating a non-unitary time evolution according to the Lindblad Master Equation is possible with the qutip.mesolve function [2]


References

[edit]
  1. ^ Tobias Macey (24 September 2017). "QuTiP with Paul Nation - Episode 128" (Podcast). Podcast.__init__. Event occurs at 6:15. Retrieved 10 August 2022.
  2. ^ "Lindblad Master Equation Solver". Retrieved 2022-07-24.