def derivatives_in_toroidal_coordinates(): Print_Function() a = symbols('a', real=True) coords = (u, v, phi) = symbols('u v phi', real=True) (t3d, eu, ev, ephi) = Ga.build('e_u e_v e_phi', X=[ a * sinh(v) * cos(phi) / (cosh(v) - cos(u)), a * sinh(v) * sin(phi) / (cosh(v) - cos(u)), a * sin(u) / (cosh(v) - cos(u)) ], coords=coords, norm=True) grad = t3d.grad f = t3d.mv('f', 'scalar', f=True) A = t3d.mv('A', 'vector', f=True) B = t3d.mv('B', 'bivector', f=True) print('f =', f) print('A =', A) print('B =', B) print('grad*f =', grad * f) print('grad|A =', grad | A) print('-I*(grad^A) =', -t3d.i * (grad ^ A)) print('grad^B =', grad ^ B) return
def properties_of_geometric_objects(): global n,nbar Print_Function() metric = '# # # 0 0,'+ \ '# # # 0 0,'+ \ '# # # 0 0,'+ \ '0 0 0 0 2,'+ \ '0 0 0 2 0' (p1,p2,p3,n,nbar) = MV.setup('p1 p2 p3 n \\bar{n}',metric) print('g_{ij} =',MV.metric) P1 = F(p1) P2 = F(p2) P3 = F(p3) print('#%\\text{Extracting direction of line from }L = P1\\W P2\\W n') L = P1^P2^n delta = (L|n)|nbar print('(L|n)|\\bar{n} =',delta) print('#%\\text{Extracting plane of circle from }C = P1\\W P2\\W P3') C = P1^P2^P3 delta = ((C^n)|n)|nbar print('((C^n)|n)|\\bar{n}=',delta) print('(p2-p1)^(p3-p1)=',(p2-p1)^(p3-p1)) return
def derivatives_in_oblate_spheroidal_coordinates(): Print_Function() a = symbols('a', real=True) coords = (xi, eta, phi) = symbols('xi eta phi', real=True) (os3d, er, eth, ephi) = Ga.build('e_xi e_eta e_phi', X=[ a * cosh(xi) * cos(eta) * cos(phi), a * cosh(xi) * cos(eta) * sin(phi), a * sinh(xi) * sin(eta) ], coords=coords, norm=True) grad = os3d.grad f = os3d.mv('f', 'scalar', f=True) A = os3d.mv('A', 'vector', f=True) B = os3d.mv('B', 'bivector', f=True) print('f =', f) print('A =', A) print('B =', B) print('grad*f =', grad * f) print('grad|A =', grad | A) print('-I*(grad^A) =', -os3d.i * (grad ^ A)) print('grad^B =', grad ^ B) return
def Dirac_Equation_in_Geom_Calculus(): Print_Function() coords = symbols('t x y z', real=True) (st4d, g0, g1, g2, g3) = Ga.build('gamma*t|x|y|z', g=[1, -1, -1, -1], coords=coords) I = st4d.i (m, e) = symbols('m e') psi = st4d.mv('psi', 'spinor', f=True) A = st4d.mv('A', 'vector', f=True) sig_z = g3 * g0 print('\\text{4-Vector Potential\\;\\;}\\bm{A} =', A) print('\\text{8-component real spinor\\;\\;}\\bm{\\psi} =', psi) dirac_eq = (st4d.grad * psi) * I * sig_z - e * A * psi - m * psi * g0 dirac_eq = dirac_eq.simplify() print( dirac_eq.Fmt( 3, r'%\text{Dirac Equation\;\;}\nabla \bm{\psi} I \sigma_{z}-e\bm{A}\bm{\psi}-m\bm{\psi}\gamma_{t} = 0' )) return
def Lorentz_Tranformation_in_Geog_Algebra(): Print_Function() (alpha, beta, gamma) = symbols('alpha beta gamma') (x, t, xp, tp) = symbols("x t x' t'", real=True) (st2d, g0, g1) = Ga.build('gamma*t|x', g=[1, -1]) from sympy import sinh, cosh R = cosh(alpha / 2) + sinh(alpha / 2) * (g0 ^ g1) X = t * g0 + x * g1 Xp = tp * g0 + xp * g1 print('R =', R) print( r"#%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = t'\bm{\gamma'_{t}}+x'\bm{\gamma'_{x}} = R\lp t'\bm{\gamma_{t}}+x'\bm{\gamma_{x}}\rp R^{\dagger}" ) Xpp = R * Xp * R.rev() Xpp = Xpp.collect() Xpp = Xpp.trigsimp() print(r"%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} =", Xpp) Xpp = Xpp.subs({sinh(alpha): gamma * beta, cosh(alpha): gamma}) print(r'%\f{\sinh}{\alpha} = \gamma\beta') print(r'%\f{\cosh}{\alpha} = \gamma') print(r"%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} =", Xpp.collect()) return
def derivatives_in_rectangular_coordinates(): Print_Function() X = (x,y,z) = symbols('x y z') (ex,ey,ez,grad) = MV.setup('e_x e_y e_z',metric='[1,1,1]',coords=X) f = MV('f','scalar',fct=True) A = MV('A','vector',fct=True) B = MV('B','grade2',fct=True) C = MV('C','mv') print('f =',f) print('A =',A) print('B =',B) print('C =',C) print('grad*f =',grad*f) print('grad|A =',grad|A) print('grad*A =',grad*A) print(-MV.I) print('-I*(grad^A) =',-MV.I*(grad^A)) print('grad*B =',grad*B) print('grad^B =',grad^B) print('grad|B =',grad|B) return
def basic_multivector_operations_3D(): Print_Function() (g3d,ex,ey,ez) = Ga.build('e*x|y|z') print('g_{ij} =',g3d.g) A = g3d.mv('A','mv') print(A.Fmt(1,'A')) print(A.Fmt(2,'A')) print(A.Fmt(3,'A')) print(A.even().Fmt(1,'%A_{+}')) print(A.odd().Fmt(1,'%A_{-}')) X = g3d.mv('X','vector') Y = g3d.mv('Y','vector') print(X.Fmt(1,'X')) print(Y.Fmt(1,'Y')) print((X*Y).Fmt(2,'X*Y')) print((X^Y).Fmt(2,'X^Y')) print((X|Y).Fmt(2,'X|Y')) return
def derivatives_in_rectangular_coordinates(): Print_Function() X = (x, y, z) = symbols('x y z') o3d = Ga('e_x e_y e_z', g=[1, 1, 1], coords=X) (ex, ey, ez) = o3d.mv() grad = o3d.grad f = o3d.mv('f', 'scalar', f=True) A = o3d.mv('A', 'vector', f=True) B = o3d.mv('B', 'bivector', f=True) C = o3d.mv('C', 'mv', f=True) print('f =', f) print('A =', A) print('B =', B) print('C =', C) print('grad*f =', grad * f) print('grad|A =', grad | A) print('grad*A =', grad * A) print('-I*(grad^A) =', -o3d.E() * (grad ^ A)) print('grad*B =', grad * B) print('grad^B =', grad ^ B) print('grad|B =', grad | B) print('grad<A =', grad < A) print('grad>A =', grad > A) print('grad<B =', grad < B) print('grad>B =', grad > B) print('grad<C =', grad < C) print('grad>C =', grad > C) return
def extracting_vectors_from_conformal_2_blade(): Print_Function() print(r'B = P1\W P2') metric = '0 -1 #,'+ \ '-1 0 #,'+ \ '# # #' (P1,P2,a) = MV.setup('P1 P2 a',metric) print('g_{ij} =',MV.metric) B = P1^P2 Bsq = B*B print('%B^{2} =',Bsq) ap = a-(a^B)*B print("a' = a-(a^B)*B =",ap) Ap = ap+ap*B Am = ap-ap*B print("A+ = a'+a'*B =",Ap) print("A- = a'-a'*B =",Am) print('%(A+)^{2} =',Ap*Ap) print('%(A-)^{2} =',Am*Am) aB = a|B print('a|B =',aB) return
def Dirac_Equation_in_Geometric_Calculus(): Print_Function() vars = symbols('t x y z') (g0, g1, g2, g3, grad) = MV.setup('gamma*t|x|y|z', metric='[1,-1,-1,-1]', coords=vars) I = MV.I (m, e) = symbols('m e') psi = MV('psi', 'spinor', fct=True) A = MV('A', 'vector', fct=True) sig_z = g3 * g0 print('\\text{4-Vector Potential\\;\\;}\\bm{A} =', A) print('\\text{8-component real spinor\\;\\;}\\bm{\\psi} =', psi) dirac_eq = (grad * psi) * I * sig_z - e * A * psi - m * psi * g0 dirac_eq.simplify() dirac_eq.Fmt( 3, r'%\text{Dirac Equation\;\;}\nabla \bm{\psi} I \sigma_{z}-e\bm{A}\bm{\psi}-m\bm{\psi}\gamma_{t} = 0' ) return
def extracting_vectors_from_conformal_2_blade(): Print_Function() g = '0 -1 #,'+ \ '-1 0 #,'+ \ '# # #' e2b = Ga('P1 P2 a', g=g) (P1, P2, a) = e2b.mv() print('g_{ij} =\n', e2b.g) B = P1 ^ P2 Bsq = B * B print('B**2 =', Bsq) ap = a - (a ^ B) * B print("a' = a-(a^B)*B =", ap) Ap = ap + ap * B Am = ap - ap * B print("A+ = a'+a'*B =", Ap) print("A- = a'-a'*B =", Am) print('(A+)^2 =', Ap * Ap) print('(A-)^2 =', Am * Am) aB = a | B print('a|B =', aB) return
def Fmt_test(): Print_Function() e3d = Ga('e1 e2 e3', g=[1, 1, 1]) v = e3d.mv('v', 'vector') B = e3d.mv('B', 'bivector') M = e3d.mv('M', 'mv') Fmt(2) print('#Global $Fmt = 2$') print('v =', v) print('B =', B) print('M =', M) print('#Using $.Fmt()$ Function') print('v.Fmt(3) =', v.Fmt(3)) print('B.Fmt(3) =', B.Fmt(3)) print('M.Fmt(2) =', M.Fmt(2)) print('M.Fmt(1) =', M.Fmt(1)) print('#Global $Fmt = 1$') Fmt(1) print('v =', v) print('B =', B) print('M =', M) return
def main(): Print_Function() (a, b, c) = abc = symbols('a,b,c',real=True) (o3d, ea, eb, ec) = Ga.build('e_a e_b e_c', g=[1, 1, 1], coords=abc) grad = o3d.grad x = symbols('x',real=True) A = o3d.lt([[x*a*c**2,x**2*a*b*c,x**2*a**3*b**5],\ [x**3*a**2*b*c,x**4*a*b**2*c**5,5*x**4*a*b**2*c],\ [x**4*a*b**2*c**4,4*x**4*a*b**2*c**2,4*x**4*a**5*b**2*c]]) print('A =',A) v = a*ea+b*eb+c*ec print('v =',v) f = v|A(v) print(r'%f = v\cdot \f{A}{v} =',f) (grad * f).Fmt(3,r'%\nabla f') Av = A(v) print(r'%\f{A}{v} =', Av) (grad * Av).Fmt(3,r'%\nabla \f{A}{v}') return
def properties_of_geometric_objects(): Print_Function() global n, nbar Fmt(1) g = '# # # 0 0,'+ \ '# # # 0 0,'+ \ '# # # 0 0,'+ \ '0 0 0 0 2,'+ \ '0 0 0 2 0' c3d = Ga('p1 p2 p3 n \\bar{n}', g=g) (p1, p2, p3, n, nbar) = c3d.mv() print('g_{ij} =', c3d.g) P1 = F(p1) P2 = F(p2) P3 = F(p3) print('\\text{Extracting direction of line from }L = P1\\W P2\\W n') L = P1 ^ P2 ^ n delta = (L | n) | nbar print('(L|n)|\\bar{n} =', delta) print('\\text{Extracting plane of circle from }C = P1\\W P2\\W P3') C = P1 ^ P2 ^ P3 delta = ((C ^ n) | n) | nbar print('((C^n)|n)|\\bar{n}=', delta) print('(p2-p1)^(p3-p1)=', (p2 - p1) ^ (p3 - p1)) return
def basic_multivector_operations_3D(): Print_Function() g3d = Ga('e*x|y|z') (ex, ey, ez) = g3d.mv() A = g3d.mv('A', 'mv') print(A.Fmt(1, 'A')) print(A.Fmt(2, 'A')) print(A.Fmt(3, 'A')) print(A.even().Fmt(1, '%A_{+}')) print(A.odd().Fmt(1, '%A_{-}')) X = g3d.mv('X', 'vector') Y = g3d.mv('Y', 'vector') print('g_{ij} = ', g3d.g) print(X.Fmt(1, 'X')) print(Y.Fmt(1, 'Y')) print((X * Y).Fmt(2, 'X*Y')) print((X ^ Y).Fmt(2, 'X^Y')) print((X | Y).Fmt(2, 'X|Y')) print(cross(X, Y).Fmt(1, r'X\times Y')) return
def basic_multivector_operations_3D(): Print_Function() (ex,ey,ez) = MV.setup('e*x|y|z') A = MV('A','mv') A.Fmt(1,'A') A.Fmt(2,'A') A.Fmt(3,'A') A.even().Fmt(1,'%A_{+}') A.odd().Fmt(1,'%A_{-}') X = MV('X','vector') Y = MV('Y','vector') print('g_{ij} = ',MV.metric) X.Fmt(1,'X') Y.Fmt(1,'Y') (X*Y).Fmt(2,'X*Y') (X^Y).Fmt(2,'X^Y') (X|Y).Fmt(2,'X|Y') return
def Maxwells_Equations_in_Geom_Calculus(): Print_Function() X = symbols('t x y z', real=True) (st4d, g0, g1, g2, g3) = Ga.build('gamma*t|x|y|z', g=[1, -1, -1, -1], coords=X) I = st4d.i B = st4d.mv('B', 'vector', f=True) E = st4d.mv('E', 'vector', f=True) B.set_coef(1, 0, 0) E.set_coef(1, 0, 0) B *= g0 E *= g0 J = st4d.mv('J', 'vector', f=True) F = E + I * B print(r'\text{Pseudo Scalar\;\;}I =', I) print('\\text{Magnetic Field Bi-Vector\\;\\;} B = \\bm{B\\gamma_{t}} =', B) print('\\text{Electric Field Bi-Vector\\;\\;} E = \\bm{E\\gamma_{t}} =', E) print('\\text{Electromagnetic Field Bi-Vector\\;\\;} F = E+IB =', F) print('%\\text{Four Current Density\\;\\;} J =', J) gradF = st4d.grad * F print('#Geom Derivative of Electomagnetic Field Bi-Vector') gradF.Fmt(3, 'grad*F') print('#Maxwell Equations') print('grad*F = J') print('#Div $E$ and Curl $H$ Equations') print((gradF.get_grade(1) - J).Fmt(3, '%\\grade{\\nabla F}_{1} -J = 0')) print('#Curl $E$ and Div $B$ equations') print((gradF.get_grade(3)).Fmt(3, '%\\grade{\\nabla F}_{3} = 0')) return
def Lorentz_Tranformation_in_Geometric_Algebra(): Print_Function() (alpha,beta,gamma) = symbols('alpha beta gamma') (x,t,xp,tp) = symbols("x t x' t'") (g0,g1) = MV.setup('gamma*t|x',metric='[1,-1]') from sympy import sinh,cosh R = cosh(alpha/2)+sinh(alpha/2)*(g0^g1) X = t*g0+x*g1 Xp = tp*g0+xp*g1 print('R =',R) print(r"#%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} = t'\bm{\gamma'_{t}}+x'\bm{\gamma'_{x}} = R\lp t'\bm{\gamma_{t}}+x'\bm{\gamma_{x}}\rp R^{\dagger}") Xpp = R*Xp*R.rev() Xpp = Xpp.collect() Xpp = Xpp.subs({2*sinh(alpha/2)*cosh(alpha/2):sinh(alpha),sinh(alpha/2)**2+cosh(alpha/2)**2:cosh(alpha)}) print(r"%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} =",Xpp) Xpp = Xpp.subs({sinh(alpha):gamma*beta,cosh(alpha):gamma}) print(r'%\f{\sinh}{\alpha} = \gamma\beta') print(r'%\f{\cosh}{\alpha} = \gamma') print(r"%t\bm{\gamma_{t}}+x\bm{\gamma_{x}} =",Xpp.collect()) return
def properties_of_geometric_objects(): Print_Function() global n, nbar g = '# # # 0 0,'+ \ '# # # 0 0,'+ \ '# # # 0 0,'+ \ '0 0 0 0 2,'+ \ '0 0 0 2 0' c3d = Ga('p1 p2 p3 n nbar', g=g) (p1, p2, p3, n, nbar) = c3d.mv() print('g_{ij} =\n', c3d.g) P1 = F(p1) P2 = F(p2) P3 = F(p3) print('Extracting direction of line from L = P1^P2^n') L = P1 ^ P2 ^ n delta = (L | n) | nbar print('(L|n)|nbar =', delta) print('Extracting plane of circle from C = P1^P2^P3') C = P1 ^ P2 ^ P3 delta = ((C ^ n) | n) | nbar print('((C^n)|n)|nbar =', delta) print('(p2-p1)^(p3-p1) =', (p2 - p1) ^ (p3 - p1))
def Maxwells_Equations_in_Geometric_Calculus(): Print_Function() X = symbols('t x y z') (g0,g1,g2,g3,grad) = MV.setup('gamma*t|x|y|z',metric='[1,-1,-1,-1]',coords=X) I = MV.I B = MV('B','vector',fct=True) E = MV('E','vector',fct=True) B.set_coef(1,0,0) E.set_coef(1,0,0) B *= g0 E *= g0 J = MV('J','vector',fct=True) F = E+I*B print(r'\text{Pseudo Scalar\;\;}I =',I) print('\\text{Magnetic Field Bi-Vector\\;\\;} B = \\bm{B\\gamma_{t}} =',B) print('\\text{Electric Field Bi-Vector\\;\\;} E = \\bm{E\\gamma_{t}} =',E) print('\\text{Electromagnetic Field Bi-Vector\\;\\;} F = E+IB =',F) print('%\\text{Four Current Density\\;\\;} J =',J) gradF = grad*F print('#Geometric Derivative of Electomagnetic Field Bi-Vector') gradF.Fmt(3,'grad*F') print('#Maxwell Equations') print('grad*F = J') print('#Div $E$ and Curl $H$ Equations') (gradF.grade(1)-J).Fmt(3,'%\\grade{\\nabla F}_{1} -J = 0') print('#Curl $E$ and Div $B$ equations') (gradF.grade(3)).Fmt(3,'%\\grade{\\nabla F}_{3} = 0') return
def signature_test(): Print_Function() e3d = Ga('e1 e2 e3', g=[1, 1, 1]) print('e3d.g =', e3d.g) print('Signature = (3,0) I =', e3d.I(), ' I**2 =', e3d.I() * e3d.I()) e3d = Ga('e1 e2 e3', g=[2, 2, 2]) print('e3d.g =', e3d.g) print('Signature = (3,0) I =', e3d.I(), ' I**2 =', e3d.I() * e3d.I()) sp4d = Ga('e1 e2 e3 e4', g=[1, -1, -1, -1]) print('e3d.g =', sp4d.g) print('Signature = (1,3) I =', sp4d.I(), ' I**2 =', sp4d.I() * sp4d.I()) sp4d = Ga('e1 e2 e3 e4', g=[2, -2, -2, -2]) print('e3d.g =', sp4d.g) print('Signature = (1,3) I =', sp4d.I(), ' I**2 =', sp4d.I() * sp4d.I()) e4d = Ga('e1 e2 e3 e4', g=[1, 1, 1, 1]) print('e4d.g =', e4d.g) print('Signature = (4,0) I =', e4d.I(), ' I**2 =', e4d.I() * e4d.I()) cf3d = Ga('e1 e2 e3 e4 e5', g=[1, 1, 1, 1, -1]) print('cf4d.g =', cf3d.g) print('Signature = (4,1) I =', cf3d.I(), ' I**2 =', cf3d.I() * cf3d.I()) cf3d = Ga('e1 e2 e3 e4 e5', g=[2, 2, 2, 2, -2]) print('cf4d.g =', cf3d.g) print('Signature = (4,1) I =', cf3d.I(), ' I**2 =', cf3d.I() * cf3d.I()) return
def derivatives_in_bipolar_coordinates(): Print_Function() a = symbols('a', real=True) coords = (u, v, z) = symbols('u v z', real=True) (bp3d, eu, ev, ez) = Ga.build('e_u e_v e_z', X=[ a * sinh(v) / (cosh(v) - cos(u)), a * sin(u) / (cosh(v) - cos(u)), z ], coords=coords, norm=True) grad = bp3d.grad f = bp3d.mv('f', 'scalar', f=True) A = bp3d.mv('A', 'vector', f=True) B = bp3d.mv('B', 'bivector', f=True) print('f =', f) print('A =', A) print('B =', B) print('grad*f =', grad * f) print('grad|A =', grad | A) print('-I*(grad^A) =', -bp3d.i * (grad ^ A)) print('grad^B =', grad ^ B) return
def basic_multivector_operations(): Print_Function() (ex, ey, ez) = MV.setup('e*x|y|z') A = MV('A', 'mv') A.Fmt(1, 'A') A.Fmt(2, 'A') A.Fmt(3, 'A') X = MV('X', 'vector') Y = MV('Y', 'vector') print('g_{ij} =\n', MV.metric) X.Fmt(1, 'X') Y.Fmt(1, 'Y') (X * Y).Fmt(2, 'X*Y') (X ^ Y).Fmt(2, 'X^Y') (X | Y).Fmt(2, 'X|Y') (ex, ey) = MV.setup('e*x|y') print('g_{ij} =\n', MV.metric) X = MV('X', 'vector') A = MV('A', 'spinor') X.Fmt(1, 'X') A.Fmt(1, 'A') (X | A).Fmt(2, 'X|A') (X < A).Fmt(2, 'X<A') (A > X).Fmt(2, 'A>X') (ex, ey) = MV.setup('e*x|y', metric='[1,1]') print('g_{ii} =\n', MV.metric) X = MV('X', 'vector') A = MV('A', 'spinor') X.Fmt(1, 'X') A.Fmt(1, 'A') (X * A).Fmt(2, 'X*A') (X | A).Fmt(2, 'X|A') (X < A).Fmt(2, 'X<A') (X > A).Fmt(2, 'X>A') (A * X).Fmt(2, 'A*X') (A | X).Fmt(2, 'A|X') (A < X).Fmt(2, 'A<X') (A > X).Fmt(2, 'A>X') return
def General_Lorentz_Tranformation(): Print_Function() (alpha, beta, gamma) = symbols('alpha beta gamma') (x, y, z, t) = symbols("x y z t", real=True) (st4d, g0, g1, g2, g3) = Ga.build('gamma*t|x|y|z', g=[1, -1, -1, -1]) B = (x * g1 + y * g2 + z * g3) ^ (t * g0) print(B) print(B.exp(hint='+')) print(B.exp(hint='-'))
def rounding_numerical_components(): Print_Function() (ex,ey,ez) = MV.setup('e_x e_y e_z',metric='[1,1,1]') X = 1.2*ex+2.34*ey+0.555*ez Y = 0.333*ex+4*ey+5.3*ez print('X =',X) print('Nga(X,2) =',Nga(X,2)) print('X*Y =',X*Y) print('Nga(X*Y,2) =',Nga(X*Y,2)) return
def rounding_numerical_components(): Print_Function() o3d = Ga('e_x e_y e_z', g=[1, 1, 1]) (ex, ey, ez) = o3d.mv() X = 1.2 * ex + 2.34 * ey + 0.555 * ez Y = 0.333 * ex + 4 * ey + 5.3 * ez print('X =', X) print('Nga(X,2) =', Nga(X, 2)) print('X*Y =', X * Y) print('Nga(X*Y,2) =', Nga(X * Y, 2)) return
def coefs_test(): Print_Function() (o3d, e1, e2, e3) = Ga.build('e_1 e_2 e_3', g=[1, 1, 1]) print(o3d.blades_lst) print(o3d.mv_blades_lst) v = o3d.mv('v', 'vector') print(v) print(v.blade_coefs([e3, e1])) A = o3d.mv('A', 'mv') print(A) print(A.blade_coefs([e1 ^ e3, e3, e1 ^ e2, e1 ^ e2 ^ e3])) print(A.blade_coefs()) return
def check_generalized_BAC_CAB_formulas(): Print_Function() (a,b,c,d) = MV.setup('a b c d') print('g_{ij} =',MV.metric) print('\\bm{a|(b*c)} =',a|(b*c)) print('\\bm{a|(b^c)} =',a|(b^c)) print('\\bm{a|(b^c^d)} =',a|(b^c^d)) print('\\bm{a|(b^c)+c|(a^b)+b|(c^a)} =',(a|(b^c))+(c|(a^b))+(b|(c^a))) print('\\bm{a*(b^c)-b*(a^c)+c*(a^b)} =',a*(b^c)-b*(a^c)+c*(a^b)) print('\\bm{a*(b^c^d)-b*(a^c^d)+c*(a^b^d)-d*(a^b^c)} =',a*(b^c^d)-b*(a^c^d)+c*(a^b^d)-d*(a^b^c)) print('\\bm{(a^b)|(c^d)} =',(a^b)|(c^d)) print('\\bm{((a^b)|c)|d} =',((a^b)|c)|d) print('\\bm{(a^b)\\times (c^d)} =',Ga.com(a^b,c^d)) return
def basic_multivector_operations_2D(): Print_Function() (ex,ey) = MV.setup('e*x|y') print('g_{ij} =',MV.metric) X = MV('X','vector') A = MV('A','spinor') X.Fmt(1,'X') A.Fmt(1,'A') (X|A).Fmt(2,'X|A') (X<A).Fmt(2,'X<A') (A>X).Fmt(2,'A>X') return
def Lie_Group(): Print_Function() coords = symbols('t x y z', real=True) (st4d, g0, g1, g2, g3) = Ga.build('gamma*t|x|y|z', g=[1, -1, -1, -1], coords=coords) I = st4d.i a = st4d.mv('a', 'vector') B = st4d.mv('B', 'bivector') print('a =', a) print('B =', B) print('a|B =', a | B) print(((a | B) | B).simplify().Fmt(3, '(a|B)|B')) print((((a | B) | B) | B).simplify().Fmt(3, '((a|B)|B)|B')) return