My first book, Geometric Algebra for Electrical Engineers is available in the following formats.

The softcover and hardcover versions are both published using Amazon’s kindle direct publishing and have a 6×9″ format (322 pages.)  I used to also have a color print version available, but unpublished that once the hardcover option became available (but the free pdf version is color.)  If you are not in the USA, look for the book on your local Amazon marketplace, as it has been published with expanded distribution.

Feel free to email me with feedback, questions or comments. I have also allocated a discord server for myself with the latex bot running, so if you have questions that require back and forth, or math formatted chat.   A discord chat is far superior to email, twitter DMs, linked-in messages, or math incapable communication channels.

If you download the free PDF and feel undercharged, feel free to send some bitcoin my way.


Why I wrote this book.

This book was the product of an M.Eng “project course”, where my aim was to

  1. Perform a literature review of applications of geometric algebra to the study of electromagnetism.
  2. Identify the subset of the literature that had direct relevance to electrical engineering.
  3. Create a complete, and as compact as possible, introduction to the prerequisites required for a graduate or advanced undergraduate electrical engineering student to be able to apply geometric algebra to problems in electromagnetism. With those prerequisites in place, work through the fundamentals of electromagnetism in a geometric algebra context.
  4. Optionally, time permitting, review existing and/or create some Computer Algebra Software (CAS) for symbolic Geometric Algebra.

This served to provide the engineering credits I needed to graduate, but also was an opportunity to assemble some of my study related to Geometric Algebra into a coherent narrative.  This is in stark contrast to my “Exploring Physics with Geometric Algebra” writing, which was assembled from many individual articles, and is full of redundancy, and was written for myself at the point of writing.

Why geometric algebra?

Geometric algebra generalizes vectors, providing algebraic representations of not just directed line segments, but also points, plane segments, volumes, and higher degree geometric objects (hypervolumes.). The geometric algebra representation of planes, volumes and hypervolumes requires a vector dot product, a vector multiplication operation, and a generalized addition operation. The dot product provides the length of a vector and a test for whether or not any two vectors are perpendicular. The vector multiplication operation is used to construct directed plane segments (bivectors), and directed volumes (trivectors), which are built from the respective products of two or three mutually perpendicular vectors. The addition operation allows for sums of scalars, vectors, or any products of vectors. Such a sum is called a multivector.

The power to add scalars, vectors, and products of vectors can be exploited to simplify much of electromagnetism. In particular, Maxwell’s equations for isotropic media can be merged into a single multivector equation
\lr{ \spacegrad + \inv{c} \PD{t}{}} \lr{ \BE + I c \BB } = \eta\lr{ c \rho – \BJ },
where \( \spacegrad \) is the gradient, \( I = \Be_1 \Be_2 \Be_3 \) is the ordered product of the three R^3 basis vectors, \( c = 1/\sqrt{\mu\epsilon}\) is the group velocity of the medium, \( \eta = \sqrt{\mu/\epsilon} \), \( \BE, \BB \) are the electric and magnetic fields, and \( \rho \) and \( \BJ \) are the charge and current densities. This can be written as a single equation
\lr{ \spacegrad + \inv{c} \PD{t}{}} F = J,
where \( F = \BE + I c \BB \) is the combined (multivector) electromagnetic field, and \( J = \eta\lr{ c \rho – \BJ } \) is the multivector current.

Encountering Maxwell’s equation in its geometric algebra form leaves the student with more questions than answers. Yes, it is a compact representation, but so are the tensor and differential forms (or even the quaternionic) representations of Maxwell’s equations. The student needs to know how to work with the representation if it is to be useful. It should also be clear how to use the existing conventional mathematical tools of applied electromagnetism, or how to generalize those appropriately. Individually, there are answers available to many of the questions that are generated attempting to apply the theory, but they are scattered and in many cases not easily accessible.

