In [1]:
from sympy import * 
init_printing()
from galgebra.ga import Ga

def augment(ga,sym='n',sig=1):
    '''
    augments an existing Geometric Algebra by a single dimension of specified
    signature
    '''
    
    g = ga.g
    g_proj =  eye(len(ga.basis)+1)*sig
    for m in range(0,shape(g)[0]):
        for n in range(0,shape(g)[1]):
            g_proj[m,n] = g[m,n]
    basis = ' '.join([str(k) for k in ga.basis] +[sym])
    
    
    GA =  Ga(basis, g=g_proj) 
    GA.ga_orginal = ga
    return GA

In [3]:
affine =  lambda ga: augment(ga, 'n',0)
projective = lambda ga: augment(ga, 'n',1)
conformal = lambda ga: augment(augment(ga, 'n_+',1),'n_-',-1)

In [5]:
# euclidean geometries
ge2 = Ga('e1 e2',g=[1,1])
ge3 = Ga('e1 e2 e3',g=[1,1,1])

# projective  geometries 
gp2 = projective(ge2)
gp3 = projective(ge3)

# conformal  geometries 
gc2 = conformal(ge2)
gc3 = conformal(ge3)

In [6]:
gc3.mv('x', 'vector')


Out[6]:
\begin{equation*} x = x^{1} e_{1} + x^{2} e_{2} + x^{3} e_{3} + x^{4} n_{+} + x^{5} n_{-} \end{equation*}

In [7]:
gp2.mv('p','vector')


Out[7]:
\begin{equation*} p = p^{1} e_{1} + p^{2} e_{2} + p^{3} n \end{equation*}

In [22]:
alpha=ge3.mv('alpha','scalar')
a=ge3.mv('a','vector')
B = ge3.mv('B','bivector')

In [31]:
R = alpha+B
R


Out[31]:
\begin{equation*} \alpha + B^{12} e_{1}\wedge e_{2} + B^{13} e_{1}\wedge e_{3} + B^{23} e_{2}\wedge e_{3} \end{equation*}

In [32]:
e1,e2,e3 = ge3.mv()
e12= e1*e2
e12*a*e12


Out[32]:
\begin{equation*} a^{1} e_{1} + a^{2} e_{2} - a^{3} e_{3} \end{equation*}

In [33]:
-e3*a*e3


Out[33]:
\begin{equation*} a^{1} e_{1} + a^{2} e_{2} - a^{3} e_{3} \end{equation*}

In [36]:
I = e1*e2*e3
I


Out[36]:
\begin{equation*} e_{1}\wedge e_{2}\wedge e_{3} \end{equation*}

In [41]:
I*e3


Out[41]:
\begin{equation*} e_{1}\wedge e_{2} \end{equation*}

In [29]:
b = R*a*R.rev()
b


Out[29]:
\begin{equation*} \left ( - {\left ( B^{12} \right )}^{2} a^{1} + 2 B^{12} B^{23} a^{3} + 2 B^{12} a^{2} \alpha - {\left ( B^{13} \right )}^{2} a^{1} - 2 B^{13} B^{23} a^{2} + 2 B^{13} a^{3} \alpha + {\left ( B^{23} \right )}^{2} a^{1} + a^{1} \alpha ^{2}\right ) e_{1} + \left ( - {\left ( B^{12} \right )}^{2} a^{2} - 2 B^{12} B^{13} a^{3} - 2 B^{12} a^{1} \alpha + {\left ( B^{13} \right )}^{2} a^{2} - 2 B^{13} B^{23} a^{1} - {\left ( B^{23} \right )}^{2} a^{2} + 2 B^{23} a^{3} \alpha + a^{2} \alpha ^{2}\right ) e_{2} + \left ( {\left ( B^{12} \right )}^{2} a^{3} - 2 B^{12} B^{13} a^{2} + 2 B^{12} B^{23} a^{1} - {\left ( B^{13} \right )}^{2} a^{3} - 2 B^{13} a^{1} \alpha - {\left ( B^{23} \right )}^{2} a^{3} - 2 B^{23} a^{2} \alpha + a^{3} \alpha ^{2}\right ) e_{3} \end{equation*}

asfeas


In [31]:
ge3,e1,e2,e3 = Ga.build('e1 e2 e3',g=[1,1,1])

In [39]:
a= ge3.mv('a','vector')
b= ge3.mv('b','vector')


Out[39]:
\begin{equation*} \left ( - a^{2} b^{3} + a^{3} b^{2}\right ) e_{1} + \left ( a^{1} b^{3} - a^{3} b^{1}\right ) e_{2} + \left ( - a^{1} b^{2} + a^{2} b^{1}\right ) e_{3} \end{equation*}

In [36]:
e12 = e1*e2
e13 = e1*e3
e13.dual()


Out[36]:
\begin{equation*} e_{2} \end{equation*}

In [20]:
import galge


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-20-2179ae459fe1> in <module>()
----> 1 galgebra

NameError: name 'galgebra' is not defined

In [ ]: