Linear and Geometric Algebra

Walk through theorems and exercises in the book.


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

Chapter 1: Vectors


In [2]:
(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)

In [3]:
V = o3d

In [4]:
a = V.mv('a', 'scalar')
b = V.mv('b', 'scalar')
c = V.mv('c', 'scalar')
d = V.mv('d', 'scalar')
u = V.mv('u', 'vector')
v = V.mv('v', 'vector')
w = V.mv('w', 'vector')

In [5]:
def vector(ga, components):
    bases = ga.mv()
    return sum([components[i] * e for i, e in enumerate(bases)])

Theorem 1.8


In [6]:
v + w == w + v


Out[6]:
True

In [7]:
(u + v) + w == u + (v + w)


Out[7]:
True

In [8]:
v + S(0) == v


Out[8]:
True

In [9]:
S(0) * v == S(0)


Out[9]:
True

In [10]:
S(1) * v == v


Out[10]:
True

In [11]:
a * (b * v) == (a * b) * v


Out[11]:
True

In [12]:
a * (v + w) == a * v + a * w


Out[12]:
True

In [13]:
(a + b) * v ==  a * v + b * v


Out[13]:
True

Problem 1.1.4


In [14]:
uu = vector(V, [1, 2, 3])
vv = vector(V, [4, 5, 6])
ww = vector(V, [5, 6, 7])

In [15]:
uu + vv


Out[15]:
\begin{equation*} 5 \boldsymbol{e}_{x} + 7 \boldsymbol{e}_{y} + 9 \boldsymbol{e}_{z} \end{equation*}

In [16]:
7 * uu + 2 * ww


Out[16]:
\begin{equation*} 17 \boldsymbol{e}_{x} + 26 \boldsymbol{e}_{y} + 35 \boldsymbol{e}_{z} \end{equation*}

In [17]:
7 * uu - 2 * ww


Out[17]:
\begin{equation*} -3 \boldsymbol{e}_{x} + 2 \boldsymbol{e}_{y} + 7 \boldsymbol{e}_{z} \end{equation*}

In [18]:
3 * uu + 2 * vv + ww


Out[18]:
\begin{equation*} 16 \boldsymbol{e}_{x} + 22 \boldsymbol{e}_{y} + 28 \boldsymbol{e}_{z} \end{equation*}

Problems 1.2


In [19]:
v + S(-1) * v


Out[19]:
\begin{equation*} 0 \end{equation*}

Chapter 2: Vector Spaces

Exercise 2.7


In [20]:
v0 = vector(V, [0, 0, 0])

In [21]:
a * v0 == v0


Out[21]:
True

Problem 2.1.5


In [22]:
(-a) * v == a * (-v)


Out[22]:
True

In [23]:
(-a) * v == - a * v


Out[23]:
True

In [24]:
sqrt(2) * u + Rational(2, 3) * v


Out[24]:
\begin{equation*} \left ( \sqrt{2} u^{x} + \frac{2 v^{x}}{3}\right ) \boldsymbol{e}_{x} + \left ( \sqrt{2} u^{y} + \frac{2 v^{y}}{3}\right ) \boldsymbol{e}_{y} + \left ( \sqrt{2} u^{z} + \frac{2 v^{z}}{3}\right ) \boldsymbol{e}_{z} \end{equation*}

Chapter 3 Matrices


In [25]:
MA = Matrix([[2, -1, 1], [0, -2, 5]])
MA


Out[25]:
$$\left[\begin{matrix}2 & -1 & 1\\0 & -2 & 5\end{matrix}\right]$$

In [26]:
MB = Matrix([[2, 3], [0, -1], [1, -3]])
MB


Out[26]:
$$\left[\begin{matrix}2 & 3\\0 & -1\\1 & -3\end{matrix}\right]$$

In [27]:
MAB = MA * MB
MAB


Out[27]:
$$\left[\begin{matrix}5 & 4\\5 & -13\end{matrix}\right]$$

