Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Generate the nth term in the Dyson series of a time-dependent operator
ResourceFunction["DysonTerms"][op,n] generates the order-n term in the Dyson series of the operator op. | |
ResourceFunction["DysonTerms"][op,n,alg] uses operation alg instead of NonCommutativeMultiply. | |
ResourceFunction["DysonTerms"][op,n, alg, t0] uses t0 instead of 0 as the initial integration time. |
| "NumericIntegration" | False | If set as True, it will return a function in terms of NIntegrate where the parameter is the upper limit. Otherwise it will do symbolic integration. |
First order term D1:
| In[1]:= |
| Out[1]= |
Second order term D2:
| In[2]:= |
| Out[2]= |
Second order term with Dot operation:
| In[3]:= |
| Out[3]= |
Third order term D3, with lower integration limit equal to 1:
| In[4]:= |
| Out[4]= |
Dyson series up to third order for some generic operator in 2×2 Pauli algebra:
| In[5]:= |
| Out[5]= |
Get the second order Dyson term for the particular time dependent operator Δ/2 σz + A Cos(ω t) σx:
| In[6]:= | ![]() |
| Out[8]= | ![]() |
Consider a time dependent operator for fermionic algebra
, where α and β are time dependent complex valued functions:
| In[9]:= |
Define the algebra:
| In[10]:= | ![]() |
Function for reducing fermionic algebra {c,c†}=1, {c,c} = 0, {c†,c†} = 0:
| In[11]:= |
Consider the full Dyson series up to the second order:
| In[12]:= |
| Out[12]= |
Normal order the terms; the integrals will depend on the scalar functions α and β:
| In[13]:= |
| Out[13]= |
Define an operator in Pauli algebra:
| In[14]:= |
For a second order term an exact expression could not be obtained or takes too long to integrate:
| In[15]:= |
| Out[15]= |
Get a function to do numeric integration:
| In[16]:= |
Evaluate at some particular final time:
| In[17]:= |
| Out[17]= |
Time dependent drive: VI(t) = g (ⅇⅈ ω t a + ⅇ-ⅈ ω t a†) for bosonic algebra:
| In[18]:= |
Define the algebra and a reduction function:
| In[19]:= |
First order term:
| In[20]:= |
| Out[20]= |
Second order term, simplified in normal order form:
| In[21]:= |
| Out[21]= | ![]() |
| In[22]:= | ![]() |
Show first order Dyson term to QuantumOperator (using externally the Wolfram Quantum Framework):
| In[23]:= | ![]() |
| In[24]:= |
| Out[24]= | ![]() |
Find the Hamiltonian in terms of QuantumOperator:
| In[25]:= | ![]() |
Show the first order approximation is good when this value is << 1:
| In[26]:= | ![]() |
Case Ω0=1, τ = 1, τ = 10
Use PacletSymbol QuantumEvolve and QuantumState for computing the evolution:
| In[27]:= | ![]() |
Moderate agreement:
| In[28]:= |
| Out[28]= |
Plot the result from numerically solving the evolution:
| In[29]:= |
| Out[29]= | ![]() |
Plot result from the Dyson operator:
| In[30]:= | ![]() |
| Out[30]= | ![]() |
Case Ω0=25, τ = 30, τ = 15
Same procedure as the previous case (now we evolve the state |0〉):
| In[31]:= | ![]() |
There will not be good agreement for this case:
| In[32]:= |
| Out[32]= |
Plot the result from numerically solving the evolution:
| In[33]:= |
| Out[33]= | ![]() |
Plot result from Dyson:
| In[34]:= | ![]() |
| Out[34]= | ![]() |
Load the function for computing terms of Magnus expansion:
| In[35]:= |
| Out[35]= |
For the first order term D1=Ω1 they have the same form:
| In[36]:= |
| Out[36]= |
Second order Dyson term expressed in terms of Magnus terms
:
| In[37]:= | ![]() |
| Out[37]= |
For the second order Dyson term, it is not trivial to see they are equal:
| In[38]:= | ![]() |
| Out[38]= |
Define a time dependent operator in the Pauli basis:
| In[39]:= |
Result from Dyson:
| In[40]:= | ![]() |
Result from Magnus:
| In[41]:= | ![]() |
| In[42]:= |
| Out[42]= |
Dyson third order term:
| In[43]:= | ![]() |
![]()
| In[44]:= | ![]() |
| In[45]:= |
| Out[45]= |
For the fourth term we have
+
.
In general, a Dyson term is generated by the non-commutative products of Magnus terms of the corresponding order, with a 1/n! factor introduced by the number of terms in that product.
If supplying an algebraic operation, it has to be one compatible with NonCommutativeAlgebra:
| In[46]:= |
| Out[46]= |
However it is possible to enforce a desired operation by defining a custom algebra:
| In[47]:= |
| Out[48]= |
This work is licensed under a Creative Commons Attribution 4.0 International License