written 02/02/2026
alex@810lab.com

Reflections¶

Summary¶

In this we entertain some ideas about reflection coeficient in special relativity

Field decompositions¶

We are using Spacetime Algebra , but with time = $\gamma_4$, signature = (-1,-1,-1,1)

\begin{align*} -\gamma_{\not{4}}^2 = \gamma_4^2 = 1 \end{align*} Where we use slash to mean rejection from a given direction.

Time¶

Any object can be it can be decomposed based on symmetries with respect to a given direction. Commonly this is done with respect to time. Given a faraday bivector $F$, and some time direction $\gamma_4$ , this leads to a electric/magnetic (E/H) decomp \begin{align*} F &= \frac{1}{2} (F+\gamma_4 F\gamma_4^{-1}) +\frac{1}{2}( F-\gamma_4F\gamma_4^{-1}) \\ &= F\wedge \gamma_4\gamma_4^{-1} + F\cdot \gamma_4\gamma_4^{-1}\\ &= F_4 + F_{\not{4}} \\ &= E+H \end{align*}

General Direction¶

If instead of time, we choose a random direction $p$ as a decomposition vector, \begin{align*} F &= \frac{1}{2} (F+pFp^{-1}) +\frac{1}{2}( F-pFp^{-1}) \\ &= F_p + F_{\not{p}} \\ \end{align*}

If we further assume $F$ is given by the plane-wave formula ,
$$F(x)=e^{p\cdot x I }F_0.$$ where:

  • $x$ is a spacetime position,
  • $p$ is the spacetime propagation vector, and
  • $I \equiv \gamma_{1234}$ is psuedo-scalar.

then this decomposition is interpreted as a forward and reverse propagating waves. $$ F = F_p + F_{\not{p}} = A+B$$

(Note, non-standard plane-wave formulas considered here)

The decomposition is a choice that is up to us. Here is a picture in $\gamma_{134}$.

Time Harmonic Normal Incidence

Null exception¶

We do run into a numerical difficulty when we try to decompose a symmetry in a null object, since $x^{-1}$ is not well defined. The work around is to use idempotents. Assuming we have a null propagation vector $p$ and wand to decompose $F$ in forward and reverse propgations. Define,

\begin{align*} e_+ &= w+k\\ e_- &= w-k\\ e_{+-} &= e_+e_- \\ e_{-+} &= e_-e_+ \\ \end{align*}

Then $$F = F_+ +F_- = Fe_{+-}+Fe_{-+}$$

Implementation¶

In [1]:
from kingdon import Algebra
from kingdon.numerical import exp 
import numpy as np 

sta = Algebra(signature=[-1,-1,-1,1],start_index=1)
locals().update(sta.blades)
I = sta.pseudoscalar([1])

def norm(x):
    return x / np.sqrt(abs((x*x).e))

def round(mv, tol=1e-6):
    return mv.filter(lambda c: abs(c) > tol)

def decomp(F, p,tol=1e-6):
    if abs((p**2).e) < tol:  # we have a null vector. use idempotents.
        w,k = decomp(p, e4)
        w,k = norm(w), norm(k)
        ep, em =(w+k)/2, (w-k)/2
        epm, emp  = -ep*em, -em*ep
        return F*epm, F*emp
    else:
        return 1/2*(F + p*F/p), 1/2*(F - p*F/p)

def split(F,p):
    num,denom = decomp(F,p)
    return num/denom

def f(x, p, F0):
    I  = e1234
    return exp((p|x)*I)*F0 +.2*exp(((e3*p*e3)|x)*I)*F0 

x   = sta.random_vector()
p   = e3 + e4
F0  = e14 #+ .9*e13  # Ex + Hy
F   = lambda x: f(x,p=p, F0=F0) 

Fx = F(e4)
E,H =  decomp(Fx, e4)
A,B =  decomp(Fx, p)
Gamma = round(split(F(x),p) )
Z0    = round(split(F(x),e4) )
V     = round(split(p,e4 ))

