
#Maple proof that (62) is equivalent to (1)-(6) in additional material, 2D
restart;
with(LinearAlgebra):

#(59) number of simple times, feel free to replace by any other positive integer
N := 7;


#known coeffs in (62)
gbar := Array(0..N):
Ubar1 := Array(0..N):
Ubar2 := Array(0..N):
Mbar11 := Array(0..N):
Mbar12 := Array(0..N):
Mbar22 := Array(0..N):

#unknown values (63)
omega := Array(0..N):

#set known coeffs and unknown values to symbolic values 
for i from 0 by 1 to N do
gbar[i] := gg[i]:
Ubar1[i] := u1[i]:
Ubar2[i] := u2[i]:
Mbar11[i] := m11[i]:
Mbar12[i] := m12[i]:
Mbar22[i] := m22[i]:
omega[i] := om[i]:
end do:

#matrix L in (64)
L := Matrix(N+1,N+1):
for i from 0 by 1 to N do 
for j from 0 by 1 to N do 
L[i+1,j+1] := l[i,j]:
end do:
end do:
L;

#(64)
for i from 0 by 1 to N do
omegadot[i] := 0:
for j from 0 by 1 to N do
omegadot[i] := omegadot[i] + l[i,j]*omega[j]:
end do:
end do:



#compute (62)
ehat := 0:
for i from 0 by 1 to N do
UH := Vector([Ubar1[i],Ubar2[i]]):
MH := Matrix([
[Mbar11[i] , Mbar12[i]], 
[Mbar12[i] , Mbar22[i]]]):
AH := Vector([omega[i],omegadot[i]]):
ehat := ehat + gbar[i] - 2*Multiply( Transpose(UH),AH) 
+ Multiply(Multiply( Transpose(AH), MH),AH):
end do:    
ehat := ehat/(N+1):
ehat;


###

#number of unkwowns
n_Unknowns := N+1;

#(63)
C := Vector(n_Unknowns):
for i from 0 by 1 to N do
C[i+1] := omega[i]:
end do:
C;

#(2) in additional material
g := 0:
for i from 1 by 1 to N+1 do 
g := g + VV[i]:
end do:
g := (1/(N+1))*g:

VV :=Vector(N+1): 
U1V := Vector(N+1):
U2V := Vector(N+1):
M11V := Vector(N+1):
M12V := Vector(N+1):
M22V := Vector(N+1):
for i from 0 by 1 to N do 
VV[i+1] := gbar[i]:
U1V[i+1] := Ubar1[i]:
U2V[i+1] := Ubar2[i]:
M11V[i+1] := Mbar11[i]:
M12V[i+1] := Mbar12[i]:
M22V[i+1] := Mbar22[i]:
end do:

#(3) in additional material
U := (1/(N+1))*U1V +(1/(N+1))*Multiply( Transpose(L),U2V) ;

#(4) in additional material
M := 
+ (1/(N+1))*DiagonalMatrix(M11V)
+ (1/(N+1))*Multiply(Multiply( Transpose(L) , DiagonalMatrix(M22V) ),L)
+ (1/(N+1))*Multiply( Transpose(L) , DiagonalMatrix(M12V)  )
+ (1/(N+1))*Multiply(  DiagonalMatrix(M12V), L  );

#(1) in additional material
ehat_new := g - 2*Multiply( Transpose(U),C) + Multiply( Multiply( Transpose(C), M ),C);

#show (62)=(1) in additional material
simplify(ehat-ehat_new);