In [28]:
MAB_00 = MA[0, :] * MB[:, 0]
MAB_00


Out[28]:
$$\left[\begin{matrix}5\end{matrix}\right]$$

In [29]:
MAB.inv()


Out[29]:
$$\left[\begin{matrix}\frac{13}{85} & \frac{4}{85}\\\frac{1}{17} & - \frac{1}{17}\end{matrix}\right]$$

In [30]:
MAB.inv() * MAB.det()


Out[30]:
$$\left[\begin{matrix}-13 & -4\\-5 & 5\end{matrix}\right]$$

In [31]:
MAB.inv() * MAB


Out[31]:
$$\left[\begin{matrix}1 & 0\\0 & 1\end{matrix}\right]$$

Exercise 3.11


In [32]:
a, b, c, d = symbols('a b c d')
M = Matrix([[a, b], [c, d]])
M


Out[32]:
$$\left[\begin{matrix}a & b\\c & d\end{matrix}\right]$$

In [33]:
M.det()


Out[33]:
$$a d - b c$$

In [34]:
M.inv()


Out[34]:
$$\left[\begin{matrix}\frac{d}{a d - b c} & - \frac{b}{a d - b c}\\- \frac{c}{a d - b c} & \frac{a}{a d - b c}\end{matrix}\right]$$

In [35]:
Mul(1 / M.det(), M.inv() * M.det())


Out[35]:
$$\frac{\left[\begin{matrix}d & - b\\- c & a\end{matrix}\right]}{a d - b c}$$

Theorem 3.5


In [36]:
a, b, c, d, e, f, g, h = symbols('a b c d e f g h')
A = Matrix([[a, b], [c, d]])
B =Matrix([[e, f], [g, h]])

In [37]:
A*B


Out[37]:
$$\left[\begin{matrix}a e + b g & a f + b h\\c e + d g & c f + d h\end{matrix}\right]$$

In [38]:
(A * B).inv()


Out[38]:
$$\left[\begin{matrix}\frac{\left(a e + b g\right) \left(c f + d h\right) - \left(a f + b h\right) \left(- c e - d g\right) - \left(a f + b h\right) \left(c e + d g\right)}{\left(a e + b g\right) \left(\left(a e + b g\right) \left(c f + d h\right) - \left(a f + b h\right) \left(c e + d g\right)\right)} & - \frac{a f + b h}{\left(a e + b g\right) \left(c f + d h\right) - \left(a f + b h\right) \left(c e + d g\right)}\\\frac{- c e - d g}{\left(a e + b g\right) \left(c f + d h\right) - \left(a f + b h\right) \left(c e + d g\right)} & \frac{a e + b g}{\left(a e + b g\right) \left(c f + d h\right) - \left(a f + b h\right) \left(c e + d g\right)}\end{matrix}\right]$$

In [39]:
B.inv() * A.inv()


Out[39]:
$$\left[\begin{matrix}\frac{c f}{\left(a d - b c\right) \left(e h - f g\right)} + \frac{d h}{\left(a d - b c\right) \left(e h - f g\right)} & - \frac{a f}{\left(a d - b c\right) \left(e h - f g\right)} - \frac{b h}{\left(a d - b c\right) \left(e h - f g\right)}\\- \frac{c e}{\left(a d - b c\right) \left(e h - f g\right)} - \frac{d g}{\left(a d - b c\right) \left(e h - f g\right)} & \frac{a e}{\left(a d - b c\right) \left(e h - f g\right)} + \frac{b g}{\left(a d - b c\right) \left(e h - f g\right)}\end{matrix}\right]$$

In [40]:
simplify((A * B).inv()) == simplify(B.inv() * A.inv())


Out[40]:
False

In [41]:
simplify((A * B).inv() - B.inv() * A.inv())


Out[41]:
$$\left[\begin{matrix}0 & 0\\0 & 0\end{matrix}\right]$$