Much of the geometric algebra literature for electrodynamics is presented with a relativistic bias, or assumes high levels of mathematical or physics sophistication. The aim of this work was an attempt to make the study of electromagnetism using geometric algebra more accessible, especially to other dumb engineering undergraduates like myself. In particular, this project explored non-relativistic applications of geometric algebra to electromagnetism. The end product of this project was a fairly small self contained book, titled “Geometric Algebra for Electrical Engineers”. This book includes an introduction to Euclidean geometric algebra focused on R^2 and R^3 (64 pages), an introduction to geometric calculus and multivector Green’s functions (64 pages), applications to electromagnetism (82 pages), and some appendices. Many of the fundamental results of electromagnetism are derived directly from the multivector Maxwell’s equation, in a streamlined and compact fashion. This includes some new results, and many of the existing non-relativistic results from the geometric algebra literature. As a conceptual bridge, the book includes many examples of how to extract familiar conventional results from simpler multivector representations. Also included in the book are some sample calculations exploiting unique capabilities that geometric algebra provides. In particular, vectors in a plane may be manipulated much like complex numbers, which has a number of advantages over working with coordinates explicitly.


In many ways this work only scratches the surface. Many more worked examples, problems, figures and computer algebra listings should be added. In depth applications of derived geometric algebra relationships to problems customarily tackled with separate electric and magnetic field equations should also be incorporated. There are also theoretical holes, topics covered in any conventional introductory electromagnetism text, that are missing. Examples include the Fresnel relationships for transmission and reflection at an interface, in depth treatment of waveguides, dipole radiation and motion of charged particles, bound charges, and meta materials to name a few. Many of these topics can probably be handled in a coordinate free fashion using geometric algebra. Despite all the work that is required to help bridge the gap between formalism and application, making applied electromagnetism using geometric algebra truly accessible, it is my belief this book makes some good first steps down this path.

The choice that I made to completely avoid the geometric algebra space-time-algebra (STA) is somewhat unfortunate. It is exceedingly elegant, especially in a relativisitic context. Despite that, I think that this was still a good choice from a pedagogical point of view, as most of the prerequisites for an STA based study will have been taken care of as a side effect, making that study much more accessible.

Mathematica packages for Geometric Algebra.

I initially had some trouble with some of the existing Mathematica packages that I found for Geometric Algebra (i.e. they would hang my Mathematica front-end intermittently), and ended up writing a couple less fancy Mathematica packages myself.  Those can be found in my repository

There are four Mathematica packages, Cl20.m, GA20.m, GA30.m and GA13.m.

  • Cl20.m uses two complex numbers to represent the (2D Euclidean) algebra.
  • GA20.m and GA30.m use Pauli matrices to represent the respective (2D and 3D) algebras
  • GA13.m uses uses Dirac matrices as a representation of the space time algebra

Each of these packages use less tricky Mathematica syntax than many of the existing packages that I found (and didn’t hang my Mathematica front end).  For the examples in the book I ended up using an existing (and probably more well known) package, CliffordBasic.m geometric algebra module, instead of my less general (and perhaps more hacky) implementation.

Feedback or contribution.

Should you wish to actively contribute typo fixes (or even more significant changes) to this book, you can do so by contacting me, or by forking your own copy of the associated git repositories and building the book pdf from source, and submitting a subsequent merge request.


git clone [email protected]:peeterjoot/latex-notes-compilations.git peeterjoot
cd peeterjoot

submods="figures/GAelectrodynamics figures/gabook mathematica GAelectrodynamics gapauli latex frequencydomain"
for i in $submods ; do
   git submodule update --init $i
   (cd $i && git checkout master)
export PATH=`pwd`/latex/bin:$PATH

cd GAelectrodynamics
make mmacells.sty all

I reserve the right to impose dictatorial control over any editing and content decisions, and may not accept merge requests as-is, or at all. That said, I’ll probably not refuse reasonable suggestions or merge requests.

Experimenting with pricing of the book.

In mid May 2020, I raised the price of the paperback version slightly (from $12 to $14.50 USD).  That’s a 17% price increase, but the price is still pretty low from an absolute value perspective.  This price increase was an experiment in response to a reseller (SuperBookDeals) buying copies at $12 and then reselling them at higher prices.  For some reason amazon lists the higher price reseller copies before their own direct sales version, so a buyer had to go out of their way to find the lowest priced version.  I wouldn’t care if resellers undercut the list price, and then got a preferential listing from amazon, but the fact that they do this at a higher price suggests I’d set the price too low.

In Aug 2023, I raised the price further, reflecting Amazon printing cost increases.

