GrassmannCalculus`
ComposeLineElement |
|
| | ||||
|
| | ||||
Details and Options
Examples
(1)
Basic Examples
(1)
In[1]:=
<<GrassmannCalculus`
Set the book Point 3-dimensional space.
In[2]:=
★A;
;
★ |
3
Compare a point, vector, simple bivector and a line element in 3-space.
In[3]:=
MapThreadRow[{#1,#2[c]}]&,{"Point: ","Vector: ","Simple Bivector: ","Line Element: "},
,
,
,
//Column
ComposePoint |
ComposeVector |
ComposeSimpleBivector |
ComposeLineElement |
Out[3]=
Point: ★+ c 1 e 1 c 2 e 2 c 3 e 3 |
Vector: c 1 e 1 c 2 e 2 c 3 e 3 |
Simple Bivector: ( c 1 e 1 c 2 e 2 c 3 e 3 c 4 e 1 c 5 e 2 c 6 e 3 |
Line Element: (★+ c 1 e 1 c 2 e 2 c 3 e 3 c 4 e 1 c 5 e 2 c 6 e 3 |
You can use the full form of , or its alias .
ComposeLineElement[c]
★
c
In[4]:=
★A;
;
[c]
//Column
★ |
3
ComposeLineElement |
,
★ |
c
Out[4]=
(★+ c 1 e 1 c 2 e 2 c 3 e 3 c 4 e 1 c 5 e 2 c 6 e 3 |
(★+ c 1 e 1 c 2 e 2 c 3 e 3 c 4 e 1 c 5 e 2 c 6 e 3 |
The current space needs to be a point space. If it is not, no composition will occur.
In[5]:=
;
,
;
//Column
★ℬ |
3
★ |
a
★ |
3
★ |
a
Out[5]=
ComposeLineElement[a] |
(★+ a 1 e 1 a 2 e 2 a 3 e 3 a 4 e 1 a 5 e 2 a 6 e 3 |
You can compose line elements in any dimension.
In[6]:=
Table
;
,{i,1,4}//Column
★ |
i
★ |
c
Out[6]=
(★+c e 1 c 2 e 1 |
(★+ c 1 e 1 c 2 e 2 c 3 e 1 c 4 e 2 |
(★+ c 1 e 1 c 2 e 2 c 3 e 3 c 4 e 1 c 5 e 2 c 6 e 3 |
(★+ c 1 e 1 c 2 e 2 c 3 e 3 c 4 e 4 c 5 e 1 c 6 e 2 c 7 e 3 c 8 e 4 |
You can compose lists of line elements.
In[7]:=
★ |
2
★ |
{a,b,c}
Out[7]=
(★+ a 1 e 1 a 2 e 2 a 3 e 1 a 4 e 2 |
(★+ b 1 e 1 b 2 e 2 b 3 e 1 b 4 e 2 |
(★+ c 1 e 1 c 2 e 2 c 3 e 1 c 4 e 2 |
You can make the starting index of the coefficients whatever you want.
In[8]:=
★ |
{a,b,c},0
Out[8]=
(★+ a 0 e 1 a 1 e 2 a 2 e 1 a 3 e 2 |
(★+ b 0 e 1 b 1 e 2 b 2 e 1 b 3 e 2 |
(★+ c 0 e 1 c 1 e 2 c 2 e 1 c 3 e 2 |
In[9]:=
★ |
{a,b,c},{-2,0,α}
Out[9]=
(★+ a -2 e 1 a -1 e 2 a 0 e 1 a 1 e 2 |
(★+ b 0 e 1 b 1 e 2 b 2 e 1 b 3 e 2 |
(★+ c α e 1 c 1+α e 2 c 2+α e 1 c 3+α e 2 |
Note that all the scalar symbols generated as coefficients of the basis elements have been automatically declared as scalar symbols.
In[10]:=
ScalarSymbols
Out[10]=
{a,b,c,d,e,f,g,h,,,,,,,,,,,,,,,,,,,,,}
a
-2
a
-1
a
0
a
1
a
2
a
3
a
4
b
0
b
1
b
2
b
3
b
4
c
0
c
1
c
2
c
3
c
4
c
α
c
1+α
c
2+α
c
3+α
You can also generate templates for line elements using the placeholder symbol. This allows you to tab through the composed result and enter your own values
In[11]:=
★ |
4
★ |
|
Out[11]=
(★++++)⋀(+++)
e
1
e
2
e
3
e
4
e
1
e
2
e
3
e
4
Then that could be copied, filled and assigned to a bivector.
In[12]:=
line1=(★+2+6+-1+0)⋀(a+b+c+d)
e
1
e
2
e
3
e
4
e
1
e
2
e
3
e
4
Out[12]=
(★+2+6-)⋀(a+b+c+d)
e
1
e
2
e
3
e
1
e
2
e
3
e
4
Subscripted scalars are convenient for generic derivations. For specific cases it will often be easier simply to dot with Lists of coefficients in an exterior product.
Basis
In[13]:=
line1=({1,2,6,-1,0}.Basis)⋀({0,a,b,c,d}.Basis)
Out[13]=
(★+2+6-)⋀(a+b+c+d)
e
1
e
2
e
3
e
1
e
2
e
3
e
4
In[14]:=
Clear[line1]
|
""

