Computer implementation and computer algebra
[15/100%]Give an efficient implementation of a group in C++ and LISP. For C++ use map<pair<G,G>,G> or map<G,map<G,G> > from the Standard Template Library. The map class in C++ implements a many to one relationship between keys and values. The map class is a template class map<keytype,valuetype> which can be used in similar way to arrays, i.e. m[key]=value. Consider for example the simplest non-trivial group with group operation given by and .
Consider the permutation group . Write a C++ program for the composition of the group elements using the map class of the Standard Template Library. Then implement the inverse of each group element. Finally we determine the conjugacy classes. The group consists of six elements which we denote by . The neutral (identity) element is denoted by . Thus we have
for .
Consider the matrix
where , , . Write a Computer algebra program in SymbolicC++ that calculates
and thus finds the generators
Thus
Let . Given the matrix
Write a SymbolicC++ program that calculates the vector
and shows that is invariant.
Let be a three dimensional Lie algebra with basis and the commutation relations (simple Lie algebra )
Write a SymbolicC++ program to test whether the Jacobi identity is satisfied.
Let be a three dimensional Lie algebra with basis and the commutation relations (solvable Lie algebra)
Write a SymbolicC++ program to test whether the Jacobi identity is satisfied.
Let be a Lie algebra. One analyzes the structure of a Lie algebra by studying its ideals. A subspace of a Lie algebra is called an ideal of if and together imply . If has no ideals except itself and 0, and if moreover we call the Lie algebra simple.
If is a Lie algebra and , the operator that maps to is a linear transformation of into itself
Then is a representation of the Lie algebra with itself considered as the vector space of the representation. The Killing form of a Lie algebra is the symmetric bilinear form
where denotes the trace. If () form a basis of then
is called the metric tensor for . Note that a Lie algebra is semisimple if and only if the matrix is nonsingular, i.e., .
We consider the simple Lie algebra with the basis elements and the commutation relations
We find
Write a SymbolicC++ program that calculates the metric tensor for this Lie algebra using a two-dimensional array comm(i,j) to store the commutators, and determines whether the Lie algebra is semisimple.
Let be a semi-group of permutations on the set . A semi-group is closed under the group operation, but the inverse and identity need not be a member of the set. The transitivity set (or orbit) containing is the set of images under the action of products of elements of . Write a C++ program which finds the orbits given and .
Let denote the braid group on strands. is generated by the elementary braids (generators) with the braid relations
Actually one should better write instead of . Let denote the standard basis in . Then can be written as
Consider the operators ( and ) defined by
and the corresponding inverse operation
Use computer algebra to show that satisfy the braid condition
if
Write a C++ program that generates all permutation matrices. In main we use these matrices to find the permutation matrix that satisfies
where is the direct sum.
Let be a positive integer. There are exactly as many irreducible representations of the permutation group as there are partitions of
For example for we have the 5 partitions 4000 3100 2200 2110 1111 Let be positive integers. The number of partitions can be found from the recursion
Give a C++ implementation of this recursion.
Give a recursive implementation to find the partitions.
A number of Hamilton systems can be written in the form
where and are time-dependent matrices. This is called the Lax representation of the Hamilton system. We find that
and the that () are first integrals. Consider the Hamilton function (Toda lattice)
Introducing the quantities
and cyclic boundary conditions (i.e., ) we find that the Hamilton equations of motion take the form (with )
where . Introducing the matrices (Lax pair)
the equations of motion can be written as Lax representation. From we find the first integral as , where , where denotes the trace. We obtain
Write a SymbolicC++ program lax.cpp that finds and shows that , and the determinant of are first integrals.
The -qubit Pauli group is defined by
where are the Pauli matrices and is the identity matrix. The dimension of the Hilbert space under consideration is . Thus each element of the Pauli group is (up to an overall phase ) a Kronecker product of Pauli matrices and identity matrices acting on qubits. The order of the Pauli group is . Thus for we have the order 16. For we have order 64. Write a SymbolicC++ program that implements the Pauli group for .
Let be Bose creation operator and let be the identity operator. The semi-simple Lie algebra is generated by
with the commutation relations
We use the ordering for the basis. Write a computer algebra program that finds the ajoint representation for the Lie algebra.
The exceptional Lie algebra has rank 2 and dimension 14. A basis is given by
with the commutation relations and
Thus
Thus and each span the sub Lie algebra of . The commutator table for (Table 4.1) is, where entry gives for and is left blank (not part of the table) otherwise:
Note that is a sub Lie algebra of . Write a SymbolicC++ program that finds the adjoint representation.
Let be Bose annihilation operators. Show that
are a representation of the Lie algebra . Write a SymbolicC++ program that implements this representation.