Exemple #1
0
def main():
    Get_Program()
    Format()
    derivatives_in_spherical_coordinates()
    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #2
0
def main():
    Get_Program()
    Format()
    Product_of_Rotors()
    # xpdf(paper=(8.5,11))
    xpdf(pdfprog=None, paper=(8.5,11))
    return
Exemple #3
0
def main():
    Format()

    EM_Waves_in_Geom_Calculus()

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #4
0
def main():
    Format()

    EM_Waves_in_Geom_Calculus_Complex()
    EM_Waves_in_Geom_Calculus_Real()
    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #5
0
def main():
    Format()

    basic_multivector_operations_3D()
    basic_multivector_operations_2D()

    # xpdf()
    xpdf(pdfprog=None)
    return
def main():
    Get_Program(True)
    Format()

    basic_multivector_operations_3D()
    basic_multivector_operations_2D()

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #7
0
def main():
    Get_Program(True)
    Format()

    basic_multivector_operations_3D()
    basic_multivector_operations_2D()

    # xpdf('simple_test_latex.tex')
    xpdf('simple_check_latex.tex', pdfprog=None)
    return
Exemple #8
0
def main():
    Format()

    Maxwells_Equations_in_Geometric_Calculus()
    Dirac_Equation_in_Geometric_Calculus()
    Lorentz_Tranformation_in_Geometric_Algebra()

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #9
0
def main():
    Format()

    #Maxwells_Equations_in_Geom_Calculus()
    #Dirac_Equation_in_Geom_Calculus()
    #Lorentz_Tranformation_in_Geog_Algebra()
    General_Lorentz_Tranformation()
    #Lie_Group()

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #10
0
def main():
    #Eprint()
    Format()
    derivatives_in_spherical_coordinates()
    derivatives_in_paraboloidal_coordinates()
    # FIXME This takes ~600 seconds
    # derivatives_in_elliptic_cylindrical_coordinates()
    derivatives_in_prolate_spheroidal_coordinates()
    #derivatives_in_oblate_spheroidal_coordinates()
    #derivatives_in_bipolar_coordinates()
    #derivatives_in_toroidal_coordinates()

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #11
0
def main():
    Format()
    a = Matrix(2, 2, (1, 2, 3, 4))
    b = Matrix(2, 1, (5, 6))
    c = a * b
    print(a, b, '=', c)

    x, y = symbols('x, y')

    d = Matrix(1, 2, (x**3, y**3))
    e = Matrix(2, 2, (x**2, 2 * x * y, 2 * x * y, y**2))
    f = d * e

    print('%', d, e, '=', f)

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #12
0
def main():

    Format()
    basic_multivector_operations_3D()
    basic_multivector_operations_2D()
    basic_multivector_operations_2D_orthogonal()
    check_generalized_BAC_CAB_formulas()
    rounding_numerical_components()
    derivatives_in_rectangular_coordinates()
    derivatives_in_spherical_coordinates()
    #noneuclidian_distance_calculation()
    conformal_representations_of_circles_lines_spheres_and_planes()
    properties_of_geometric_objects()
    extracting_vectors_from_conformal_2_blade()
    reciprocal_frame_test()

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #13
0
def main():
    Format()
    snr = 1
    g = '0 0 1 0 ,0 0 0 1 ,1 0 0 0 ,0 1 0 0'
    sk4coords = (e1, e2, e3, e4) = symbols('e1 e2 e3 e4')
    sk4 = Ga('e_1 e_2 e_3 e_4', g=g, coords=sk4coords)
    (e1, e2, e3, e4) = sk4.mv()
    print('g_{ii} =', sk4.g)

    v = symbols('v', real=True)
    x1 = (e1 + e3) / sqrt(2)
    x2 = (e2 + e4) / sqrt(2)
    print('x_1<x_1==', x1 < x1)
    print('x_1<x_2==', x1 < x2)
    print('x_2<x_1==', x2 < x1)
    print('x_2<x_2==', x2 < x2)
    print(r'#$-\infty < v < \infty$')
    print('(-v*(x_1^x_2)/2).exp()==', (-v * (x1 ^ x2) / 2).exp())
    v = symbols('v', real=True, positive=True)
    print(r'#$0\le v < \infty$')
    print('(-v*(x_1^x_2)/2).exp()==', (-v * (x1 ^ x2) / 2).exp())

    xpdf(pdfprog=None)
    return
