This page was generated from doc/tutorials/gprint.nblink.

Demo of gprint

Author: Alan Bromborsky

Last updated: 2020-09-22

Original name: GAlgebraOutput.ipynb in http://www.faculty.luther.edu/~macdonal/GAfiles.zip

[1]:
# Make SymPy available to this program:
import sympy
from sympy import *

# Make GAlgebra available to this program:
from galgebra.ga import *
from galgebra.mv import *
from galgebra.printer import Fmt, GaPrinter, Format
    # Fmt:       sets the way that a multivector's basis expansion is output.
    # GaPrinter: makes GA output a little more readable.
    # Format:    turns on latex printer.
from galgebra.gprinter import gFormat, gprint
gFormat()
$\displaystyle \DeclareMathOperator{\Tr}{Tr}$$ $$\DeclareMathOperator{\Adj}{Adj}$$ $$\newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}$$ $$\newcommand{\lp}{\left (}$$ $$\newcommand{\rp}{\right )}$$ $$\newcommand{\paren}[1]{\lp {#1} \rp}$$ $$\newcommand{\half}{\frac{1}{2}}$$ $$\newcommand{\llt}{\left <}$$ $$\newcommand{\rgt}{\right >}$$ $$\newcommand{\abs}[1]{\left |{#1}\right | }$$ $$\newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}$$ $$\newcommand{\npdiff}[3]{\bfrac{\partial^{#3} {#1}}{\partial {#2}^{#3}}}$$ $$\newcommand{\lbrc}{\left \{}$$ $$\newcommand{\rbrc}{\right \}}$$ $$\newcommand{\W}{\wedge}$$ $$\newcommand{\prm}[1]{{#1}^{\prime}}$$ $$\newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}$$ $$\newcommand{\R}{\dagger}$$ $$\newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$ $$\newcommand{\grade}[2]{\left < {#1} \right >_{#2}}$$ $$\newcommand{\f}[2]{{#1}\lp {#2} \rp}$$ $$\newcommand{\eval}[2]{\left . {#1} \right |_{#2}}$$ $$\newcommand{\bs}[1]{\boldsymbol{#1}}$$ $$\newcommand{\grad}{\bs{\nabla}}$
[2]:
# Set up standard G^3 geometric algebra
g3coords = (x,y,z) = symbols('x y z', real=True) # Without real=True, symbols are complex
g3 = Ga('\mathbf{e}', g=[1,1,1], coords=g3coords)
(ex, ey, ez) = g3.mv()     # Program names of basis vectors.
(exr, eyr, ezr) = g3.mvr() # Program names of reciprocal basis vectors.
[3]:
gprint(r'word word\ word \cdot ex<ey', r'\\ \text{word word\ word \cdot ex<ey)}')
    # \\ gives a new line. The second string encloses the first in \text{}.
$\displaystyle \begin{equation*} word word\ word \cdot ex<ey\end{equation*}$
$\displaystyle \begin{equation*} \text{word word\ word \cdot ex<ey)}\end{equation*}$
[4]:
B = g3.mv('B', 'bivector')
Fmt(1)  # Set Fmt globally
gprint(r'\mathbf{B} =', B)         # B will be bold.
gprint(r'\mathbf{B} =', B.Fmt(3))  # Fmt(3) here only.
gprint(r'\mathbf{B} =', B)         # Global Fmt remembered.
$\displaystyle \mathbf{B} = B^{xy} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{y} + B^{xz} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{z} + B^{yz} \boldsymbol{\mathbf{e}}_{y}\wedge \boldsymbol{\mathbf{e}}_{z} $
$\displaystyle \mathbf{B} = \begin{aligned}[t] & B^{xy} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{y} \\ & + B^{xz} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{z} \\ & + B^{yz} \boldsymbol{\mathbf{e}}_{y}\wedge \boldsymbol{\mathbf{e}}_{z} \end{aligned} $
$\displaystyle \mathbf{B} = B^{xy} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{y} + B^{xz} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{z} + B^{yz} \boldsymbol{\mathbf{e}}_{y}\wedge \boldsymbol{\mathbf{e}}_{z} $
[5]:
gprint(r'\mathbf{B}^2 =', B*B)
$\displaystyle \mathbf{B}^2 = - {\left ( B^{xy} \right )}^{2} - {\left ( B^{xz} \right )}^{2} - {\left ( B^{yz} \right )}^{2} $
[6]:
M = g3.mv('M', 'mv')
gprint(r'\langle \mathbf{M} \rangle_2 =', M.grade(2))
   # grade(2) could be replaced by, e.g., odd(), or omitted altogether.
$\displaystyle \langle \mathbf{M} \rangle_2 = M^{xy} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{y} + M^{xz} \boldsymbol{\mathbf{e}}_{x}\wedge \boldsymbol{\mathbf{e}}_{z} + M^{yz} \boldsymbol{\mathbf{e}}_{y}\wedge \boldsymbol{\mathbf{e}}_{z} $
[7]:
gprint(r'\alpha_1\mathbf{X}/\gamma_r^3')
$\displaystyle \alpha_1\mathbf{X}/\gamma_r^3$
[8]:
# Program name and output are different
theta = symbols('theta', real = True)
th = symbols('theta', real = True)  # This will save typing if theta is used a lot.
gprint(theta, ', ', th)
$\displaystyle \theta , \theta $
[9]:
grad = g3.grad
[10]:
grad
[10]:
$\displaystyle \mathbf{\mathbf{e}_x} \frac{\partial}{\partial x} + \mathbf{\mathbf{e}_y} \frac{\partial}{\partial y} + \mathbf{\mathbf{e}_z} \frac{\partial}{\partial z}$
[11]:
gprint(r'{\nabla}')
$\displaystyle {\nabla}$
[ ]: