NoncomProduct.html NoncomProduct.mws

Taylor expansion of an operator product

We check the order of the split-operator time propagation technique. First, we analyze a popular version of the time splitting technique (used in Ehrenfest.mws). Then, we show why the simple operator product exp(-I*(T+V)*dt) = exp(-I*T*dt) exp(-I*V*dt)   results in an O(dt^2)  error if T  and V  do not commute. Then, we analyze an O(dt^4)  accurate scheme which involves a large amount of algebraic computations.

This is, of course, related to the Campbell-Baker-Hausdorff formula, which reads ([A,B] : = A B - B A):

exp(A) exp(B) = exp(O), where O = A + B + 1/2 [A,B] + 1/12 ([[A,B],B] + [A,[A,B]]) + ...

This worksheet can be used in maple6 and maple7, but it gobbles lots of memory there. It works fine in maple8.

>    restart;

>    unassign(`&*`);
define(`&*`,multilinear,zero=0,identity=1,flat);

>    A&*B;

`&*`(A,B)

>    a&*A;

`&*`(a,A)

>    gamma &* A;

gamma*A

If we need a variable to be treated as a constant, we add it to the list:

>    constants:=constants,dt;

constants := false, gamma, infinity, true, Catalan, FAIL, Pi, dt

>    &*(A,dt,B);

dt*`&*`(A,1,B)

>    simplify(%);

dt*`&*`(A,1,B)

>    taylor(exp(-I*A&*B*dt),dt=0,3);

Error, (in series/fracpower) unable to compute series

Setting dt  to a constant is problematic, can't Taylor expand about it. So the trick is to Taylor expand about a variable ( h  in our case), and later to make substitutions, so that one may make use of the constant property. The above Taylor expansion attempt failed, because we can't expand about a variable that has just been declared to be a constant.

>    taylor(exp(-I*A&*B*h),h=0,3);

series(1-I*`&*`(A,B)*h+(-1/2*`&*`(A,B)^2)*h^2+O(h^3),h,3)

>    subs(h=dt,%);

1-I*`&*`(A,B)*dt-1/2*`&*`(A,B)^2*dt^2+O(dt^3)

>    No:=5; #order to which we expand

No := 5

>    Ut:=convert(taylor(exp(-I*(A+B)*h),h=0,No),polynom);

Ut := 1-I*(A+B)*h-1/2*(A+B)^2*h^2+1/6*I*(A+B)^3*h^3+1/24*(A+B)^4*h^4

We need to do something here: if we leave it as is, the powers of A,B  get evaluated assuming a commutative product.

>    Ut:=subs((A+B)^2=(A+B)&*(A+B),(A+B)^3=(A+B)&*(A+B)&*(A+B),(A+B)^4=(A+B)&*(A+B)&*(A+B)&*(A+B),Ut);