Exemple #14
0
def main():
    Format()
    (g3d, ex, ey, ez) = Ga.build('e*x|y|z')
    A = g3d.mv('A', 'mv')
    print(r'\bm{A} =', A)
    A.Fmt(2, r'\bm{A}')
    A.Fmt(3, r'\bm{A}')

    X = (x, y, z) = symbols('x y z', real=True)
    o3d = Ga('e_x e_y e_z', g=[1, 1, 1], coords=X)
    (ex, ey, ez) = o3d.mv()

    f = o3d.mv('f', 'scalar', f=True)
    A = o3d.mv('A', 'vector', f=True)
    B = o3d.mv('B', 'bivector', f=True)

    print(r'\bm{A} =', A)
    print(r'\bm{B} =', B)

    print('grad*f =', o3d.grad * f)
    print(r'grad|\bm{A} =', o3d.grad | A)
    print(r'grad*\bm{A} =', o3d.grad * A)

    print(r'-I*(grad^\bm{A}) =', -o3d.i * (o3d.grad ^ A))
    print(r'grad*\bm{B} =', o3d.grad * B)
    print(r'grad^\bm{B} =', o3d.grad ^ B)
    print(r'grad|\bm{B} =', o3d.grad | B)

    g4d = Ga('a b c d')

    (a, b, c, d) = g4d.mv()

    print('g_{ij} =', g4d.g)

    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))

    g = '1 # #,'+ \
         '# 1 #,'+ \
         '# # 1'

    ng3d = Ga('e1 e2 e3', g=g)
    (e1, e2, e3) = ng3d.mv()

    E = e1 ^ e2 ^ e3
    Esq = (E * E).scalar()
    print('E =', E)
    print('%E^{2} =', Esq)
    Esq_inv = 1 / Esq

    E1 = (e2 ^ e3) * E
    E2 = (-1) * (e1 ^ e3) * E
    E3 = (e1 ^ e2) * E

    print('E1 = (e2^e3)*E =', E1)
    print('E2 =-(e1^e3)*E =', E2)
    print('E3 = (e1^e2)*E =', E3)

    print('E1|e2 =', (E1 | e2).expand())
    print('E1|e3 =', (E1 | e3).expand())
    print('E2|e1 =', (E2 | e1).expand())
    print('E2|e3 =', (E2 | e3).expand())
    print('E3|e1 =', (E3 | e1).expand())
    print('E3|e2 =', (E3 | e2).expand())
    w = ((E1 | e1).expand()).scalar()
    Esq = expand(Esq)
    print('%(E1\\cdot e1)/E^{2} =', simplify(w / Esq))
    w = ((E2 | e2).expand()).scalar()
    print('%(E2\\cdot e2)/E^{2} =', simplify(w / Esq))
    w = ((E3 | e3).expand()).scalar()
    print('%(E3\\cdot e3)/E^{2} =', simplify(w / Esq))

    X = (r, th, phi) = symbols('r theta phi')
    s3d = Ga('e_r e_theta e_phi',
             g=[1, r**2, r**2 * sin(th)**2],
             coords=X,
             norm=True)
    (er, eth, ephi) = s3d.mv()

    f = s3d.mv('f', 'scalar', f=True)
    A = s3d.mv('A', 'vector', f=True)
    B = s3d.mv('B', 'bivector', f=True)

    print('A =', A)
    print('B =', B)

    print('grad*f =', s3d.grad * f)
    print('grad|A =', s3d.grad | A)
    print('-I*(grad^A) =', -s3d.i * (s3d.grad ^ A))
    print('grad^B =', s3d.grad ^ B)

    coords = symbols('t x y z')
    m4d = Ga('gamma*t|x|y|z', g=[1, -1, -1, -1], coords=coords)
    (g0, g1, g2, g3) = m4d.mv()
    I = m4d.i

    B = m4d.mv('B', 'vector', f=True)
    E = m4d.mv('E', 'vector', f=True)
    B.set_coef(1, 0, 0)
    E.set_coef(1, 0, 0)
    B *= g0
    E *= g0
    J = m4d.mv('J', 'vector', f=True)
    F = E + I * B

    print('B = \\bm{B\\gamma_{t}} =', B)
    print('E = \\bm{E\\gamma_{t}} =', E)
    print('F = E+IB =', F)
    print('J =', J)
    gradF = m4d.grad * F
    gradF.Fmt(3, 'grad*F')

    print('grad*F = J')
    (gradF.get_grade(1) - J).Fmt(3, '%\\grade{\\nabla F}_{1} -J = 0')
    (gradF.get_grade(3)).Fmt(3, '%\\grade{\\nabla F}_{3} = 0')

    (alpha, beta, gamma) = symbols('alpha beta gamma')

    (x, t, xp, tp) = symbols("x t x' t'")
    m2d = Ga('gamma*t|x', g=[1, -1])
    (g0, g1) = m2d.mv()

    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())

    coords = symbols('t x y z')
    m4d = Ga('gamma*t|x|y|z', g=[1, -1, -1, -1], coords=coords)
    (g0, g1, g2, g3) = m4d.mv()
    I = m4d.i
    (m, e) = symbols('m e')

    psi = m4d.mv('psi', 'spinor', f=True)
    A = m4d.mv('A', 'vector', f=True)
    sig_z = g3 * g0
    print('\\bm{A} =', A)
    print('\\bm{\\psi} =', psi)

    dirac_eq = (m4d.grad * psi) * I * sig_z - e * A * psi - m * psi * g0
    dirac_eq.simplify()

    dirac_eq.Fmt(
        3,
        r'\nabla \bm{\psi} I \sigma_{z}-e\bm{A}\bm{\psi}-m\bm{\psi}\gamma_{t} = 0'
    )

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #15
0
print('AB =', A2d * B2d)
print('A - B =', A2d - B2d)

