In this example we use the package DeterminingEquations.m to work out the point group of the Maxwell's equations for electric and magnetic fields in free space,

E1x+E2y+E3z=0,
B1t+E3y-E2z=0,
B2t+E1z-E3x=0,
B3t+E2x-E1y=0,
B1x+B2y+B3z=0,
E1t-c^2*B3y+c^2*B2z=0,
E2t-c^2*B1z+c^2*B3x=0,
E2t-c^2*B2x+c^2*B1y=0.

First read in the package.

Needs["SymmetryAnalysis`IntroToSymmetry`"]

Enter the list of independent variables.

independentvariables = {"x", "y", "z", "t"};

Enter the list of dependent variables.

\(\(dependentvariables = {"e1", "e2", "e3", "b1", "b2", "b3"};\)\)

Enter the list of function and/or constant names that must be preserved when the equations are expressed in terms of generic variables.

frozennames = {"c"};

Enter the maximum derivative order of the input equation(s).

p = 1;

The maximum derivative order that the infinitesimals are assumed to depend on is specified by the input parameter r. This parameter is only nonzero when the user is looking for Lie contact groups or Lie-Backlund groups. For the usual case where one is searching for point groups set r=0.

r = 0;

When searching for Lie-Backlund groups (r=1 or greater) one can, without loss of generality, leave the independent variables untransformed. The corresponding infinitesimals (the xse's) are set to zero by setting xseon=0. If one is searching for point groups then set xseon=1. The choice xseon=1 is also an option when looking for Lie-Backlund groups and this can be useful when looking for contact symmetries.

xseon = 1;

When searching for Lie-Backlund groups it is necessary to differentiate the input equations with respect to all the independent variables to produce derivatives of order p+r. These higher order differential consequences are appended to the set of rules applied to the invariance condition. This process is carried out automatically when internalrules=1. For point groups the equation or equation system is the only rule or set of rules needed and one sets internalrules=0.

internalrules = 0;

Construct the array of rules to be applied to the invariance condition.

rulesarray=
{"D[e1[x,y,z,t],x]->-D[e2[x,y,z,t],y]-D[e3[x,y,z,t],z]",

"D[b1[x,y,z,t],t]->-D[e3[x,y,z,t],y]+D[e2[x,y,z,t],z]",

"D[b2[x,y,z,t],t]->-D[e1[x,y,z,t],z]+D[e3[x,y,z,t],x]",

"D[b3[x,y,z,t],t]->-D[e2[x,y,z,t],x]+D[e1[x,y,z,t],y]",

"D[b1[x,y,z,t],x]->-D[b2[x,y,z,t],y]-D[b3[x,y,z,t],z]",

"D[e1[x,y,z,t],t]->c^2*D[b3[x,y,z,t],y]-c^2*D[b2[x,y,z,t],z]",

"D[e2[x,y,z,t],t]->c^2*D[b1[x,y,z,t],z]-c^2*D[b3[x,y,z,t],x]",

"D[e3[x,y,z,t],t]->c^2*D[b2[x,y,z,t],x]-c^2*D[b1[x,y,z,t],y]"};

Enter the divergence condition on the electric field, E1x+E2y+E3z=0 as a string.

inputequation1="D[e1[x,y,z,t],x]+D[e2[x,y,z,t],y]+D[e3[x,y,z,t],z]";

Enter the equation B1t+E3y-E2z=0 as a string.

inputequation2="D[b1[x,y,z,t],t]+D[e3[x,y,z,t],y]-D[e2[x,y,z,t],z]";

Enter the equation B2t+E1z-E3x=0 as a string.

inputequation3="D[b2[x,y,z,t],t]+D[e1[x,y,z,t],z]-D[e3[x,y,z,t],x]";

Enter the equation B3t+E2x-E1y=0as a string.

\(inputequation4 = "D[b3[x,y,z,t],t]+D[e2[x,y,z,t],x]-D[e1[x,y,z,t],y]";\)

Enter the equation B1x+B2y+B3z=0as a string.

\(inputequation5 = "D[b1[x,y,z,t],x]+D[b2[x,y,z,t],y]+D[b3[x,y,z,t],z]";\)

Enter the equation E1t-c^2*B3y+c^2*B2z=0as a string.

\(inputequation6 = "D[e1[x,y,z,t],t]-c^2*D[b3[x,y,z,t],y]+c^2*D[b2[x,y,z,t],z]";\)

Enter the equation E2t-c^2*B1z+c^2*B3x=0as a string.

\(inputequation7 = "D[e2[x,y,z,t],t]-c^2*D[b1[x,y,z,t],z]+c^2*D[b3[x,y,z,t],x]";\)

Enter the equation E2t-c^2*B2x+c^2*B1y=0 as a string.

inputequation8="D[e3[x,y,z,t],t]-c^2*D[b2[x,y,z,t],x]+c^2*D[b1[x,y,z,t],y]";

Now work out the determining equations of the Lie point group which leaves equation 1 invariant.  The Mathematica function Timing outputs the time  required for the FindDeterminingEquations function  to execute.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation1,rulesarray,internalrules]]