Ut := 1-I*(A+B)*h-1/2*(`&*`(A,A)+`&*`(A,B)+`&*`(B,A)+`&*`(B,B))*h^2+1/6*I*(`&*`(A,A,A)+`&*`(A,A,B)+`&*`(A,B,A)+`&*`(A,B,B)+`&*`(B,A,A)+`&*`(B,A,B)+`&*`(B,B,A)+`&*`(B,B,B))*h^3+1/24*(`&*`(A,A,A,A)+`&*`(...
Ut := 1-I*(A+B)*h-1/2*(`&*`(A,A)+`&*`(A,B)+`&*`(B,A)+`&*`(B,B))*h^2+1/6*I*(`&*`(A,A,A)+`&*`(A,A,B)+`&*`(A,B,A)+`&*`(A,B,B)+`&*`(B,A,A)+`&*`(B,A,B)+`&*`(B,B,A)+`&*`(B,B,B))*h^3+1/24*(`&*`(A,A,A,A)+`&*`(...
Ut := 1-I*(A+B)*h-1/2*(`&*`(A,A)+`&*`(A,B)+`&*`(B,A)+`&*`(B,B))*h^2+1/6*I*(`&*`(A,A,A)+`&*`(A,A,B)+`&*`(A,B,A)+`&*`(A,B,B)+`&*`(B,A,A)+`&*`(B,A,B)+`&*`(B,B,A)+`&*`(B,B,B))*h^3+1/24*(`&*`(A,A,A,A)+`&*`(...
Ut := 1-I*(A+B)*h-1/2*(`&*`(A,A)+`&*`(A,B)+`&*`(B,A)+`&*`(B,B))*h^2+1/6*I*(`&*`(A,A,A)+`&*`(A,A,B)+`&*`(A,B,A)+`&*`(A,B,B)+`&*`(B,A,A)+`&*`(B,A,B)+`&*`(B,B,A)+`&*`(B,B,B))*h^3+1/24*(`&*`(A,A,A,A)+`&*`(...

>    UtA:=convert(taylor(exp(-I*(A)*h/2),h=0,No),polynom);

UtA := 1-1/2*I*A*h-1/8*A^2*h^2+1/48*I*A^3*h^3+1/384*A^4*h^4

>    UtB:=convert(taylor(exp(-I*(B)*h),h=0,No),polynom);

UtB := 1-I*B*h-1/2*B^2*h^2+1/6*I*B^3*h^3+1/24*B^4*h^4

>    Uspo:=simplify(subs(h=dt,UtA &* UtB &* UtA));

Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...
Uspo := 1+1/96*dt^4*`&*`(A^3,A)+1/48*dt^4*`&*`(B,A^3)-1/2*dt^2*`&*`(A,B,1)-1/288*dt^6*`&*`(B^3,A^3)-1/2304*dt^6*`&*`(A^3,A^3)+1/12*dt^4*`&*`(B^3,A)+1/4608*dt^8*`&*`(A,B^3,A^4)-1/96*dt^6*`&*`(A,B^3,A^2)...

>    Udif:=simplify(subs(h=dt,Ut)-Uspo);

Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...
Udif := -1/96*dt^4*`&*`(A^3,A)-1/48*dt^4*`&*`(B,A^3)+1/2*dt^2*`&*`(A,B,1)+1/288*dt^6*`&*`(B^3,A^3)+1/2304*dt^6*`&*`(A^3,A^3)-1/12*dt^4*`&*`(B^3,A)-1/4608*dt^8*`&*`(A,B^3,A^4)+1/96*dt^6*`&*`(A,B^3,A^2)-...

>    coeff(Udif,dt,0),coeff(Udif,dt,1);

0, 0

>    C2:=coeff(Udif,dt,2);

C2 := 1/2*`&*`(A,B,1)-1/2*`&*`(A,B)-1/2*`&*`(B,B)+1/4*A^2+1/2*B^2-1/4*`&*`(A,A)

>    C3:=coeff(Udif,dt,3);

C3 := 1/6*I*`&*`(A,A,B)+1/6*I*`&*`(A,A,A)-1/16*I*`&*`(A^2,A)-1/4*I*`&*`(B^2,A)-1/4*I*`&*`(A,B^2,1)+1/6*I*`&*`(B,A,A)+1/6*I*`&*`(A,B,B)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B,B,B)+1/6*I*`&...
C3 := 1/6*I*`&*`(A,A,B)+1/6*I*`&*`(A,A,A)-1/16*I*`&*`(A^2,A)-1/4*I*`&*`(B^2,A)-1/4*I*`&*`(A,B^2,1)+1/6*I*`&*`(B,A,A)+1/6*I*`&*`(A,B,B)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B,B,B)+1/6*I*`&...

>    C4:=coeff(Udif,dt,4);

C4 := -1/96*`&*`(A^3,A)-1/48*`&*`(B,A^3)-1/12*`&*`(B^3,A)-1/12*`&*`(A,B^3,1)-1/16*`&*`(A^2,B,A)-1/16*`&*`(A^2,B^2,1)-1/16*`&*`(A,B,A^2)-1/8*`&*`(A,B^2,A)-1/48*`&*`(A^3,B,1)+1/24*`&*`(A,A,A,A)+1/24*`&*`...
C4 := -1/96*`&*`(A^3,A)-1/48*`&*`(B,A^3)-1/12*`&*`(B^3,A)-1/12*`&*`(A,B^3,1)-1/16*`&*`(A^2,B,A)-1/16*`&*`(A^2,B^2,1)-1/16*`&*`(A,B,A^2)-1/8*`&*`(A,B^2,A)-1/48*`&*`(A^3,B,1)+1/24*`&*`(A,A,A,A)+1/24*`&*`...
C4 := -1/96*`&*`(A^3,A)-1/48*`&*`(B,A^3)-1/12*`&*`(B^3,A)-1/12*`&*`(A,B^3,1)-1/16*`&*`(A^2,B,A)-1/16*`&*`(A^2,B^2,1)-1/16*`&*`(A,B,A^2)-1/8*`&*`(A,B^2,A)-1/48*`&*`(A^3,B,1)+1/24*`&*`(A,A,A,A)+1/24*`&*`...
C4 := -1/96*`&*`(A^3,A)-1/48*`&*`(B,A^3)-1/12*`&*`(B^3,A)-1/12*`&*`(A,B^3,1)-1/16*`&*`(A^2,B,A)-1/16*`&*`(A^2,B^2,1)-1/16*`&*`(A,B,A^2)-1/8*`&*`(A,B^2,A)-1/48*`&*`(A^3,B,1)+1/24*`&*`(A,A,A,A)+1/24*`&*`...

>    simplify(C2);

1/2*`&*`(A,B,1)-1/2*`&*`(A,B)-1/2*`&*`(B,B)+1/4*A^2+1/2*B^2-1/4*`&*`(A,A)

>    definemore(`&*`,
&*(1,A::symbol,B::symbol)=A&*B,&*(A::symbol,1,B::symbol)=A&*B,&*(A::symbol,B::symbol,1)=A&*B);

>    simplify(C2);

-1/2*`&*`(B,B)+1/4*A^2+1/2*B^2-1/4*`&*`(A,A)

>    definemore(`&*`,&*(B::symbol,B::symbol) = B^2);

This one was tricky, some other obvious versions didn't work (putting in the ::symbol  was essential)!

>    simplify(A &* A);

A^2

>    simplify(C2);

0

>    simplify(C3);

1/6*I*`&*`(A,A,B)+1/6*I*`&*`(A,A,A)-1/16*I*`&*`(A^2,A)-1/4*I*`&*`(B^2,A)-1/4*I*`&*`(A,B^2,1)+1/6*I*`&*`(B,A,A)+1/6*I*`&*`(A,B,B)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B,B,B)+1/6*I*`&*`(B,A...
1/6*I*`&*`(A,A,B)+1/6*I*`&*`(A,A,A)-1/16*I*`&*`(A^2,A)-1/4*I*`&*`(B^2,A)-1/4*I*`&*`(A,B^2,1)+1/6*I*`&*`(B,A,A)+1/6*I*`&*`(A,B,B)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B,B,B)+1/6*I*`&*`(B,A...

Will this vanish?  Make sure the original expansions are to sufficient order!

Note that obvious simplifications were not carried out! Such as &*(A,B^2,1) = A &* B^2 , despite the formal prescription. Why?

>    whattype(B^2);

`^`

>    definemore(`&*`,
&*(1,A::algebraic,B::algebraic)=A&*B,&*(A::algebraic,1,B::algebraic)=A&*B,&*(A::algebraic,B::algebraic,1)=A&*B);

>    simplify(C3);

1/6*I*`&*`(A,A,B)-1/8*I*`&*`(A^2,B)+1/6*I*`&*`(A,A,A)-1/16*I*`&*`(A^2,A)-1/4*I*`&*`(B^2,A)+1/6*I*`&*`(B,A,A)+1/6*I*`&*`(A,B,B)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B,B,B)+1/6*I*`&*`(B,A,B...
1/6*I*`&*`(A,A,B)-1/8*I*`&*`(A^2,B)+1/6*I*`&*`(A,A,A)-1/16*I*`&*`(A^2,A)-1/4*I*`&*`(B^2,A)+1/6*I*`&*`(B,A,A)+1/6*I*`&*`(A,B,B)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B,B,B)+1/6*I*`&*`(B,A,B...

OK, so we managed to get the triple product reduced when a constant (1) is inside, while a power of operators appears.

>    definemore(`&*`,
&*(A::algebraic,A::algebraic,B::algebraic)=&*(A^2,B),&*(A::algebraic,B::algebraic,B::algebraic)=&*(A,B^2));

>    simplify(C3);

1/24*I*`&*`(A^2,B)+5/48*I*`&*`(A^2,A)-1/12*I*`&*`(B^2,A)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B^2,B)+1/6*I*`&*`(B,A,B)-1/16*I*`&*`(A,A^2)-1/12*I*`&*`(A,B^2)+1/24*I*`&*`(B,A^2)
1/24*I*`&*`(A^2,B)+5/48*I*`&*`(A^2,A)-1/12*I*`&*`(B^2,A)-1/12*I*`&*`(A,B,A)-1/6*I*B^3-1/24*I*A^3+1/6*I*`&*`(B^2,B)+1/6*I*`&*`(B,A,B)-1/16*I*`&*`(A,A^2)-1/12*I*`&*`(A,B^2)+1/24*I*`&*`(B,A^2)

>    definemore(`&*`,
&*(A::algebraic,A::algebraic,A::algebraic)=A^3,&*(A::algebraic,(A::algebraic)^2)=A^3,&*((A::algebraic)^2,A::algebraic)=A^3);

>    simplify(C3);

1/24*I*`&*`(A^2,B)-1/12*I*`&*`(B^2,A)-1/12*I*`&*`(A,B,A)+1/6*I*`&*`(B,A,B)-1/12*I*`&*`(A,B^2)+1/24*I*`&*`(B,A^2)

The third-order error term can be expressed in terms of commutators:

>    CM:=(A,B)->A &* B-B &* A;

CM := proc (A, B) options operator, arrow; `&*`(A,B)-`&*`(B,A) end proc

>    C3f:=I*(CM(A+2*B,CM(A,B)))/24;

C3f := 1/24*I*(`&*`(A^2,B)-2*`&*`(A,B,A)+4*`&*`(B,A,B)-2*`&*`(B^2,A)-2*`&*`(A,B^2)+`&*`(B,A^2))

>    simplify(C3-C3f);

0

>   

Now show that this is better than the naive splitting:

>    UtA:=convert(taylor(exp(-I*(A)*h),h=0,No),polynom);

UtA := 1-I*A*h-1/2*A^2*h^2+1/6*I*A^3*h^3+1/24*A^4*h^4

>    UtB:=convert(taylor(exp(-I*(B)*h),h=0,No),polynom);

UtB := 1-I*B*h-1/2*B^2*h^2+1/6*I*B^3*h^3+1/24*B^4*h^4

>    Uspo:=simplify(subs(h=dt,UtA &* UtB));

Uspo := 1-1/24*I*dt^5*`&*`(A,B^4)+1/2*I*dt^3*`&*`(A,B^2)+1/2*I*dt^3*`&*`(A^2,B)-1/12*I*dt^5*`&*`(A^3,B^2)+1/144*I*dt^7*`&*`(A^3,B^4)+1/144*I*dt^7*`&*`(A^4,B^3)-1/12*I*dt^5*`&*`(A^2,B^3)-1/48*dt^6*`&*`(...
Uspo := 1-1/24*I*dt^5*`&*`(A,B^4)+1/2*I*dt^3*`&*`(A,B^2)+1/2*I*dt^3*`&*`(A^2,B)-1/12*I*dt^5*`&*`(A^3,B^2)+1/144*I*dt^7*`&*`(A^3,B^4)+1/144*I*dt^7*`&*`(A^4,B^3)-1/12*I*dt^5*`&*`(A^2,B^3)-1/48*dt^6*`&*`(...
Uspo := 1-1/24*I*dt^5*`&*`(A,B^4)+1/2*I*dt^3*`&*`(A,B^2)+1/2*I*dt^3*`&*`(A^2,B)-1/12*I*dt^5*`&*`(A^3,B^2)+1/144*I*dt^7*`&*`(A^3,B^4)+1/144*I*dt^7*`&*`(A^4,B^3)-1/12*I*dt^5*`&*`(A^2,B^3)-1/48*dt^6*`&*`(...
Uspo := 1-1/24*I*dt^5*`&*`(A,B^4)+1/2*I*dt^3*`&*`(A,B^2)+1/2*I*dt^3*`&*`(A^2,B)-1/12*I*dt^5*`&*`(A^3,B^2)+1/144*I*dt^7*`&*`(A^3,B^4)+1/144*I*dt^7*`&*`(A^4,B^3)-1/12*I*dt^5*`&*`(A^2,B^3)-1/48*dt^6*`&*`(...

>    Udif:=simplify(subs(h=dt,Ut)-Uspo);

Udif := 1/48*dt^6*`&*`(A^2,B^4)+1/36*dt^6*`&*`(A^3,B^3)-1/6*dt^4*`&*`(A^3,B)-1/576*dt^8*`&*`(A^4,B^4)-1/4*dt^4*`&*`(A^2,B^2)+1/48*dt^6*`&*`(A^4,B^2)-1/6*dt^4*`&*`(A,B^3)+1/24*I*dt^5*`&*`(A,B^4)+1/12*I*...
Udif := 1/48*dt^6*`&*`(A^2,B^4)+1/36*dt^6*`&*`(A^3,B^3)-1/6*dt^4*`&*`(A^3,B)-1/576*dt^8*`&*`(A^4,B^4)-1/4*dt^4*`&*`(A^2,B^2)+1/48*dt^6*`&*`(A^4,B^2)-1/6*dt^4*`&*`(A,B^3)+1/24*I*dt^5*`&*`(A,B^4)+1/12*I*...
Udif := 1/48*dt^6*`&*`(A^2,B^4)+1/36*dt^6*`&*`(A^3,B^3)-1/6*dt^4*`&*`(A^3,B)-1/576*dt^8*`&*`(A^4,B^4)-1/4*dt^4*`&*`(A^2,B^2)+1/48*dt^6*`&*`(A^4,B^2)-1/6*dt^4*`&*`(A,B^3)+1/24*I*dt^5*`&*`(A,B^4)+1/12*I*...
Udif := 1/48*dt^6*`&*`(A^2,B^4)+1/36*dt^6*`&*`(A^3,B^3)-1/6*dt^4*`&*`(A^3,B)-1/576*dt^8*`&*`(A^4,B^4)-1/4*dt^4*`&*`(A^2,B^2)+1/48*dt^6*`&*`(A^4,B^2)-1/6*dt^4*`&*`(A,B^3)+1/24*I*dt^5*`&*`(A,B^4)+1/12*I*...
Udif := 1/48*dt^6*`&*`(A^2,B^4)+1/36*dt^6*`&*`(A^3,B^3)-1/6*dt^4*`&*`(A^3,B)-1/576*dt^8*`&*`(A^4,B^4)-1/4*dt^4*`&*`(A^2,B^2)+1/48*dt^6*`&*`(A^4,B^2)-1/6*dt^4*`&*`(A,B^3)+1/24*I*dt^5*`&*`(A,B^4)+1/12*I*...
Udif := 1/48*dt^6*`&*`(A^2,B^4)+1/36*dt^6*`&*`(A^3,B^3)-1/6*dt^4*`&*`(A^3,B)-1/576*dt^8*`&*`(A^4,B^4)-1/4*dt^4*`&*`(A^2,B^2)+1/48*dt^6*`&*`(A^4,B^2)-1/6*dt^4*`&*`(A,B^3)+1/24*I*dt^5*`&*`(A,B^4)+1/12*I*...
Udif := 1/48*dt^6*`&*`(A^2,B^4)+1/36*dt^6*`&*`(A^3,B^3)-1/6*dt^4*`&*`(A^3,B)-1/576*dt^8*`&*`(A^4,B^4)-1/4*dt^4*`&*`(A^2,B^2)+1/48*dt^6*`&*`(A^4,B^2)-1/6*dt^4*`&*`(A,B^3)+1/24*I*dt^5*`&*`(A,B^4)+1/12*I*...

>    coeff(Udif,dt,0),coeff(Udif,dt,1);

0, 0

>    C2:=coeff(Udif,dt,2);

C2 := 1/2*`&*`(A,B)-1/2*`&*`(B,A)

The simple product is only second-order accurate, i.e., an O(dt^2)  term survive if A  and B  don't commute.

Exercise:

Look at the Campbell-Baker-Hausdorff expansion with a smallness parameter dt to generate a Taylor series.

exp(A*dt) exp(B*dt) = exp(O*dt) , where O = A + B + 1/2 [A,B] + 1/12 ([[A,B],B] + [A,[A,B]]) + ...

Use the Taylor expansion to verify the quoted result, and calculate the next order, i.e., the O(dt^3)  expression.

The next issue: can we generate a more complicated split-operator technique which will agree with the exact answer to a higher order in dt?

The answer is yes. We first define the basic split-operator technique as a single step:

U2 = exp(-I*A*dt/2) exp(-I*B*dt) exp(-I*A*dt/2)  as a function of A, B, dt

U3 = U2(A,B,g*dt) U2(A,B,(1-2*g)*dt) U2(A,B,g*t)  will work for a particular choice of g .

>    U2:=(A,B,h)->exp(-I*h/2*A) &* exp(-I*h*B) &* exp(-I*h/2*A);

U2 := proc (A, B, h) options operator, arrow; `&*`(`&*`(exp(-1/2*I*h*A),exp(-I*h*B)),exp(-1/2*I*h*A)) end proc

>    g:='g': # a parameter to subdivide the time step dt to be optimized.

>    U3:=U2(A,B,g*h) &* U2(A,B,(1-2*g)*h) &* U2(A,B,g*h);

U3 := `&*`(exp(-1/2*I*g*h*A),exp(-I*g*h*B),exp(-1/2*I*g*h*A),exp(-1/2*I*(1-2*g)*h*A),exp(-I*(1-2*g)*h*B),exp(-1/2*I*(1-2*g)*h*A),exp(-1/2*I*g*h*A),exp(-I*g*h*B),exp(-1/2*I*g*h*A))
U3 := `&*`(exp(-1/2*I*g*h*A),exp(-I*g*h*B),exp(-1/2*I*g*h*A),exp(-1/2*I*(1-2*g)*h*A),exp(-I*(1-2*g)*h*B),exp(-1/2*I*(1-2*g)*h*A),exp(-1/2*I*g*h*A),exp(-I*g*h*B),exp(-1/2*I*g*h*A))

>    convert(taylor(U3,h=0,No),polynom);

Error, (in D/procedure) index out of range: function takes only 0 arguments

The direct approach won't work. We need to do what was done before, namely generate the Taylor expansions for the individual pieces, and put them together.

>    UtA:=convert(taylor(exp(-I*(A)*h/2),h=0,No),polynom);

>    UtB:=convert(taylor(exp(-I*(B)*h),h=0,No),polynom);

UtA := 1-1/2*I*A*h-1/8*A^2*h^2+1/48*I*A^3*h^3+1/384*A^4*h^4

UtB := 1-I*B*h-1/2*B^2*h^2+1/6*I*B^3*h^3+1/24*B^4*h^4

>    U2:=unapply(UtA &* UtB &* UtA, A,B,h):

The naive implementation is given below.

>    # U3:=U2(A,B,g*h) &* U2(A,B,(1-2*g)*h) &* U2(A,B,g*h):

>    constants:=constants,g;

constants := false, gamma, infinity, true, Catalan, FAIL, Pi, dt, g

>    #U3:=simplify( subs(h=dt,U2(A,B,g*h) &* U2(A,B,(1-2*g)*h) &* U2(A,B,g*h)) ):

The above line would at least make use of the fact that dt  is a constant, and simplify operator products. It is, however, too cumbersome for Maple to evaluate within a reasonable amount of memory and time. The trick is to build up the expression gradually, and to keep only the lowest four orders in dt  for each factor as one builds the expression. Note that back-and-forth substitutions dt  vs h  are needed. Taylor expansion will work with h , and not with dt . Non-commutative product simplification requires dt , so that it is recognized as a constant.

>    U3a:=convert(taylor(subs(dt=h,simplify(subs(h=dt,U2(A,B,g*h)))),h=0,No),polynom);

U3a := 1+(-I*A*g-I*g*B)*h+(-1/2*g^2*`&*`(A,B)-1/2*B^2*g^2-1/2*A^2*g^2-1/2*g^2*`&*`(B,A))*h^2+(1/4*I*g^3*`&*`(A,B,A)+1/6*I*B^3*g^3+1/8*I*g^3*`&*`(B,A^2)+1/4*I*g^3*`&*`(A,B^2)+1/4*I*g^3*`&*`(B^2,A)+1/8*I...
U3a := 1+(-I*A*g-I*g*B)*h+(-1/2*g^2*`&*`(A,B)-1/2*B^2*g^2-1/2*A^2*g^2-1/2*g^2*`&*`(B,A))*h^2+(1/4*I*g^3*`&*`(A,B,A)+1/6*I*B^3*g^3+1/8*I*g^3*`&*`(B,A^2)+1/4*I*g^3*`&*`(A,B^2)+1/4*I*g^3*`&*`(B^2,A)+1/8*I...
U3a := 1+(-I*A*g-I*g*B)*h+(-1/2*g^2*`&*`(A,B)-1/2*B^2*g^2-1/2*A^2*g^2-1/2*g^2*`&*`(B,A))*h^2+(1/4*I*g^3*`&*`(A,B,A)+1/6*I*B^3*g^3+1/8*I*g^3*`&*`(B,A^2)+1/4*I*g^3*`&*`(A,B^2)+1/4*I*g^3*`&*`(B^2,A)+1/8*I...
U3a := 1+(-I*A*g-I*g*B)*h+(-1/2*g^2*`&*`(A,B)-1/2*B^2*g^2-1/2*A^2*g^2-1/2*g^2*`&*`(B,A))*h^2+(1/4*I*g^3*`&*`(A,B,A)+1/6*I*B^3*g^3+1/8*I*g^3*`&*`(B,A^2)+1/4*I*g^3*`&*`(A,B^2)+1/4*I*g^3*`&*`(B^2,A)+1/8*I...

>    U3b:=convert(taylor(subs(dt=h,simplify(subs(h=dt,U2(A,B,(1-2*g)*h)))),h=0,No),polynom);

U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...
U3b := 1+(-I*B+2*I*B*g+2*I*A*g-I*A)*h+(-2*g^2*`&*`(B,A)-1/2*`&*`(A,B)-2*B^2*g^2+2*A^2*g-1/2*A^2+2*`&*`(B,A)*g-1/2*B^2-1/2*`&*`(B,A)+2*`&*`(A,B)*g-2*A^2*g^2+2*B^2*g-2*g^2*`&*`(A,B))*h^2+(-I*B^3*g+3*I*`&...

>    U3p:= expand(subs(h=dt,U3a) &* subs(h=dt,U3b) ):

>    U3p:=convert(taylor(subs(dt=h,U3p),h=0,No),polynom):

>    U3p:= expand(subs(h=dt,U3p) &* subs(h=dt, U3a)):

>    U3:=convert(taylor(subs(dt=h,U3p),h=0,No),polynom):

Note that this relatively fast computation relies on the Taylor truncations. Try it without them and see memory and time gobbled up.

>    coeff(U3,h,1);

-I*A-I*B

>    Ut;

1-I*(A+B)*h-1/2*(A^2+`&*`(A,B)+`&*`(B,A)+B^2)*h^2+1/6*I*(A^3+`&*`(A^2,B)+`&*`(A,B,A)+`&*`(A,B^2)+`&*`(B,A^2)+`&*`(B,A,B)+`&*`(B^2,A)+B^3)*h^3+1/24*(`&*`(A,A,A,A)+`&*`(A,A,A,B)+`&*`(A,A,B,A)+`&*`(A,A,B,...
1-I*(A+B)*h-1/2*(A^2+`&*`(A,B)+`&*`(B,A)+B^2)*h^2+1/6*I*(A^3+`&*`(A^2,B)+`&*`(A,B,A)+`&*`(A,B^2)+`&*`(B,A^2)+`&*`(B,A,B)+`&*`(B^2,A)+B^3)*h^3+1/24*(`&*`(A,A,A,A)+`&*`(A,A,A,B)+`&*`(A,A,B,A)+`&*`(A,A,B,...
1-I*(A+B)*h-1/2*(A^2+`&*`(A,B)+`&*`(B,A)+B^2)*h^2+1/6*I*(A^3+`&*`(A^2,B)+`&*`(A,B,A)+`&*`(A,B^2)+`&*`(B,A^2)+`&*`(B,A,B)+`&*`(B^2,A)+B^3)*h^3+1/24*(`&*`(A,A,A,A)+`&*`(A,A,A,B)+`&*`(A,A,B,A)+`&*`(A,A,B,...
1-I*(A+B)*h-1/2*(A^2+`&*`(A,B)+`&*`(B,A)+B^2)*h^2+1/6*I*(A^3+`&*`(A^2,B)+`&*`(A,B,A)+`&*`(A,B^2)+`&*`(B,A^2)+`&*`(B,A,B)+`&*`(B^2,A)+B^3)*h^3+1/24*(`&*`(A,A,A,A)+`&*`(A,A,A,B)+`&*`(A,A,B,A)+`&*`(A,A,B,...

Now we verify that the time evolution operator expressions agree in their orders 0 to 2:

>    DIF:=simplify(Ut-U3):

>    coeff(DIF,h,0);

0

>    coeff(DIF,h,1);

0

>    coeff(DIF,h,2);

0

>    DIF3:=coeff(DIF,h,3);

DIF3 := 1/24*I*`&*`(A^2,B)+2*I*g^2*`&*`(B,A,B)+1/2*I*g^3*`&*`(A,B,A)-1/4*I*g*`&*`(B,A^2)-I*g*`&*`(B,A,B)-I*g^2*`&*`(A,B,A)-1/4*I*g*`&*`(A^2,B)+1/2*I*g*`&*`(B^2,A)-1/12*I*`&*`(A,B^2)+1/24*I*`&*`(B,A^2)-...
DIF3 := 1/24*I*`&*`(A^2,B)+2*I*g^2*`&*`(B,A,B)+1/2*I*g^3*`&*`(A,B,A)-1/4*I*g*`&*`(B,A^2)-I*g*`&*`(B,A,B)-I*g^2*`&*`(A,B,A)-1/4*I*g*`&*`(A^2,B)+1/2*I*g*`&*`(B^2,A)-1/12*I*`&*`(A,B^2)+1/24*I*`&*`(B,A^2)-...
DIF3 := 1/24*I*`&*`(A^2,B)+2*I*g^2*`&*`(B,A,B)+1/2*I*g^3*`&*`(A,B,A)-1/4*I*g*`&*`(B,A^2)-I*g*`&*`(B,A,B)-I*g^2*`&*`(A,B,A)-1/4*I*g*`&*`(A^2,B)+1/2*I*g*`&*`(B^2,A)-1/12*I*`&*`(A,B^2)+1/24*I*`&*`(B,A^2)-...
DIF3 := 1/24*I*`&*`(A^2,B)+2*I*g^2*`&*`(B,A,B)+1/2*I*g^3*`&*`(A,B,A)-1/4*I*g*`&*`(B,A^2)-I*g*`&*`(B,A,B)-I*g^2*`&*`(A,B,A)-1/4*I*g*`&*`(A^2,B)+1/2*I*g*`&*`(B^2,A)-1/12*I*`&*`(A,B^2)+1/24*I*`&*`(B,A^2)-...

Now show that a particular choice of g  turns this into zero:

>    simplify(subs(g=1/(2-2^(1/3)),DIF3));

0

This completes the proof that a fourth-order accurate time evolution operator can be found.

In the numerical implementation one needs to ask the question whether this algorithm is economical. The improved accuracy comes at the price of a substantial number of additional calculations.

>   

>   

>