a = g2d.mv('a', 'vector')
b = g2d.mv('b', 'vector')

print(r'a|\f{\overline{A}}{b}-b|\f{\underline{A}}{a} =',
      ((a | A2d.adj()(b)) - (b | A2d(a))).simplify())

# FIXME All above prints incorrect result
# (more complicated and not equivalent )

m4d = Ga('e_t e_x e_y e_z',
         g=[1, -1, -1, -1],
         coords=symbols('t,x,y,z', real=True))

T = m4d.lt('T')

print('#$T$ is a linear transformation in Minkowski space')
print(r'\underline{T} =', T)
print(r'\overline{T} =', T.adj())
print(r'\f{\mbox{tr}}{\underline{T}} =', T.tr())

a = m4d.mv('a', 'vector')
b = m4d.mv('b', 'vector')

print(r'a|\f{\overline{T}}{b}-b|\f{\underline{T}}{a} =',
      ((a | T.adj()(b)) - (b | T(a))).simplify())

xpdf(paper='landscape', crop=True)
    print('F =',F)
    print('grad*F =',grad_uv * F)

    tp = (th,phi) = symbols('theta,phi',real=True)

    smap = [sin(th)*cos(phi),sin(th)*sin(phi),cos(th)]

    sph2dr = o3d.sm(smap,tp,norm=True)
    (eth, ephi) = sph2dr.mv()
    grad_tp = sph2dr.grad

    F = sph2dr.mv('F','vector',f=True)
    f = sph2dr.mv('f','scalar',f=True)

    print('f =',f)
    print('grad*f =',grad_tp * f)

    print('F =',F)
    print('grad*F =',grad_tp * F)

    return

if __name__ == "__main__":
    #Eprint()
    Format()
    # Get_Program()
    main()
    # xpdf()
    xpdf(pdfprog=None)
Exemple #17
0
gradF_reduced = (EBkst.grad * F) /  (I * exp(I * KX))

print(gradF_reduced.Fmt(3, r'%\lp\bm{\nabla}F\rp/\lp ie^{iK\cdot X} \rp = 0'))

print(r'%\mbox{Previous equation requires that: }e_{E}\cdot e_{B} = 0' +
      r'\mbox{ if }B\ne 0\mbox{ and }k\ne 0')