Corollary 3.8


In [42]:
A.inv().inv() == A


Out[42]:
False

In [43]:
simplify(A.inv().inv() - A)


Out[43]:
$$\left[\begin{matrix}0 & 0\\0 & 0\end{matrix}\right]$$

Exercise 3.19


In [44]:
A = Matrix([
    [1, -4],
    [1, -1]
])
b = Matrix([3, -1])

In [45]:
A


Out[45]:
$$\left[\begin{matrix}1 & -4\\1 & -1\end{matrix}\right]$$

In [46]:
b


Out[46]:
$$\left[\begin{matrix}3\\-1\end{matrix}\right]$$

In [47]:
A.LUsolve(b)


Out[47]:
$$\left[\begin{matrix}- \frac{7}{3}\\- \frac{4}{3}\end{matrix}\right]$$

Chapter 4 Inner Product Spaces

Theorem 4 .2


In [48]:
v.project_in_blade(u)


Out[48]:
\begin{equation*} \frac{u^{x} \left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)}{{\left ( u^{x} \right )}^{2} + {\left ( u^{y} \right )}^{2} + {\left ( u^{z} \right )}^{2}} \boldsymbol{e}_{x} + \frac{u^{y} \left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)}{{\left ( u^{x} \right )}^{2} + {\left ( u^{y} \right )}^{2} + {\left ( u^{z} \right )}^{2}} \boldsymbol{e}_{y} + \frac{u^{z} \left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)}{{\left ( u^{x} \right )}^{2} + {\left ( u^{y} \right )}^{2} + {\left ( u^{z} \right )}^{2}} \boldsymbol{e}_{z} \end{equation*}

In [49]:
(u|v)/u**2*u


Out[49]:
\begin{equation*} \frac{u^{x} \left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)}{{\left ( u^{x} \right )}^{2} + {\left ( u^{y} \right )}^{2} + {\left ( u^{z} \right )}^{2}} \boldsymbol{e}_{x} + \frac{u^{y} \left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)}{{\left ( u^{x} \right )}^{2} + {\left ( u^{y} \right )}^{2} + {\left ( u^{z} \right )}^{2}} \boldsymbol{e}_{y} + \frac{u^{z} \left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)}{{\left ( u^{x} \right )}^{2} + {\left ( u^{y} \right )}^{2} + {\left ( u^{z} \right )}^{2}} \boldsymbol{e}_{z} \end{equation*}

In [50]:
v.project_in_blade(u) == (u|v)/u


Out[50]:
True

In [51]:
v.project_in_blade(w) + u.project_in_blade(w) == (u + v).project_in_blade(w)


Out[51]:
True

Theorem 4.3


In [52]:
(a * u) | v == a * (u | v)


Out[52]:
True

In [53]:
(u + v) | w == (u | w) + (v | w)


Out[53]:
True

In [54]:
u | v == v | u


Out[54]:
True

Definition 4 .11


In [55]:
v | v == v.norm2()


Out[55]:
True

Exercise 4 .16

parallelogram identity


In [56]:
(u + v).norm2() + (u - v).norm2() == 2 * u.norm2() + 2 * v.norm2()


Out[56]:
True

Lemma 4.13 (Cauchy-Schwarz inequality)


In [57]:
(u | v).norm() <= u.norm() * v.norm()


Out[57]:
$$\left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)^{1.0} \leq \sqrt{\left(u^{x}\right)^{2} + \left(u^{y}\right)^{2} + \left(u^{z}\right)^{2}} \sqrt{\left(v^{x}\right)^{2} + \left(v^{y}\right)^{2} + \left(v^{z}\right)^{2}}$$

In [58]:
simplify(u.norm() * v.norm() - (u | v).norm())


Out[58]:
$$\sqrt{\left(u^{x}\right)^{2} + \left(u^{y}\right)^{2} + \left(u^{z}\right)^{2}} \sqrt{\left(v^{x}\right)^{2} + \left(v^{y}\right)^{2} + \left(v^{z}\right)^{2}} - \left(u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}\right)^{1.0}$$

