Lorentz transformations.
Book by T. Matolcsi
Mathematical Preliminaries
A vector is represented as a nx1 matrix (column vector)
fricas
vect(x:List Expression Integer):Matrix Expression Integer == matrix map(y+->[y],x)
Function declaration vect : List(Expression(Integer)) -> Matrix(
Expression(Integer)) has been added to workspace.
Type: Void
fricas
vect [a0,a1,a2,a3]
fricas
Compiling function vect with type List(Expression(Integer)) ->
Matrix(Expression(Integer))
Type: Matrix(Expression(Integer))
Identity
fricas
ID:=diagonalMatrix([1,1,1,1])
Type: Matrix(Integer)
Applying the Lorentz form produces a co-vector (represent as a 1xn matrix or row)
fricas
G:=diagonalMatrix [-1,1,1,1]
Type: Matrix(Integer)
fricas
g(x)==transpose(x)*G
Type: Void
fricas
g(vect [a0,a1,a2,a3])
fricas
Compiling function g with type Matrix(Expression(Integer)) -> Matrix
(Expression(Integer))
Type: Matrix(Expression(Integer))
And scalar product is
fricas
dot(x,y)== (g(x)*y)::Expression Integer
Type: Void
fricas
dot(vect [a0,a1,a2,a3], vect [b0,b1,b2,b3])
fricas
Compiling function dot with type (Matrix(Expression(Integer)),Matrix
(Expression(Integer))) -> Expression(Integer)
Type: Expression(Integer)
Tensor product is
fricas
tensor(x,y) == x*g(y)
Type: Void
fricas
tensor(vect [a0,a1,a2,a3], vect [b0,b1,b2,b3])
fricas
Compiling function tensor with type (Matrix(Expression(Integer)),
Matrix(Expression(Integer))) -> Matrix(Expression(Integer))
Type: Matrix(Expression(Integer))
Verification
fricas
possible(x)==subst(x, map(y+->(y=(random(100) - random(100))),variables x) )
Type: Void
fricas
Is?(eq:Equation EXPR INT):Boolean == (lhs(eq)-rhs(eq)=0)::Boolean
Function declaration Is? : Equation(Expression(Integer)) -> Boolean
has been added to workspace.
Type: Void
fricas
Is2?(eq:Equation(Matrix(EXPR(INT)))):Boolean == _
( (lhs(eq)-rhs(eq)) :: Matrix Expression AlgebraicNumber = _
zero(nrows(lhs(eq)),ncols(lhs(eq)))$Matrix Expression AlgebraicNumber )::Boolean
Function declaration Is2? : Equation(Matrix(Expression(Integer)))
-> Boolean has been added to workspace.
Type: Void
Massive Objects
An object (also referred to as an obserser) is represented by a
time-like 4-vector
fricas
P:=vect [sqrt(p1^2+p2^2+p3^2+1),-p1,-p2,-p3];
Type: Matrix(Expression(Integer))
fricas
dot(P,P)
Type: Expression(Integer)
fricas
Q:=vect [sqrt(q1^2+q2^2+q3^2+1),-q1,-q2,-q3];
Type: Matrix(Expression(Integer))
fricas
R:=vect [sqrt(r1^2+r2^2+r3^2+1),-r1,-r2,-r3];
Type: Matrix(Expression(Integer))
fricas
S:=1/sqrt(1-s1^2-s2^2-s3^2)*vect [1,-s1,-s2,-s3]
Type: Matrix(Expression(Integer))
fricas
dot(S,S)
Type: Expression(Integer)
Associated with each such vector is the orthogonal 3-d Euclidean subspace
Relative Velocity
An object P has a unique relative velocity w(P,Q) with respect
to object Q given by
fricas
v(P,Q)==-P/dot(P,Q)-Q
Type: Void
Observer P measures velocity v(Q,P). v(Q,P) is space-like and in .
fricas
dot(P,v(Q,P))
fricas
Compiling function v with type (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Matrix(Expression(Integer))
Type: Expression(Integer)
fricas
possible dot(v(Q,P),v(Q,P))::EXPR Float
fricas
Compiling function possible with type Expression(Integer) ->
Expression(Integer)
Type: Expression(Float)
fricas
dot(Q,v(P,Q))
Type: Expression(Integer)
fricas
possible dot(v(P,Q),v(P,Q))::EXPR Float
Type: Expression(Float)
Lorentz Boost
is a linear bijection that preserves
and maps orthogonal compliments into each other.
fricas
L(P,Q) == ID + tensor(P+Q,P+Q)/(1-dot(P,Q)) - 2*tensor(P,Q)
Type: Void
fricas
Is2?(L(P,P) = ID)
fricas
Compiling function L with type (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Matrix(Expression(Integer))
fricas
Compiling function Is2? with type Equation(Matrix(Expression(Integer
))) -> Boolean
Type: Boolean
fricas
Is2?(L(P,Q)*L(Q,P) = ID)
Type: Boolean
fricas
Is2?(L(P,Q)*Q=P)
Type: Boolean
fricas
Is2?(L(P,Q)*v(P,Q) = -v(Q,P))
Type: Boolean
Composition of two Lorentz boosts is not a Lorentz boost
fricas
Is2?(L(R,P)*L(P,Q) = L(R,Q))
Type: Boolean
Lorentz boost with respect to observer "at rest"
fricas
L(vect [1,0,0,0],vect [u0,-u1,-u2,-u3])
Type: Matrix(Expression(Integer))
fricas
map(x+->eval(x,[u0=_\kappa,u1=_\kappa*v',u2=0,u3=0]),%)
Type: Matrix(Expression(Integer))