gradF_reduced = gradF_reduced.subs({EBkst.g[0, 1]: 0})
print(gradF_reduced.Fmt(3, r'%\lp\bm{\nabla}F\rp/\lp ie^{iK\cdot X} \rp = 0'))

(coefs, bases) = linear_expand(gradF_reduced.obj)

eq1 = coefs[0]
eq2 = coefs[1]

B1 = solve(eq1, B)[0]
B2 = solve(eq2, B)[0]

print(r'\mbox{eq1: }B =', B1)
print(r'\mbox{eq2: }B =', B2)

eq3 = B1 - B2

print(r'\mbox{eq3 = eq1-eq2: }0 =', eq3)
eq3 = simplify(eq3 /  E)
print(r'\mbox{eq3 = (eq1-eq2)/E: }0 =', eq3)
print(r'#Solutions for $k$ and $B$ in terms of $\omega$ and $E$:')
print('k =', Matrix(solve(eq3, k)))
print('B =', Matrix([B1.subs(w, k), B1.subs(-w, k)]))
xpdf(paper='landscape', prog=True)
Exemple #18
0
def main():
    Format()

    (ex, ey, ez) = MV.setup('e*x|y|z')
    A = MV('A', 'mv')
    print(r'\bm{A} =', A)
    A.Fmt(2, r'\bm{A}')
    A.Fmt(3, r'\bm{A}')

    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)

    print(r'\bm{A} =', A)
    print(r'\bm{B} =', B)

    print('grad*f =', grad * f)
    print(r'grad|\bm{A} =', grad | A)
    print(r'grad*\bm{A} =', grad * A)

    print(r'-I*(grad^\bm{A}) =', -MV.I * (grad ^ A))
    print(r'grad*\bm{B} =', grad * B)
    print(r'grad^\bm{B} =', grad ^ B)
    print(r'grad|\bm{B} =', grad | B)

    (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))

    metric = '1 # #,'+ \
             '# 1 #,'+ \
             '# # 1'

    (e1, e2, e3) = MV.setup('e1 e2 e3', metric)

    E = e1 ^ e2 ^ e3
    Esq = (E * E).scalar()
    print('E =', E)
    print('%E^{2} =', Esq)
    Esq_inv = 1 / Esq

    E1 = (e2 ^ e3) * E
    E2 = (-1) * (e1 ^ e3) * E
    E3 = (e1 ^ e2) * E

    print('E1 = (e2^e3)*E =', E1)
    print('E2 =-(e1^e3)*E =', E2)
    print('E3 = (e1^e2)*E =', E3)

    print('E1|e2 =', (E1 | e2).expand())
    print('E1|e3 =', (E1 | e3).expand())
    print('E2|e1 =', (E2 | e1).expand())
    print('E2|e3 =', (E2 | e3).expand())
    print('E3|e1 =', (E3 | e1).expand())
    print('E3|e2 =', (E3 | e2).expand())
    w = ((E1 | e1).expand()).scalar()
    Esq = expand(Esq)
    print('%(E1\\cdot e1)/E^{2} =', simplify(w / Esq))
    w = ((E2 | e2).expand()).scalar()
    print('%(E2\\cdot e2)/E^{2} =', simplify(w / Esq))
    w = ((E3 | e3).expand()).scalar()
    print('%(E3\\cdot e3)/E^{2} =', simplify(w / Esq))

    X = (r, th, phi) = symbols('r theta phi')
    curv = [[r * cos(phi) * sin(th), r * sin(phi) * sin(th), r * cos(th)],
            [1, r, r * sin(th)]]
    (er, eth, ephi, grad) = MV.setup('e_r e_theta e_phi',
                                     metric='[1,1,1]',
                                     coords=X,
                                     curv=curv)

    f = MV('f', 'scalar', fct=True)
    A = MV('A', 'vector', fct=True)
    B = MV('B', 'grade2', fct=True)

    print('A =', A)
    print('B =', B)

    print('grad*f =', grad * f)
    print('grad|A =', grad | A)
    print('-I*(grad^A) =', -MV.I * (grad ^ A))
    print('grad^B =', grad ^ B)

    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

    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('B = \\bm{B\\gamma_{t}} =', B)
    print('E = \\bm{E\\gamma_{t}} =', E)
    print('F = E+IB =', F)
    print('J =', J)
    gradF = grad * F
    gradF.Fmt(3, 'grad*F')

    print('grad*F = J')
    (gradF.grade(1) - J).Fmt(3, '%\\grade{\\nabla F}_{1} -J = 0')
    (gradF.grade(3)).Fmt(3, '%\\grade{\\nabla F}_{3} = 0')

    (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]')

    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())

    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('\\bm{A} =', A)
    print('\\bm{\\psi} =', psi)

    dirac_eq = (grad * psi) * I * sig_z - e * A * psi - m * psi * g0
    dirac_eq.simplify()

    dirac_eq.Fmt(
        3,
        r'\nabla \bm{\psi} I \sigma_{z}-e\bm{A}\bm{\psi}-m\bm{\psi}\gamma_{t} = 0'
    )

    # xpdf()
    xpdf(pdfprog=None)
    return