s = {"E": E, "H": H, "A": A, "B": B, "Z0=E/H": E / H, "G0=B/A": B / A}
for k, v in s.items():
    print(k,'\t:', v)
E 	: 1.01 𝐞₂₃
H 	: 0.648 𝐞₁₄
A 	: 0.324 𝐞₁₃ + -0.324 𝐞₁₄ + -0.505 𝐞₂₃ + 0.505 𝐞₂₄
B 	: -0.324 𝐞₁₃ + -0.324 𝐞₁₄ + -0.505 𝐞₂₃ + -0.505 𝐞₂₄
Z0=E/H 	: 1.56 𝐞₁₂₃₄
G0=B/A 	: 0.25 𝐞₃₄
In [2]:
decomp(Fx, e4)
Out[2]:
(1.01 𝐞₂₃, 0.648 𝐞₁₄)
In [3]:
decomp(F(x), k)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[3], line 1
----> 1 decomp(F(x), k)

Cell In[1], line 16, in decomp(F, p, tol)
     15 def decomp(F, p,tol=1e-6):
---> 16     if abs((p**2).e) < tol:  # we have a null vector. use idempotents.
     17         w,k = decomp(p, e4)
     18         w,k = norm(w), norm(k)

TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

Maxwell's equation in terms of the vector potential $a$ $$\nabla \textbf{a} = F$$ (Sorry that we use the symbol $ \textbf{a}$ for the vector potential, but we already used $A$ and its a vector. Also, no one is going to read this anyway)

Simulate it¶

A EM-field simulator was made in this notebook, below we use it to look at a simple plane wave with circular polarization.

In [ ]:
from  fields import * 
def norm(x):
    return x / np.sqrt(abs((x*x).e))

def F(x):
    I = D.e0123
    F0 = D.e01 + .8*D.e23
    Ka = lambda x:    I*(.01*D.e3 + 2*D.e0)
    r = D.e3#+.1*D.e0
    Kb = lambda x:    r>>Ka(x)

    return (exp(x*Ka(x))>> (F0))+ 1*(exp(x*Kb(x))>> F0)
    
pga.graph(make_fields(F, e12_N=15,e12_bounds=3, e0_bounds=3,e3_N=3,e3_bounds=3),  
          grid=False,lineWidth=2,animate=True,scale=.15,height='600px')

Reflection¶

Time Harmonic Normal Incidence¶

Electrical Engineering is developed assuming time-harmonic-ness from the outset. Geometrically, this imposes projective geometry in a 'frequency space'. Consider a plane wave in a vaccum normally incident upon a surface, as depicted by the wave-vector diagram below.

Time Harmonic Normal Incidence

The situtation is time-invariant, and thus $w$ is unchanging.

The term time-harmonic is an application of bloch's theorem along time.

Splits¶

Phase velocity¶

$$V_p \equiv wk^{-1} = \frac{w}{k}=\frac{p_4}{p_{\not 4}}= \frac{p \cdot \gamma_4 }{p \wedge\gamma_4 } $$

Impedance, $Z$¶

$$Z \equiv EH^{-1} = \frac{F_4}{F_{\not 4}} = \frac{F\wedge\gamma_4 }{ F\cdot \gamma_4 }$$

Reflection Coefficient, $\Gamma$¶

$$\Gamma \equiv AB^{-1} = \frac{F_p}{F_{\not p}}= \frac{F\wedge p }{ F\cdot p }$$

In [ ]:
 
In [ ]:
 p
In [ ]:
import numpy as np 

norm = lambda x: x/np.sqrt(abs(((x)**2).e))
na = norm(w) + norm(k)
nb = norm(w) - norm(k)
Na = 1/4*(na*nb)
Nb = 1/4*(nb*na)

p*Nb, p*Na
In [ ]:
na =  w.normalized() +k.normalized()
nb =  w.normalized() -k.normalized()

import numpy as np 


b = np.tanh(np.pi/4 - np.atanh(((w/k)**2).sqrt().e))*nb
b,na
In [ ]:
k.normalized()
In [ ]: