SamplePublisher`GrassmannCalculus`
FastInteriorEvaluate |
|
| | ||||
Details
Examples
(4)
Basic Examples
(3)
In[1]:=
<<GrassmannCalculus`
In[2]:=
SetBookVectorAssociation |
FastInteriorEvaluate
In[3]:=
step1=⋀⋀⊖⋀step1//
//Timingstep1//
//Timingstep1//
//Timing
e
1
e
2
e
3
e
1
e
3
FastInteriorEvaluate |
ContractInteriorProducts |
ToMetricElements |
Out[3]=
e
1
e
2
e
3
e
1
e
3
Out[3]=
{0.0312002,-}
e
2
Out[3]=
{0.0780005,-}
e
2
Out[3]=
{0.140401,-}
e
2
Here is a slightly longer expression.
In[4]:=
step1=(-6+--6+)⋀⋀⊖⋀step1//
//Timingstep1//
//Timingstep1//
//Timing
e
1
e
2
e
3
e
4
e
5
e
2
e
3
e
1
e
3
FastInteriorEvaluate |
ContractInteriorProducts |
ToMetricElements |
Out[4]=
(-6+--6+)⋀⋀⊖⋀
e
1
e
2
e
3
e
4
e
5
e
2
e
3
e
1
e
3
Out[4]=
{0.0624004,6}
e
2
Out[4]=
{0.109201,6}
e
2
Out[4]=
{0.530403,6}
e
2
This expression is long enough that takes an inordinate time. Here it was timed out at 2 minutes but would actually run much longer.
ToMetricElements
In[5]:=
step1=(-6+--6+)⋀(5--5-5+)⋀(5-6+2+2-4)⊖⋀(-9+-9+-8)step1//
//Timingstep1//
//TimingTimeConstrainedstep1//
,120,"Timed out at 2 minutes."
e
1
e
2
e
3
e
4
e
5
e
1
e
2
e
3
e
4
e
5
e
1
e
2
e
3
e
4
e
5
e
1
e
1
e
2
e
3
e
4
e
5
FastInteriorEvaluate |
ContractInteriorProducts |
ToMetricElements |
Out[5]=
(-6+--6+)⋀(5--5-5+)⋀(5-6+2+2-4)⊖⋀(-9+-9+-8)
e
1
e
2
e
3
e
4
e
5
e
1
e
2
e
3
e
4
e
5
e
1
e
2
e
3
e
4
e
5
e
1
e
1
e
2
e
3
e
4
e
5
Out[5]=
{0.608404,851-427+98+599}
e
2
e
3
e
4
e
5
Out[5]=
{0.717605,851-427+98+599}
e
2
e
3
e
4
e
5
Out[5]=
Timed out at 2 minutes.
The following expression uses a symbolic vector. falls through to . doesn't evaluate at all.
FastInteriorEvaluate
ToMetricElements
ContractInteriorProducts
In[6]:=
step1=p⋀⋀⊖⋀pstep1//
//Timingstep1//
//Timingstep1//
//Timing
e
2
e
3
e
1
FastInteriorEvaluate |
ContractInteriorProducts |
ToMetricElements |
Out[6]=
p⋀⋀⊖⋀p
e
2
e
3
e
1
Out[6]=
{0.202801,-(p⊖)(p⊖)+(p⊖)(p⊖)}
e
1
e
3
e
2
e
1
e
2
e
3
Out[6]=
{0.0468003,〈p⋀⋀,⋀p〉}
e
2
e
3
e
1
Out[6]=
{0.187201,-(p⊖)(p⊖)+(p⊖)(p⊖)}
e
1
e
3
e
2
e
1
e
2
e
3
In[7]:=
★ℬ |
5
DeclareMetric |
The following is a typical usage.
In[8]:=
e
1
e
4
e
5
e
1
e
5
FastInteriorEvaluate |
Out[8]=
e
1
e
4
e
5
e
1
e
5
Out[8]=
-
e
4
The following is zero because it would result in a negative grade.
In[9]:=
e
1
e
1
e
5
FastInteriorEvaluate |
Out[9]=
e
1
e
1
e
5
Out[9]=
0
Interior products that are not strictly in terms of basis elements fall through to
ToMetricElements.
In[10]:=
e
1
e
2
e
3
e
4
e
5
FastInteriorEvaluate |
Out[10]=
e
1
e
2
e
3
e
4
e
5
Out[10]=
(-(p⊖)(q⊖)+(p⊖)(q⊖))⋀⋀+((p⊖)(q⊖)-(p⊖)(q⊖))⋀⋀+(-(p⊖)(q⊖)+(p⊖)(q⊖))⋀⋀+(-(p⊖)(q⊖)+(p⊖)(q⊖))⋀⋀+((p⊖)(q⊖)-(p⊖)(q⊖))⋀⋀+(-(p⊖)(q⊖)+(p⊖)(q⊖))⋀⋀+((p⊖)(q⊖)-(p⊖)(q⊖))⋀⋀+(-(p⊖)(q⊖)+(p⊖)(q⊖))⋀⋀+((p⊖)(q⊖)-(p⊖)(q⊖))⋀⋀+(-(p⊖)(q⊖)+(p⊖)(q⊖))⋀⋀
e
5
e
4
e
4
e
5
e
1
e
2
e
3
e
5
e
3
e
3
e
5
e
1
e
2
e
4
e
4
e
3
e
3
e
4
e
1
e
2
e
5
e
5
e
2
e
2
e
5
e
1
e
3
e
4
e
4
e
2
e
2
e
4
e
1
e
3
e
5
e
3
e
2
e
2
e
3
e
1
e
4
e
5
e
5
e
1
e
1
e
5
e
2
e
3
e
4
e
4
e
1
e
1
e
4
e
2
e
3
e
5
e
3
e
1
e
1
e
3
e
2
e
4
e
5
e
2
e
1
e
1
e
2
e
3
e
4
e
5
Create a generic metric matrix.
In[1]:=
DeclareMetric |
Out[1]//MatrixForm=
g 1,1 | g 1,2 | g 1,3 | g 1,4 | g 1,5 |
g 1,2 | g 2,2 | g 2,3 | g 2,4 | g 2,5 |
g 1,3 | g 2,3 | g 3,3 | g 3,4 | g 3,5 |
g 1,4 | g 2,4 | g 3,4 | g 4,4 | g 4,5 |
g 1,5 | g 2,5 | g 3,5 | g 4,5 | g 5,5 |
The contraction will now generally have components in all basis elements of the contracted grade.
In[2]:=
e
1
e
4
e
5
e
1
e
5
FastInteriorEvaluate |
ToMetricElements |
Out[2]=
e
1
e
4
e
5
e
1
e
5
Out[2]=
e
5
g
1,4
g
1,5
g
1,1
g
4,5
e
4
2
g
1,5
g
1,1
g
5,5
e
1
g
1,5
g
4,5
g
1,4
g
5,5
Out[2]=
e
5
g
1,4
g
1,5
g
1,1
g
4,5
e
4
2
g
1,5
g
1,1
g
5,5
e
1
g
1,5
g
4,5
g
1,4
g
5,5
Here we run the contraction of all GrassmannBases on the basis 5-element with the general metric.
In[3]:=
Timing
[(⋀⋀⋀⋀)⊖#]&/@Flatten
;
FastInteriorEvaluate |
e
1
e
2
e
3
e
4
e
5
GrassmannBases |
Out[3]=
{0.920406,Null}
ToMetricElements
For a point basis we will obtain a form of answer that does not use , which significantly increases the time.
ToPointForm
In[1]:=
★ |
4
DeclareMetric |
In[2]:=
(★⋀⋀⋀)⊖(⋀)test1a=%//
//Timingtest1b=%%//
//Timingtest1atest1b//
Wedge,_?
//Simplify
e
1
e
2
e
4
e
1
e
3
FastInteriorEvaluate |
ToMetricElements |
GrassmannBreakout |
BasisSymbolQ |
Out[2]=
★⋀⋀⋀⊖⋀
e
1
e
2
e
4
e
1
e
3
Out[2]=
{0.0312002,(-+)★⋀-(-+)★⋀+(-+)★⋀}
g
1,4
g
2,3
g
1,2
g
3,4
e
1
g
1,3
g
1,4
g
1,1
g
3,4
e
2
g
1,2
g
1,3
g
1,1
g
2,3
e
4
Out[2]=
{0.436803,★⋀((-+)+(-)+(-+))}
e
4
g
1,2
g
1,3
g
1,1
g
2,3
e
2
g
1,3
g
1,4
g
1,1
g
3,4
e
1
g
1,4
g
2,3
g
1,2
g
3,4