Exemple #19
0
def main():
    Format()

    coords = (x, y, z) = symbols('x y z', real=True)

    (o3d, ex, ey, ez) = Ga.build('e*x|y|z', g=[1, 1, 1], coords=coords)

    s = o3d.mv('s', 'scalar')
    v = o3d.mv('v', 'vector')
    b = o3d.mv('b', 'bivector')

    print(r'#3D Orthogonal Metric\newline')

    print('#Multvectors:')
    print('s =', s)
    print('v =', v)
    print('b =', b)

    print('#Products:')

    X = ((s, 's'), (v, 'v'), (b, 'b'))

    for xi in X:
        print('')
        for yi in X:
            print(xi[1] + ' * ' + yi[1] + ' =', xi[0] * yi[0])
            print(xi[1] + ' ^ ' + yi[1] + ' =', xi[0] ^ yi[0])
            if xi[1] != 's' and yi[1] != 's':
                print(xi[1] + ' | ' + yi[1] + ' =', xi[0] | yi[0])
            print(xi[1] + ' < ' + yi[1] + ' =', xi[0] < yi[0])
            print(xi[1] + ' > ' + yi[1] + ' =', xi[0] > yi[0])

    fs = o3d.mv('s', 'scalar', f=True)
    fv = o3d.mv('v', 'vector', f=True)
    fb = o3d.mv('b', 'bivector', f=True)

    print('#Multivector Functions:')

    print('s(X) =', fs)
    print('v(X) =', fv)
    print('b(X) =', fb)

    print('#Products:')

    fX = ((o3d.grad, 'grad'), (fs, 's'), (fv, 'v'), (fb, 'b'))

    for xi in fX:
        print('')
        for yi in fX:
            if xi[1] == 'grad' and yi[1] == 'grad':
                pass
            else:
                print(xi[1] + ' * ' + yi[1] + ' =', xi[0] * yi[0])
                print(xi[1] + ' ^ ' + yi[1] + ' =', xi[0] ^ yi[0])
                if xi[1] != 's' and yi[1] != 's':
                    print(xi[1] + ' | ' + yi[1] + ' =', xi[0] | yi[0])
                print(xi[1] + ' < ' + yi[1] + ' =', xi[0] < yi[0])
                print(xi[1] + ' > ' + yi[1] + ' =', xi[0] > yi[0])

    (g2d, ex, ey) = Ga.build('e', coords=(x, y))

    print(r'#General 2D Metric\newline')
    print('#Multivector Functions:')

    s = g2d.mv('s', 'scalar', f=True)
    v = g2d.mv('v', 'vector', f=True)
    b = g2d.mv('v', 'bivector', f=True)

    print('s(X) =', s)
    print('v(X) =', v)
    print('b(X) =', b)

    X = ((g2d.grad, 'grad'), (s, 's'), (v, 'v'))

    print('#Products:')

    for xi in X:
        print('')
        for yi in X:
            if xi[1] == 'grad' and yi[1] == 'grad':
                pass
            else:
                print(xi[1] + ' * ' + yi[1] + ' =', xi[0] * yi[0])
                print(xi[1] + ' ^ ' + yi[1] + ' =', xi[0] ^ yi[0])
                if xi[1] != 's' and yi[1] != 's':
                    print(xi[1] + ' | ' + yi[1] + ' =', xi[0] | yi[0])
                else:
                    print(xi[1] + ' | ' + yi[1] + ' = Not Allowed')
                print(xi[1] + ' < ' + yi[1] + ' =', xi[0] < yi[0])
                print(xi[1] + ' > ' + yi[1] + ' =', xi[0] > yi[0])

    # xpdf(paper='letter')
    xpdf(pdfprog=None, paper='letter')
    return