Definition 4.15 (Angle between vectors)


In [59]:
def cosv(u, v):
    return (u | v) / (u.norm() * v.norm())

In [60]:
cosv(u, v)


Out[60]:
\begin{equation*} \frac{u^{x} v^{x} + u^{y} v^{y} + u^{z} v^{z}}{\sqrt{{\left ( u^{x} \right )}^{2} + {\left ( u^{y} \right )}^{2} + {\left ( u^{z} \right )}^{2}} \sqrt{{\left ( v^{x} \right )}^{2} + {\left ( v^{y} \right )}^{2} + {\left ( v^{z} \right )}^{2}}} \end{equation*}

Exercise 4.32


In [67]:
VO4 = Ga('e', g=[1, 1, 1, 1], coords=symbols('v1,v2,v3,v4',real=True))

In [68]:
vo4 = vector(VO4, [1, 1, 1, 1])

In [69]:
vo4


Out[69]:
\begin{equation*} \boldsymbol{e}_{v1} + \boldsymbol{e}_{v2} + \boldsymbol{e}_{v3} + \boldsymbol{e}_{v4} \end{equation*}

In [75]:
e_u1 = vector(VO4, [3, 0, 4, 0])
e_u2 = vector(VO4, [0, 3, 0, 4])

In [76]:
e_u1


Out[76]:
\begin{equation*} 3 \boldsymbol{e}_{v1} + 4 \boldsymbol{e}_{v3} \end{equation*}

In [77]:
e_u2


Out[77]:
\begin{equation*} 3 \boldsymbol{e}_{v2} + 4 \boldsymbol{e}_{v4} \end{equation*}

In [78]:
u1, u2 = symbols('u1,u2',real=True)

In [91]:
coord_fun = u1 * e_u1 + u2 * e_u2
coord_fun


Out[91]:
\begin{equation*} 3 u_{1} \boldsymbol{e}_{v1} + 3 u_{2} \boldsymbol{e}_{v2} + 4 u_{1} \boldsymbol{e}_{v3} + 4 u_{2} \boldsymbol{e}_{v4} \end{equation*}

In [115]:
coord_map = [(coord_fun | e).obj for e in VO4.mv()]
coord_map


Out[115]:
$$\left [ 3 u_{1}, \quad 3 u_{2}, \quad 4 u_{1}, \quad 4 u_{2}\right ]$$

In [116]:
UO2 = VO4.sm(coord_map, [u1, u2])
UO2


Out[116]:
<galgebra.ga.Sm at 0x10ebe9d30>

In [122]:
UO2.u


Out[122]:
$$\left [ 3 u_{1}, \quad 3 u_{2}, \quad 4 u_{1}, \quad 4 u_{2}\right ]$$

In [117]:
UO2.g


Out[117]:
$$\left[\begin{matrix}25 & 0\\0 & 25\end{matrix}\right]$$

In [127]:
UO2E = e_u1 ^ e_u2
UO2E


Out[127]:
\begin{equation*} 9 \boldsymbol{e}_{v1}\wedge \boldsymbol{e}_{v2} + 12 \boldsymbol{e}_{v1}\wedge \boldsymbol{e}_{v4} -12 \boldsymbol{e}_{v2}\wedge \boldsymbol{e}_{v3} + 16 \boldsymbol{e}_{v3}\wedge \boldsymbol{e}_{v4} \end{equation*}

In [124]:
vo4.reflect_in_blade(UO2E)


Out[124]:
\begin{equation*} \frac{17}{25} \boldsymbol{e}_{v1} + \frac{17}{25} \boldsymbol{e}_{v2} + \frac{31}{25} \boldsymbol{e}_{v3} + \frac{31}{25} \boldsymbol{e}_{v4} \end{equation*}

In [ ]: