|
|
last edited 11 years ago by test1 |
1 2 3 4 5 6 7 8 9 | ||
Editor: Bill Page
Time: 2009/11/03 15:32:07 GMT-8 |
||
Note: embedded some LaTeX formatting |
changed: -and this is plainly wrong. Eg f13 = 1/2*e(1)*e(3) - 1/2*(e(3)/\e(1)+ B(e3,e1)) and further simplification leads to -f12 = 1/2* e(1)*e(3) +1/2*( e(1)/\e(3) - B(e1,e3)) = e(1)*e(3) - 1/2*B(e1,e3) and all these off diagonal contraction -terms are missing in the basis. Hence the AXIOM(TM) CliffordAlegbra domain works only in the basis of generators and this is plainly wrong. Eg \begin{equation} f_{13} = \frac{1}{2}\ e_1 e_3 - \frac{1}{2} \ (e_3 \wedge e_1 + B(e_3,e_1)) \end{equation} and further simplification leads to \begin{eqnarray} f_{13} &=& \frac{1}{2} \ e_1 e_3 + \frac{1}{2} \ ( e_1 \wedge e_3 - B(e_1,e_3)) \\ &=& e_1 e_3 - \frac{1}{2} \ B(e_1,e_3) \end{eqnarray} and all these off diagonal contraction terms are missing in the basis. Hence the $\text{AXIOM}^{TM}$ CliffordAlgebra domain works only in the basis of generators added:
We want to test some properties of the CliffordAlgebra? domain implemented in AXIOM(TM)
diagMat:=matrix[[1,0, 0], [0, 1, 0], [0, 0, 1]]
(1) |
dq := quadraticForm diagMat
(2) |
CLDQ := CliffordAlgebra(3,Fraction(Integer), dq)
Cannot convert from type QuadraticForm(3,Fraction(Integer)) to SquareMatrix(3, Fraction(Integer)) for value +1 0 0+ | | |0 1 0| | | +0 0 1+
CLDQ contains now the Clifford algebra constructor for the Clifford algebra CL(R^3,Q) where dq is the diagonal quadratic form in the basis of generators ei=e(i)
basGen: List CLDQ :=[1,e(1), e(2), e(1)*e(2), e(3), e(1)*e(3), e(2)*e(3), e(1)*e(2)*e(3)]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
And we can now compute within this basis
elem1: CLDQ :=2*e(1)+e(2)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. elem2: CLDQ :=1/2+e(2)+3*e(1)*e(3)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. elem1*elem2
(3) |
which is fine.
Lets now see what happens if we change the basis. We define new generators
f1:CLDQ := e(1)-e(2)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. f2:CLDQ := e(2)-e(3)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. f3:CLDQ := e(1)+e(2)+e(3)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. lstFGen: List CLDQ := [f1, f2, f3]
Cannot convert right-hand side of assignment [f1,f2, f3]
to an object of the type List(NIL) of the left-hand side.
and check what the new defining relations are
matrix [[y*x for x in lstFGen] for y in lstFGen]
lstFGen is declared as being in List(NIL) but has not been given a value.
However, let us do the same calculations with another, symmetric but not diagonal quadratic form
offDiagMat:=matrix[[0,0, 1], [0, 1, 0], [1, 0, 0]]
(4) |
odq := quadraticForm offDiagMat
(5) |
CLODQ := CliffordAlgebra(3,Fraction(Integer), odq)
Cannot convert from type QuadraticForm(3,Fraction(Integer)) to SquareMatrix(3, Fraction(Integer)) for value +0 0 1+ | | |0 1 0| | | +1 0 0+
basGenO: List CLODQ :=[1,e(1), e(2), e(1)*e(2), e(3), e(1)*e(3), e(2)*e(3), e(1)*e(2)*e(3)]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. basO: List CLODQ :=[e(1), e(2), e(3)]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
and let us check the multiplication table on the basis and in general:
matrix [[y*x for x in basO] for y in basO]
basO is declared as being in List(NIL) but has not been given a value. matrix [[y*x for x in basGenO] for y in basGenO]
basGenO is declared as being in List(NIL) but has not been given a value.
which is irritating, since the Clifford product is just unevaluated
, hence the
basis elements are generated by Cliffrord products. We would like to see this more
explicit in the Grassmann basis, which we define as follows:
f12: CLODQ := 1/2*( e(1)*e(2)-e(2)*e(1) )
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. f13: CLODQ := 1/2*( e(1)*e(3)-e(3)*e(1) )
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. f23: CLODQ := 1/2*( e(2)*e(3)-e(3)*e(2) )
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. f123: CLODQ := 1/3*( f12*e(3)$CLODQ- f13*e(2)$CLODQ + f23*e(1)$CLODQ ) -- need this od $CLODQ
The function e is not implemented in NIL . fbasis:List CLODQ :=[ 1,e(1), e(2), f12 , e(3), f13 , f23, f123 ]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
(6) |
(7) |
Actually this calls for a new domain CliffordAlgebra? which does it right ;-).