print('grad F = ', sp2.grad * F)
print('\\')

print(r'\mbox{One dimensioanal submanifold}')
print(r'\mbox{Basis not normalised}')

cir_th = phi = symbols('phi', real=True)
cir_map = [pi / 8, phi]
print(r'(\phi)\rightarrow (\theta,\phi) = ', latex(cir_map))

cir1d = sp2.sm(cir_map, (cir_th, ), norm=False)  # submanifold

cir1dgrad = cir1d.grad

(ephi) = cir1d.mv()
print(r'e_\phi | e_\phi = ', latex(ephi[0] | ephi[0]))
print('g = ', latex(cir1d.g))

h = cir1d.mv('h', 'scalar', f=True)

H = cir1d.mv('H', 'vector', f=True)

print('grad = ', cir1dgrad)
print(r'\nabla h = ', (cir1d.grad * h).simplify())
print('H =', H)
print(r'\nabla H = ', (cir1d.grad * H).simplify())
print('\\')

# xpdf(paper=(9,10))
xpdf(paper=(9, 10), pdfprog=None)
Exemple #21
0
# A2d.adj().Fmt(4,'\\overline{A}')
print('\\f{\\Tr}{A} =', A2d.tr())
print('\\f{A}{e_u^e_v} =', A2d(eu ^ ev))
print('\\f{A}{e_u}^\\f{A}{e_v} =', A2d(eu) ^ A2d(ev))
B2d = g2d.lt('B')
print('B =', B2d)
print('A + B =', A2d + B2d)
print('AB =', A2d * B2d)
print('A - B =', A2d - B2d)
a = g2d.mv('a', 'vector')
b = g2d.mv('b', 'vector')
print(r'a|\f{\overline{A}}{b}-b|\f{\underline{A}}{a} =',
      ((a | A2d.adj()(b)) - (b | A2d(a))).simplify())

print('#4d Minkowski spaqce (Space Time)')
m4d = Ga('e_t e_x e_y e_z',
         g=[1, -1, -1, -1],
         coords=symbols('t,x,y,z', real=True))
T = m4d.lt('T')
print('g =', m4d.g)
# FIXME incorrect sign for T and T.adj()
print(r'\underline{T} =', T)
print(r'\overline{T} =', T.adj())
# m4d.mv(T.det()).Fmt(4,r'\f{\det}{\underline{T}}')
print(r'\f{\mbox{tr}}{\underline{T}} =', T.tr())
a = m4d.mv('a', 'vector')
b = m4d.mv('b', 'vector')
print(r'a|\f{\overline{T}}{b}-b|\f{\underline{T}}{a} =',
      ((a | T.adj()(b)) - (b | T(a))).simplify())
xpdf(paper=(10, 12), debug=True)
print('E3 = (e1^e2)*E =', E3)
w = (E1 | e2)
w = w.expand()
print('E1|e2 =', w)
w = (E1 | e3)
w = w.expand()
print('E1|e3 =', w)
w = (E2 | e1)
w = w.expand()
print('E2|e1 =', w)
w = (E2 | e3)
w = w.expand()
print('E2|e3 =', w)
w = (E3 | e1)
w = w.expand()
print('E3|e1 =', w)
w = (E3 | e2)
w = w.expand()
print('E3|e2 =', w)
w = (E1 | e1)
w = (w.expand()).scalar()
Esq = expand(Esq)
print('%(E1\\cdot e1)/E^{2} =', simplify(w / Esq))
w = (E2 | e2)
w = (w.expand()).scalar()
print('%(E2\\cdot e2)/E^{2} =', simplify(w / Esq))
w = (E3 | e3)
w = (w.expand()).scalar()
print('%(E3\\cdot e3)/E^{2} =', simplify(w / Esq))
xpdf(paper='letter', prog=True)
Exemple #23
0
from __future__ import print_function
from sympy import symbols, sin
from galgebra.printer import Format, xpdf, Fmt
from galgebra.ga import Ga
import sys