The determiningequations of equation 1.

zdeterminingequations1=zdeterminingequations;

Now work out the determining equations of the  Lie point group which leaves equation 2 invariant.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation2,rulesarray,internalrules]]

The determiningequations of equation 2.

zdeterminingequations2=zdeterminingequations;

Now work out the determining equations of the Lie point group which leaves equation 3 invariant.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation3,rulesarray,internalrules]]

The determiningequations of equation 3.

zdeterminingequations3=zdeterminingequations;

Now work out the determining equations of the Lie point group which leaves equation 4 invariant.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation4,rulesarray,internalrules]]

The determiningequations of equation 4.

zdeterminingequations4=zdeterminingequations;

Now work out the determining equations of the Lie point group which leaves equation 5 invariant.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation5,rulesarray,internalrules]]

The determiningequations of equation 5.

zdeterminingequations5=zdeterminingequations;

Now work out the determining equations of the Lie point group which leaves equation 6 invariant.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation6,rulesarray,internalrules]]

The determiningequations of equation 6.

zdeterminingequations6=zdeterminingequations;

Now work out the determining equations of the Lie point group which leaves equation 7 invariant.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation7,rulesarray,internalrules]]

The determiningequations of equation 7.

zdeterminingequations7=zdeterminingequations;

Now work out the determining equations of the Lie point group which leaves equation 8 invariant.

Timing[FindDeterminingEquations[
independentvariables,dependentvariables,frozennames,p,r,xseon,
inputequation8,rulesarray,internalrules]]

The determiningequations of equation 8.

zdeterminingequations8=zdeterminingequations;

Collect the determining equations together.

zdeterminingequations9=
Join[zdeterminingequations1,
zdeterminingequations2,zdeterminingequations3,
zdeterminingequations4,zdeterminingequations5,
zdeterminingequations6,zdeterminingequations7,
zdeterminingequations8];

How many are there?

Length[zdeterminingequations9]

Here is the correspondence between z-variables and conventional variables.

ztableofrules

Now solve the determining equations in terms of multivariable polynomials of a selected order. The Mathematica function Solve uses Gaussian elimination to solve a large number of linear equations for the polynomial coefficients. The time roughly follows

time/timeref=((number of equations)/(number of equationsref))^n

where the exponent is between 2.4 and 2.7. The Mathematica function Timing outputs the time required for the SolveDeterminingEquations function to execute.

Timing[SolveDeterminingEquations[
independentvariables,dependentvariables,r,xseon,zdeterminingequations9,order=3]]

Note that the solvdeterminingequations function took about an hour on my dual processor 500MHz G4. Here are the infinitesimal transformation functions for the independent variables.

xsefunctions

and for the dependent variables.

etafunctions

infinitesimalgroupsxy = 
        infinitesimalgroups /. 
{z1 -> x, 
            z2 -> y, z3 -> z, z4 -> t, z5 -> e1, 
            z6 -> e2, z7 -> e3, 
z8 -> b1, 
            z9 -> b2,  z10 -> b3};

Check the groups. xse's are on the left, eta's are on the right.

ColumnForm[infinitesimalgroupsxy]

A great many of these groups correspond to polynomial solutions for the electric and magnetic field that can be added to any solution of the Maxwell equations due to the linearity of the Vacuum equations. Drop these terms and focus on the basic group of Maxwell's equations.

infinitesimalgroupsxe1 = 
Drop[
          infinitesimalgroupsxy, {65, 117}];

infinitesimalgroupsxe2 = 
Drop[
          infinitesimalgroupsxe1, {16, 62}];

ColumnForm[infinitesimalgroupsxe2]

This is the classical 17 parameter point group of the Maxwell equations in free space. The first seven operators correspond to the group of coordinate rotations and translations. The next three generate the Lorentz transformation. The next one is a conformal group, the next and the last form a two parameter dilation group.

MaxMemoryUsed[ ]