If you are interested in a copy of the book, but don’t like the price, see above for a link to the current (color) PDF version, which is still available for free.


  • V0.3.X (Mmm DD, 202X)
    • New figures didn’t have mathematica notebook links (in non-print version).
    • Some other Mathematica notebooks for the book weren’t in the index.
    • new problem: twoForceStaticsProblem.tex
  • V0.3.5 (Dec 15, 2023)
    • Rewrite spherical polar section with the geometry first, not the coordinate representation, nor the CAS stuff.
    • Move the coordinates -> GA derivation to a problem.
    • New figure: sphericalPolarFig2.
    • update spherical polar figure1 with orientation of j.
    • Add to helpful formulas: Vector calculus identities.
    • Note about ambituity of our curl notation.
    • Add some references to the d’Alembertian (wave equation) operator.
    • New section (chapter 2): Vector calculus identities.
    • Two (wedge) curl examples (vector field) to make things less abstract.
    • bivector field curl examples (problem.)
    • curl with polar form representation of gradient and field (problem.)
    • curl of 3D vector field example.
  • V0.3.2 (Dec 8, 2023)
    • Add to helpful formulas: Determinant form of triple wedge.
    • Add figure showing the spherical polar conventions picked.
    • Add a problem showing that \( (e^x)’ = x’ e^x \) only when \( x \) and \( x’ \) commute, which is true for scalars and complex numbers, but not necessarily true for abstract entities, such as multivectors and square matrices.
    • Spherical polar coordinates: do not skip steps for \( \mathbf{x}_\phi \) computation.
    • Rewrite the Multivector potentials section. No longer pulling the ideas out of a magic hat, instead trying to motivate them.  Compromised on the strategy to do so, leaving some of the details to problems.
  • V0.3.0 (Nov 10, 2023)
    • Add ‘Helpful Formulas’ appendix G.
  • V0.2.1 (Sep 30, 2023)
    • Added best fit solution content from recent video and blog. Also refreshed a couple more figures (removing numeric tick markers.)
  • V0.1.19-2 (Sep 2, 2023)
    • Reworked many of the Mathematica generated figures.  Now using the MaTeX[] extension to do the figure labelling, as it looks much better, and is consistent with the fonts in the text.Each of these are individually very small changes, barely noticeable, but I think it makes a nice difference to overall quality.In many cases, I’ve generated new separate figures for the black and white amazon paper editions of the book, using straight black instead of colors, so they don’t look as washed out.
  • V0.1.18-4 (Aug 22, 2023)
    • Internal: attempt to use tex4ebook to create an epub/mobi format that will work as a kindle book.  This failed horribly, due to kindle’s processing step (also seen with Kindle previewer 3), which rescales all the equation images to make them into too-big squares (other standalone viewers like Calibre do not mangle the images this way.)

    • Rework the spherical unit vector representation example, to use \( \mathbf{e}_3 e^{j(\theta + pi/2)} \) for the polar unit vector, which is more compact and simpler to manipulate.
    • Internal: specialize the colors used for the uploads (i.e.: the paperback and hardcover versions on amazon) to use Black and White instead of the DarkOliveGreen/Maroon color scheme that I use for the online version.  This should makes some of the text show up less grey in the printed version of the book.
  • V0.1.18-3 (Aug 14, 2023)
    • Incorporate reciprocal discussion with Nicholas (twitter DM), and try to clarify confusion in discord thread on the same.

  • V0.1.18-2 (Aug 1, 2023)
    • Nicholas: 2.3.1 first sentance: typo: this should say “…contains a product…” and should end with a period.

    • Nicholas: typo: In the text above figure 2.1, (4,2)) has one too many parentheses.

    • Nicholas: Section 2.2 is entitled “Curvilinear Coordinates”.  And definition 2.2 is entitled the same.  But curvilinear coordinates are not explicitly defined; instead, the curvilinear basis is defined.  It’s pretty obvious that the coordinates are those with respect to the basis.  But perhaps you’d either like to change the title to “Curvilinear basis” or explicitly define what the coordinates are?

    • 2.98b isn’t obvious.  Add that as a problem.

  • V0.1.18-1 (Jul 30, 2023)

    • Nicholas:
      •    In (2.86), I’m not sure what \hat{ rho } and \hat{ phi } are.  How would I know that \hat{ phi } = (1/rho) x_phi ?  — Clarified.
      •    Typo. grad rho = ( cos phi, sin phi ) in equation (2.84).  That is, I think the 1 / rho should not be in the first line of that equation.
      •    Typo: x_phi in the paragraph following (2.75b) should have a rho in it: x_phi = rho e_2 exp( i phi ).
      •    Typo: to be consistent with the rest of the book, I think that the last expression of (2.72) should be a delta with a subscript and a superscript, but without a space in the subscript.
    • surfaceintegral.tex   

      • Raise an index in Kronecker delta.

  • V0.1.17-11 (Jul 16, 2023)
    • Nicholas Dwark: another slight typo.  In the paragraph above 2.2.3, there’s a sentence that starts “Given”.  This seems like an incomplete sentence to me.  I think a way to change this paragraph would be “Consider the parameterization x=… with curvilinear basis elements x_1, … and reciprocal frame reciprocal frame x^1, ….  In this case, the sums over numeric indexes …”
    • Raise i index in final line of Theorem 2.1: Reciprocal frame vectors.

    • Small KDP gutter fix.
  • V0.1.17-9 (Jul 14, 2023)
    • Nicholas Dwark: The “of” after “subspace” should not be there.  For our the function equation (2.31) our …” should be “For equation (2.31), our …”
  • V0.1.17-8 (Jul 4, 2023)
    • Nicholas Dwark: triple product -> the triple product.  Use scalar triple product and vector triple product where appropriate.
    • In the sentence after equation (1.107), “component” is singular, so “lie” should be “lies”.

    • (1.103) is described as a bivector-trivector dot product.  But I think that e1+2e2 is a vector, and it should be a “vector-trivector” dot product.

  • V0.1.17-7 (Jul 3, 2023)
    • Nicholas Dwark: “theorem 1.3” is mistakenly repeated twice in footnote 3 under figure 1.7 in your book.
  • V0.1.17-5 (Mar 26, 2023)
    • Run preface.tex through spellcheck like everything else. Thanks to Pippy on discord for pointing out the “dimemsion” spelling error.
    • Purge remaining dmath’s
    • answer for problem:isotropicMaxwells:720
    • isotropicMaxwells.tex: answer for problem:isotropicMaxwells:700 (and answer section for chapter III.)
    • Evaluate the integral of the Green’s function for the forced damped harmonic oscillator.
  • V0.1.17-2 (Feb 11, 2023)
    • Fix typos for the underdog swing equations (Green’s function derivation missing the damping constant.) Thanks to prlw1 (on github.)
    • Change the elliptical parameterization in chapter II from the overly clever hyperbolic form to just weighted sine and cosines. The original representation given in a problem (solution added.) Derivation of reciprocal frame and verification added for the sinusoidal parameterization also presented as a problem.
  • V0.1.16-19 (Feb 5, 2023)
    • Add solutions for most of the chapter 1 problems.
  • V0.1.16-16 (Oct 16, 2022)
    • Spelling and grammar error notes from Prof. Norman Derby
    • Clarify sign following eq. 1.23 — thanks to Prof Normal Derby!
  • V0.1.16-14 (Oct 9, 2022)
    • Provide a hint for problem 2.1 (Wrenn Wooten.)
  • V0.1.16-13 (May 15, 2022)
    • Fix equations 2.81 2.82 — error found by Christopher
    • test drove build instructions (slight fix required.)
    • restore latexsym \Box as dAlembertian
    • gutter fixes.
    • perl -p -i -e ‘s/ *$//’ `cat spellcheckem.txt `
    • purge most dmath usage. MacTex upgrade has made these seemingly malfunction, and lines are getting split in all sorts of weird places.
  • V0.1.16-5 (Sept 26, 2021)
    • N.D. Foreest: “in eqs 2.46 en 2.49 I would show first how to compute the product of the two vectors. Then taking the scalar part gives the conclusion of 2.46, but 2.49 becomes much shorter. Like this, the unifying idea of ga becomes also a bit clearer perhaps”
  • V0.1.16-4 (Sept 22, 2021)
    • Peter Eriksen: I’ve found some small, potential errors in the book:…
  • V0.1.16-3 (Aug 4, 2021)
    • Nicky, D, Foreest: typo in eq 2.134. Shouldn’t the operator L be in front of the second step?
    • Fix typo in vector Green’s function for space time gradient
  • V0.1.16-1 (Feb 18, 2021)
    • Switch a couple figures to black and white.
    • Parameterize the path to twoParameterDifferentialFig.eps (color vs. black and white.)
    • d’Lambertian -> d’Alembertian (Thanks to Jack Paladin!)
    • s/Othogonal/Orthogonal/ (thanks to Zhengbang Zhou)
    • Spelling fixes.
    • Run the duplicate word checker from
    • Ran link checker and fixed two.
  • V0.1.16-0 (July 28, 2020)
    • preface tweak: display Maxwell’s equation in final form from the get go.
    • Apply suggestion from sigs.
    • Fix errors in cross product wedge relation example: thanks to Bill Ignatiuk!
    • Rework formsVsGA.tex as an appendix.
    • David: typo: page 18, (1.11) For example… (e1)^2 = (e2)^2 = (e3)^3 = 1. The power for (e sub 3) should be 2
    • Bruce Gould: pg 106: In the last expression I think the v1’s should be U2’s.
    • Add Tim Put and some other reviewers that I’d missed to the thanks.
    • Attempt to fix the missing dashes in the bash lstlisting.
    • Merge pull request #1 from TimPut/typos
  • V0.1.15-6 (May 2, 2019)
    • Update figures (thicker lines, remove some ticks, …) and link them to the mathematica link anchors.
    • “in figure fig.” -> “in fig”.
    • Extend my hacks of the classic thesis template to use 6×9 with smaller than default margins. Now have the preface page numbers not in the bleed area of the page.
    • Split colorlablebox into separate .sty (for phy452 notes.)
    • Fix pdfbookmarks for contents and list of figures (so that they don’t show up under the preface)
    • Index quaternion (Bruce Gould)
    • GAelectrodynamics.tex: Want scrheadings starting before contents otherwise page numbers are out of bounds (and the page headings are MIA)
    • Bruce: “May I suggest that the proofs should have the end-of-proof symbol at the end?” Used the amsthm proof environment to do this.
    • Theorem 1.2: turn the converse into a footnote, to be seen later. (Bruce)
    • Added Bruce Gould to the thanks.
    • This version uploaded to kdp (effectively the “2nd” edition)
  • V0.1.14 (Jan 2019)
    • various edits to chapter 1, plus adjustments to produce a 6×9 version for createspace.
  • V0.1.8 (July 2018)
    • start with proper definion of line integral
    • define a bivector valued multivector surface area integral, and provide some examples.
    • volume integral and example
    • call the line integral result: the fundamental theorem for line integrals.
    • rework surface integral content.
    • Got the basic reorganization of chapter2 done, properly introducing line integral, surface integral and volume integral before the fundamental theorem specializations.
    • rewrite normalVectors as theorem-example-proof
    • incorporate more feedback from Mo.
    • products.tex: split the big hybrid definition into two theorems (dot is scalar selection, vector product has grades 0, 2) and one definition (wedge product).
    • fixes for example: products of two unit vectors.
    • use (for example) “grade (0,1)-multivector” instead of “0,1 multivector” or “grade 0,1 multivector”
    • Rework dual as definition, examples, discussion, instead of the definition last.
    • incorporate my annotated comments up to page 12 (ch1).
  • V0.1.7: (April 2018)
    • More comments from Mo. remove the figure that came out blank in the printed version.
    • multivector definition changed to sums of scalars, vectors, and products of vectors, special cases of which are k-vectors. (How to interpret products such as e_1 e_1 will need to come later.)
    • got rid of contraction axiom reference in the multivector/multivector space intro.
    • split out definition of multivector from multivector space. still editing the result, which isn’t entirely coherent.
    • rewrite preface again.
    • intro materials: add examples.
    • start splitting the big ch1 summary table, and do a better introduction to vectors to start things off.
    • add indexing of various symbols at point of first use.
    • change tables to use \newtcolorbox (this can embed the desired layout attributes).
    • small spaces (\,) after dV, dA, …. when they are first in the integrand.
    • start incorporating my paper edit notes from first draft createspace print.
    • experimenting with 6×9 layout. didn’t reduce the createspace cost (but increased it)
    • lr’s on some vector derivatives.