Format()
xyz_coords = (x, y, z) = symbols('x y z', real=True)
(o3d, ex, ey, ez) = Ga.build('e', g=[1, 1, 1], coords=xyz_coords, norm=True)
f = o3d.mv('f', 'scalar', f=True)
F = o3d.mv('F', 'vector', f=True)
B = o3d.mv('B', 'bivector', f=True)
l = [f, F, B]
print(Fmt(l))
print(Fmt(l, 1))
print(F.Fmt(3))
print(B.Fmt(3))

lap = o3d.grad * o3d.grad
print(r'%\nabla^{2} = \nabla\cdot\nabla =', lap)
dop = lap + o3d.grad
print(dop.Fmt(fmt=3, dop_fmt=3))

# xpdf(paper=(6, 7))
xpdf(pdfprog=None, paper=(6, 7))
Exemple #24
0
coords = (r, th, phi) = symbols('r,theta,phi', real=True)
sp3d = Ga('e_r e_th e_ph', g=[1, r**2, r**2 * sin(th)**2],
          coords=coords, norm=True)

sph_uv = (u, v) = symbols('u,v', real=True)
sph_map = [1, u, v]  # Coordinate map for sphere of r = 1
sph2d = sp3d.sm(sph_map, sph_uv)

print(r'(u,v)\rightarrow (r,\theta,\phi) = ', latex(sph_map))
# FIXME submanifold basis vectors are not normalized, g is incorrect
print('g =', latex(sph2d.g))
F = sph2d.mv('F', 'vector', f=True)  # scalar function
f = sph2d.mv('f', 'scalar', f=True)  # vector function
print(r'\nabla f =', sph2d.grad * f)
print('F =', F)
print(r'\nabla F = ', sph2d.grad * F)

cir_s = s = symbols('s', real=True)
cir_map = [pi /  8, s]
cir1d = sph2d.sm(cir_map, (cir_s,))

print('g =', latex(cir1d.g))
h = cir1d.mv('h', 'scalar', f=True)
H = cir1d.mv('H', 'vector', f=True)
print(r'(s)\rightarrow (u,v) = ', latex(cir_map))
print('H =', H)
print(latex(H))
print(r'\nabla h =', cir1d.grad * h)
print(r'\nabla H =', cir1d.grad * H)
xpdf(filename='submanifold.tex', paper=(6, 5), crop=True)
Exemple #25
0
from __future__ import division
from __future__ import print_function
from sympy import symbols, sin, cos, latex, Matrix
from galgebra.ga import Ga
from galgebra.printer import Format, xpdf

Format()
(x, y, z) = xyz = symbols('x,y,z', real=True)
(o3d, ex, ey, ez) = Ga.build('e_x e_y e_z', g=[1, 1, 1], coords=xyz)

A = o3d.lt('A')
print(r'\mbox{General Instantiation: }A =', A)
th = symbols('theta', real=True)
R = cos(th /  2) + (ex ^ ey) * sin(th /  2)
B = o3d.lt(R)
print(r'\mbox{Rotor: }R =', R)
print(r'\mbox{Rotor Instantiation: }B =', B)
dict1 = {ex: ey + ez, ez: ey + ez, ey: ex + ez}
C = o3d.lt(dict1)
print(r'\mbox{Dictionary} =', latex(dict1))
print(r'\mbox{Dictionary Instantiation: }C =', C)
lst1 = [[1, 0, 1], [0, 1, 0], [1, 0, 1]]
D = o3d.lt(lst1)
print(r'\mbox{List} =', latex(lst1))
print(r'\mbox{List Instantiation: }D =', D)
lst2 = [ey + ez, ex + ez, ex + ey]
E = o3d.lt(lst2)
print(r'\mbox{List} =', latex(lst2))
print(r'\mbox{List Instantiation: }E =', E)
xpdf(paper=(10, 12), crop=True)