|
|
|
last edited 12 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 ;-).