|
|
|
last edited 15 years ago by Bill Page |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ||
|
Editor: Bill Page
Time: 2011/02/17 17:22:33 GMT-8 |
||
| Note: Y-forms: deer | ||
changed: - Y ) ( Y Y ) ( Y changed: - i j j i - \/ 0 0 \/ - \ / \ / \ / - e f \ / f e - \/ \ / \/ - \ / \ / - \ / \ / - \ / \ / - 0 0 i j j i \/ \/ \ /\ /\ / e f \ / f e \/ \ / \/ \ / \ / f / \ f \/ \/ changed: -LS = \{ {y^f}_{fe} {y^e}_{ji} \} -\end{equation} - -\begin{axiom} -LS=contract(Y*Y,1,2) -RS=reindex(contract(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),1,2),[2,1]) RS = \{ {y^f}_{fe} {y^e}_{ji} \} \end{equation} \begin{axiom} LS:=contract(Y*Y,1,2) RS:=reindex(contract(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),1,2),[2,1]) added: Left and right deer:: LD RD \ /\/ \/\ / Y /\ /\ Y Y ) ( Y \/ \/ i j i j \ /\ / \ /\ / \ f \ / \ / f / \/ \/ \/ \/ \ /\ /\ / e / \ / \ e \/ \ / \/ \ / \ / f / \ f \/ \/ \begin{equation} LD = \{ {y^e}_{if} {y^f}_{ej} \} \ RD = \{ {y^f}_{ie} {y^e}_{fj} \} \end{equation} \begin{axiom} LD:=contract(Y*Y,1,3) RD:=reindex(contract(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),1,3),[2,1]) test(LD=RD) \end{axiom}
References
Especially "Tensor calculus (linear algebra in coordinates)" in section 2.3.31, page 123.
See also:
An n-dimensional algebra is represented by a (2,1)-tensor
viewed as an operator with two inputs
and one
output
. For example in 2 dimensions
(1) -> n:=2
| (1) |
T:=CartesianTensor(1,n, FRAC POLY INT)
| (2) |
Y:T := unravel(concat concat [[[script(y,[[i, j], [k]]) for i in 1..n] for j in 1..n] for k in 1..n] )
![]() | (3) |
Given two vectors
and
P:T := unravel([script(p,[[], [i]]) for i in 1..n])
| (4) |
Q:T := unravel([script(q,[[], [i]]) for i in 1..n])
| (5) |
the tensor
operates on their tensor product to
yield a vector
R:=contract(contract(Y,3, product(P, Q), 1), 2, 3)
![]() | (6) |
Pictorially:
P Q
Y
R
or more explicitly
Pi Qj
\/
\
Rk
In Axiom we may use the more convenient tensor inner
product denoted by * that combines tensor product with
a contraction on the last index of the first tensor and
the first index of the second tensor.
R:=(Y*P)*Q
![]() | (7) |
An algebra is said to be associative if:
Y = Y Y Y
Note: the right hand side of the equation above is implicitly the mirror image of the left hand side:
i j k i j k i j k
\ | / \/ / \ \/
\ | / \ / \ /
\|/ = e k - i e
| \/ \/
| \ /
l l l
This requires that the following (3,1)-tensor
| (8) |
YY := reindex(reindex(Y,[1, 3, 2])*reindex(Y, [1, 3, 2]), [1, 4, 3, 2])-Y*Y; ravel(YY)
![]() | (9) |
The algebra
is commutative if:
Y = Y
i j i j j i
\ / = \/ - \/
| \ /
k k k
This requires that the following (2,1)-tensor
| (10) |
YC:=Y-reindex(Y,[1, 3, 2])
![]() | (11) |
A basis for the ideal defined by the coefficients of the commutator is given by:
groebner(ravel(YC))
| (12) |
The algebra
is anti-commutative if:
Y = -Y
i j i j j i
\ / = \/ = \/
| \ /
k k k
This requires that the following (2,1)-tensor
| (13) |
YA:=Y+reindex(Y,[1, 3, 2])
![]() | (14) |
A basis for the ideal defined by the coefficients of the commutator is given by:
groebner(ravel(YA))
| (15) |
The Jacobi identity is:
X
Y = Y + Y
Y Y Y
i j k i j k i j k i j k
\ | / \ / / \ \ / \ \ /
\ | / \ / / \ \ / \ 0
\ | / \/ / \ \/ \/ \
\ | / \ / \ / \ \
\|/ = e k - i e - e j
| \/ \/ \/
| \ / /
l l l l
An algebra satisfies the Jacobi identity if and only if the following (3,1)-tensor
| (16) |
YX := YY - reindex(contract(Y,1, Y, 2), [3, 1, 4, 2]); ravel(YX)
![]() | (17) |
A scalar product is denoted by the (2,0)-tensor
U:T := unravel(concat [[script(u,[[], [j, i]]) for i in 1..n] for j in 1..n] )
| (18) |
We say that the scalar product is associative if the tensor equation holds:
Y = Y
U U
In other words, if the (3,0)-tensor:
i j k i j k i j k
\ | / \/ / \ \/
\|/ = \ / - \ /
0 0 0
| (19) |
YU := reindex(reindex(U,[2, 1])*reindex(Y, [1, 3, 2]), [3, 2, 1])-U*Y
![]() | (20) |
An algebra with a non-degenerate associative scalar product is called pre-Frobenius.
We may consider the problem where multiplication Y is given,
and look for all associative scalar products
or we
may consider an scalar product U as given, and look for all
algebras
such that the scalar product is associative.
This problem can be solved using linear algebra.
)expose MCALCFN
MultiVariableCalculusFunctions is now explicitly exposed in frame initial K := jacobian(ravel(YU),concat(map(variables, ravel(Y)))::List Symbol);
yy := transpose matrix [concat(map(variables,ravel(Y)))::List Symbol];
K::OutputForm * yy::OutputForm = 0
![]() | (21) |
The matrix K transforms the coefficients of the tensor
into coefficients of the tensor
. We are looking for
coefficients of the tensor
such that K transforms the
tensor
into
for any
.
A necessary condition for the equation to have a non-trivial
solution is that the matrix K be degenerate.
All 2-dimensional pre-Frobenius algebras are symmetric.
Proof: Consider the determinant of the matrix K above.
Kd := factor(determinant(K)::DMP(concat map(variables,ravel(U)), FRAC INT))
| (22) |
The scalar product must also be non-degenerate
Ud:DMP(concat map(variables,ravel(U)), FRAC INT) := determinant [[U[i, j] for j in 1..n] for i in 1..n]
| (23) |
therefore U must be symmetric.
nthFactor(Kd,1)
There are no exposed library operations named nthFactor but there are 3 unexposed operations with that name. Use HyperDoc Browse or issue )display op nthFactor to learn more about the available operations.
Cannot find a definition or applicable library operation named nthFactor with argument type(s) Factored(DistributedMultivariatePolynomial([u[;1,1], u[;1, 2], u[;2, 1], u[;2, 2]], Fraction(Integer))) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
All 2-dimensional algebras with associative scalar product are commutative.
Proof: The basis of the null space of the symmetric
K matrix are all symmetric
YUS:T := reindex(reindex(US,[2, 1])*reindex(Y, [1, 3, 2]), [3, 2, 1])-US*Y
>> Error detected within library code: The list is not a permutation.
This defines a 4-parameter family of 2-d pre-Frobenius algebras
test(unravel(map(x+->subst(x,SS), ravel YUS))$T=0*YU)
There are 3 exposed and 0 unexposed library operations named subst having 2 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op subst 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 subst with argument type(s) Fraction(Polynomial(Integer)) Variable(SS)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need. FriCAS will attempt to step through and interpret the code.
Anonymous user functions created with +-> that are processed in interpret-code mode must have result target information available. This information is not present so FriCAS cannot proceed any further. This may be remedied by declaring the function.
Alternatively we may consider
J := jacobian(ravel(YU),concat(map(variables, ravel(U)))::List Symbol);
uu := transpose matrix [concat(map(variables,ravel(U)))::List Symbol];
J::OutputForm * uu::OutputForm = 0
![]() | (24) |
The matrix J transforms the coefficients of the tensor
into coefficients of the tensor
. We are looking for
coefficients of the tensor
such that J transforms the
tensor
into
for any
.
A necessary condition for the equation to have a non-trivial
solution is that all 70 of the 4x4 sub-matrices of J are
degenerate. To this end we can form the polynomial ideal of
the determinants of these sub-matrices.
JP:=ideal concat concat concat
[[[[ determinant(
matrix([row(J, i1), row(J, i2), row(J, i3), row(J, i4)]))
for i4 in (i3+1)..maxRowIndex(J) ]
for i3 in (i2+1)..(maxRowIndex(J)-1) ]
for i2 in (i1+1)..(maxRowIndex(J)-2) ]
for i1 in minRowIndex(J)..(maxRowIndex(J)-3) ];
#generators(%)
| (25) |
If a 2-d algebra is associative, commutative, anti-commutative or if it satisfies the Jacobi identity then it is a pre-Frobenius algebra.
Proof
in?(JP,ideal ravel YY) -- associative
| (26) |
in?(JP,ideal ravel YC) -- commutative
| (27) |
in?(JP,ideal ravel YA) -- anti-commutative
| (28) |
in?(JP,ideal ravel YX) -- Jacobi identity
| (29) |
Y-forms
Left snail and right snail:
LS RS
Y A A Y
Y ) ( Y
U U
i j j i
\/ \/
\ /\ /\ /
e f \ / f e
\/ \ / \/
\ / \ /
f / \ f
\/ \/
| (30) |
LS:=contract(Y*Y,1, 2)
![]() | (31) |
RS:=reindex(contract(reindex(Y,[1, 3, 2])*reindex(Y, [1, 3, 2]), 1, 2), [2, 1])
![]() | (32) |
test(LS=RS)
| (33) |
Left and right deer:
LD RD
\ /\/ \/\ /
Y /\ /\ Y
Y ) ( Y
\/ \/
i j i j
\ /\ / \ /\ /
\ f \ / \ / f /
\/ \/ \/ \/
\ /\ /\ /
e / \ / \ e
\/ \ / \/
\ / \ /
f / \ f
\/ \/
| (34) |
LD:=contract(Y*Y,1, 3)
![]() | (35) |
RD:=reindex(contract(reindex(Y,[1, 3, 2])*reindex(Y, [1, 3, 2]), 1, 3), [2, 1])
![]() | (36) |
test(LD=RD)
| (37) |