LeviCivita
,
Permutations
,
InProduct
,
CrossProduct
,
ZeroVector
,
BaseVector
,
Identity
,
ZeroMatrix
,
DiagonalMatrix
,
OrthogonalBasis
,
OrthonormalBasis
,
IsMatrix
,
Normalize
,
Transpose
,
Determinant
,
Trace
,
Inverse
,
Minor
,
CoFactor
,
SolveMatrix
,
CharacteristicEquation
,
EigenValues
,
EigenVectors
,
IsHermitian
,
IsOrthogonal
,
IsSymmetric
,
IsSkewSymmetric
,
IsUnitary
,
IsIdempotent
,
JacobianMatrix
,
VandermondeMatrix
,
HessianMatrix
,
WronskianMatrix
,
SylvesterMatrix
.
Linear Algebra
This chapter describes the commands for doing linear
algebra. They can be used to manipulate vectors, represented as lists,
and matrices, represented as lists of lists.
LeviCivita -- totally anti-symmetric Levi-Civita symbol
Standard library
Calling format:
Parameters:
list -- a list of integers 1 .. n in some order
Description:
LeviCivita implements the Levi-Civita symbol. This is generally
useful for tensor calculus. list should be a list of integers,
and this function returns 1 if the integers are in successive order,
eg. LeviCivita( {1,2,3,...} ) would return 1. Swapping two elements of this
list would return -1. So, LeviCivita( {2,1,3} ) would evaluate
to -1.
Examples:
In> LeviCivita({1,2,3})
Out> 1;
In> LeviCivita({2,1,3})
Out> -1;
In> LeviCivita({2,2,3})
Out> 0;
|
See also:
Permutations
.
Permutations -- get all permutations of a list
Standard library
Calling format:
Parameters:
list -- a list of elements
Description:
Permutations returns a list with all the permutations of
the original list.
Examples:
In> Permutations({a,b,c})
Out> {{a,b,c},{a,c,b},{c,a,b},{b,a,c},
{b,c,a},{c,b,a}};
|
See also:
LeviCivita
.
InProduct -- inner product of vectors
Standard library
Calling format:
InProduct(a,b)
a . b (prec. 3)
|
Parameters:
a, b -- vectors of equal length
Description:
The inner product of the two vectors "a" and "b" is returned. The
vectors need to have the same size.
Examples:
In> {a,b,c} . {d,e,f};
Out> a*d+b*e+c*f;
|
See also:
CrossProduct
.
CrossProduct -- outer product of vectors
Standard library
Calling format:
CrossProduct(a,b)
a X b (prec. 3)
|
Parameters:
a, b -- three-dimensional vectors
Description:
The outer product (also called the cross product) of the vectors "a"
and "b" is returned. The result is perpendicular to both "a" and
"b" and its length is the product of the lengths of the vectors.
Both "a" and "b" have to be three-dimensional.
Examples:
In> {a,b,c} X {d,e,f};
Out> {b*f-c*e,c*d-a*f,a*e-b*d};
|
See also:
InProduct
.
ZeroVector -- create a vector with all zeroes
Standard library
Calling format:
Parameters:
n -- length of the vector to return
Description:
This command returns a vector of length "n", filled with zeroes.
Examples:
In> ZeroVector(4)
Out> {0,0,0,0};
|
See also:
BaseVector
,
ZeroMatrix
,
IsZeroVector
.
BaseVector -- base vector
Standard library
Calling format:
Parameters:
k -- index of the base vector to construct
n -- dimension of the vector
Description:
This command returns the "k"-th base vector of dimension "n". This
is a vector of length "n" with all zeroes except for the "k"-th
entry, which contains a 1.
Examples:
In> BaseVector(2,4)
Out> {0,1,0,0};
|
See also:
ZeroVector
,
Identity
.
Identity -- make identity matrix
Standard library
Calling format:
Parameters:
n -- size of the matrix
Description:
This commands returns the identity matrix of size "n" by "n". This
matrix has ones on the diagonal while the other entries are zero.
Examples:
In> Identity(3)
Out> {{1,0,0},{0,1,0},{0,0,1}};
|
See also:
BaseVector
,
ZeroMatrix
,
DiagonalMatrix
.
ZeroMatrix -- make a zero matrix
Standard library
Calling format:
Parameters:
n -- number of rows
m -- number of columns
Description:
This command returns a matrix with "n" rows and "m" columns,
completely filled with zeroes.
Examples:
In> ZeroMatrix(3,4)
Out> {{0,0,0,0},{0,0,0,0},{0,0,0,0}};
|
See also:
ZeroVector
,
Identity
.
DiagonalMatrix -- construct a diagonal matrix
Standard library
Calling format:
Parameters:
d -- list of values to put on the diagonal
Description:
This command constructs a diagonal matrix, that is a square matrix
whose off-diagonal entries are all zero. The elements of the vector
"d" are put on the diagonal.
Examples:
In> DiagonalMatrix(1 .. 4)
Out> {{1,0,0,0},{0,2,0,0},{0,0,3,0},{0,0,0,4}};
|
See also:
Identity
,
ZeroMatrix
.
OrthogonalBasis -- create an orthogonal basis
Standard library
Calling format:
Parameters:
W - A linearly independent set of row vectors (aka a matrix)
Description:
Given a linearly independent set W (constructed of rows vectors),
this command returns an orthogonal basis V for W, which means
that span(V) = span(W) and InProduct(V[i],V[j]) = 0 when i != j.
This function uses the Gram-Schmidt orthogonalization process.
Examples:
In> OrthogonalBasis({{1,1,0},{2,0,1},{2,2,1}})
Out> {{1,1,0},{1,-1,1},{-1/3,1/3,2/3}};
|
See also:
OrthonormalBasis
,
InProduct
.
OrthonormalBasis -- create an orthonormal basis
Standard library
Calling format:
Parameters:
W - A linearly independent set of row vectors (aka a matrix)
Description:
Given a linearly independent set W (constructed of rows vectors),
this command returns an orthonormal basis V for W. This is done
by first using OrthogonalBasis(W), then dividing each vector by its
magnitude, so as the give them unit length.
Examples:
In> OrthonormalBasis({{1,1,0},{2,0,1},{2,2,1}})
Out> {{Sqrt(1/2),Sqrt(1/2),0},{Sqrt(1/3),-Sqrt(1/3),Sqrt(1/3)},
{-Sqrt(1/6),Sqrt(1/6),Sqrt(2/3)}};
|
See also:
OrthogonalBasis
,
InProduct
,
Normalize
.
IsMatrix -- test for a matrix
Standard library
Calling format:
Parameters:
M -- a mathematical object
Description:
IsMatrix returns True if M is a matrix, False otherwise. Something is
considered to be a matrix if it is a list and all the entries of this
list are themselves lists.
Examples:
In> IsMatrix(ZeroMatrix(3,4))
Out> True;
In> IsMatrix(ZeroVector(4))
Out> False;
In> IsMatrix(3)
Out> False;
|
See also:
IsVector
.
Normalize -- normalize a vector
Standard library
Calling format:
Parameters:
v -- a vector
Description:
Return the normalized (unit) vector parallel to v: a vector having the same
direction but with length 1.
Examples:
In> Normalize({3,4})
Out> {3/5,4/5};
In> % . %
Out> 1;
|
See also:
InProduct
,
CrossProduct
.
Transpose -- get transpose of a matrix
Standard library
Calling format:
Parameters:
M -- a matrix
Description:
Transpose returns the transpose of a matrix M. Because matrices are
just lists of lists, this is a useful operation too for lists.
Examples:
In> Transpose({{a,b}})
Out> {{a},{b}};
|
Determinant -- determinant of a matrix
Standard library
Calling format:
Parameters:
M -- a matrix
Description:
Returns the determinant of a matrix M.
Examples:
In> DiagonalMatrix(1 .. 4)
Out> {{1,0,0,0},{0,2,0,0},{0,0,3,0},{0,0,0,4}};
In> Determinant(%)
Out> 24;
|
Trace -- trace of a matrix
Standard library
Calling format:
Parameters:
M -- a matrix
Description:
Trace returns the trace of a matrix M (defined as the sum of the
elements on the diagonal of the matrix).
Examples:
In> DiagonalMatrix(1 .. 4)
Out> {{1,0,0,0},{0,2,0,0},{0,0,3,0},{0,0,0,4}};
In> Trace(%)
Out> 10;
|
Inverse -- get inverse of a matrix
Standard library
Calling format:
Parameters:
M -- a matrix
Description:
Inverse returns the inverse of matrix M. The determinant of M should
be non-zero. Because this function uses Determinant for calculating
the inverse of a matrix, you can supply matrices with non-numeric (symbolic)
matrix elements.
Examples:
In> DiagonalMatrix({a,b,c})
Out> {{a,0,0},{0,b,0},{0,0,c}};
In> Inverse(%)
Out> {{(b*c)/(a*b*c),0,0},{0,(a*c)/(a*b*c),0},
{0,0,(a*b)/(a*b*c)}};
In> Simplify(%)
Out> {{1/a,0,0},{0,1/b,0},{0,0,1/c}};
|
See also:
Determinant
.
Minor -- get principal minor of a matrix
Standard library
Calling format:
Parameters:
M -- a matrix
i, j - positive integers
Description:
Minor returns the minor of a matrix around
the element ( i, j). The minor is the determinant of the matrix obtained from M by
deleting the i-th row and the j-th column.
Examples:
In> A := {{1,2,3}, {4,5,6}, {7,8,9}};
Out> {{1,2,3},{4,5,6},{7,8,9}};
In> PrettyForm(A);
/ \
| ( 1 ) ( 2 ) ( 3 ) |
| |
| ( 4 ) ( 5 ) ( 6 ) |
| |
| ( 7 ) ( 8 ) ( 9 ) |
\ /
Out> True;
In> Minor(A,1,2);
Out> -6;
In> Determinant({{2,3}, {8,9}});
Out> -6;
|
See also:
CoFactor
,
Determinant
,
Inverse
.
CoFactor -- cofactor of a matrix
Standard library
Calling format:
Parameters:
M -- a matrix
i, j - positive integers
Description:
CoFactor returns the cofactor of a matrix around
the element ( i, j). The cofactor is the minor times
(-1)^(i+j).
Examples:
In> A := {{1,2,3}, {4,5,6}, {7,8,9}};
Out> {{1,2,3},{4,5,6},{7,8,9}};
In> PrettyForm(A);
/ \
| ( 1 ) ( 2 ) ( 3 ) |
| |
| ( 4 ) ( 5 ) ( 6 ) |
| |
| ( 7 ) ( 8 ) ( 9 ) |
\ /
Out> True;
In> CoFactor(A,1,2);
Out> 6;
In> Minor(A,1,2);
Out> -6;
In> Minor(A,1,2) * (-1)^(1+2);
Out> 6;
|
See also:
Minor
,
Determinant
,
Inverse
.
SolveMatrix -- solve a linear system
Standard library
Calling format:
Parameters:
M -- a matrix
v -- a vector
Description:
SolveMatrix returns the vector x that satisfies
the equation M*x=v. The determinant of M should be non-zero.
Examples:
In> A := {{1,2}, {3,4}};
Out> {{1,2},{3,4}};
In> v := {5,6};
Out> {5,6};
In> x := SolveMatrix(A, v);
Out> {-4,9/2};
In> A * x;
Out> {5,6};
|
See also:
Inverse
,
Solve
,
PSolve
,
Determinant
.
CharacteristicEquation -- get characteristic polynomial of a matrix
Standard library
Calling format:
CharacteristicEquation(matrix,var)
|
Parameters:
matrix -- a matrix
var -- a free variable
Description:
CharacteristicEquation
returns the characteristic equation of "matrix", using
"var". The zeros of this equation are the eigenvalues
of the matrix, Det(matrix-I*var);
Examples:
In> DiagonalMatrix({a,b,c})
Out> {{a,0,0},{0,b,0},{0,0,c}};
In> CharacteristicEquation(%,x)
Out> (a-x)*(b-x)*(c-x);
In> Expand(%,x)
Out> (b+a+c)*x^2-x^3-((b+a)*c+a*b)*x+a*b*c;
|
See also:
EigenValues
,
EigenVectors
.
EigenValues -- get eigenvalues of a matrix
Standard library
Calling format:
Parameters:
matrix -- a square matrix
Description:
EigenValues returns the eigenvalues of a matrix.
The eigenvalues x of a matrix M are the numbers such that
M*v=x*v for some vector.
It first determines the characteristic equation, and then factorizes this
equation, returning the roots of the characteristic equation
Det(matrix-x*identity).
Examples:
In> M:={{1,2},{2,1}}
Out> {{1,2},{2,1}};
In> EigenValues(M)
Out> {3,-1};
|
See also:
EigenVectors
,
CharacteristicEquation
.
EigenVectors -- get eigenvectors of a matrix
Standard library
Calling format:
EigenVectors(A,eigenvalues)
|
Parameters:
matrix -- a square matrix
eigenvalues -- list of eigenvalues as returned by EigenValues
Description:
EigenVectors returns a list of the eigenvectors of a matrix.
It uses the eigenvalues and the matrix to set up n equations with
n unknowns for each eigenvalue, and then calls Solve to determine
the values of each vector.
Examples:
In> M:={{1,2},{2,1}}
Out> {{1,2},{2,1}};
In> e:=EigenValues(M)
Out> {3,-1};
In> EigenVectors(M,e)
Out> {{-ki2/ -1,ki2},{-ki2,ki2}};
|
See also:
EigenValues
,
CharacteristicEquation
.
IsHermitian -- test for a Hermitian matrix
Standard library
Calling format:
Parameters:
A -- a square matrix
Description:
IsHermitian(A) returns True if A is Hermitian and False
otherwise. A is a Hermitian matrix iff Conjugate( Transpose A )= A.
If A is a real matrix, it must be symmetric to be Hermitian.
Examples:
In> IsHermitian({{0,I},{-I,0}})
Out> True;
In> IsHermitian({{0,I},{2,0}})
Out> False;
|
See also:
IsUnitary
.
IsOrthogonal -- test for an orthogonal matrix
Standard library
Calling format:
Parameters:
A -- square matrix
Description:
IsOrthogonal(A) returns True if A is orthogonal and False
otherwise. A is orthogonal iff A*Transpose( A) = Identity, or
equivalently Inverse( A) = Transpose( A).
Examples:
In> A := {{1,2,2},{2,1,-2},{-2,2,-1}};
Out> {{1,2,2},{2,1,-2},{-2,2,-1}};
In> PrettyForm(A/3)
/ \
| / 1 \ / 2 \ / 2 \ |
| | - | | - | | - | |
| \ 3 / \ 3 / \ 3 / |
| |
| / 2 \ / 1 \ / -2 \ |
| | - | | - | | -- | |
| \ 3 / \ 3 / \ 3 / |
| |
| / -2 \ / 2 \ / -1 \ |
| | -- | | - | | -- | |
| \ 3 / \ 3 / \ 3 / |
\ /
Out> True;
In> IsOrthogonal(A/3)
Out> True;
|
IsSymmetric -- test for a symmetric matrix
Standard library
Calling format:
Parameters:
A -- a square matrix
Description:
IsSymmetric(A) returns True if A is symmetric and False otherwise.
A is symmetric iff Transpose ( A) = A. All Hermitian matrices are
symmetric.
Examples:
In> A := {{1,0,0,0,1},{0,2,0,0,0},{0,0,3,0,0},
{0,0,0,4,0},{1,0,0,0,5}};
In> PrettyForm(A)
/ \
| ( 1 ) ( 0 ) ( 0 ) ( 0 ) ( 1 ) |
| |
| ( 0 ) ( 2 ) ( 0 ) ( 0 ) ( 0 ) |
| |
| ( 0 ) ( 0 ) ( 3 ) ( 0 ) ( 0 ) |
| |
| ( 0 ) ( 0 ) ( 0 ) ( 4 ) ( 0 ) |
| |
| ( 1 ) ( 0 ) ( 0 ) ( 0 ) ( 5 ) |
\ /
Out> True;
In> IsSymmetric(A)
Out> True;
|
See also:
IsHermitian
,
IsSkewSymmetric
.
IsSkewSymmetric -- test for a skew-symmetric matrix
Standard library
Calling format:
Parameters:
A -- a square matrix
Description:
IsSkewSymmetric(A) returns True if A is skew symmetric and False otherwise.
A is skew symmetic iff Transpose A =-A.
Examples:
In> A := {{0,-1},{1,0}}
Out> {{0,-1},{1,0}};
In> PrettyForm(%)
/ \
| ( 0 ) ( -1 ) |
| |
| ( 1 ) ( 0 ) |
\ /
Out> True;
In> IsSkewSymmetric(A);
Out> True;
|
See also:
IsSymmetric
,
IsHermitian
.
IsUnitary -- test for a unitary matrix
Standard library
Calling format:
Parameters:
A -- a square matrix
Description:
This function tries to find out if A is unitary.
A matrix A is orthogonal iff A^(-1) = Transpose( Conjugate(A) ). This is
equivalent to the fact that the columns of A build an orthonormal system
(with respect to the scalar product defined by InProduct).
Examples:
In> IsUnitary({{0,I},{-I,0}})
Out> True;
In> IsUnitary({{0,I},{2,0}})
Out> False;
|
See also:
IsHermitian
,
IsSymmetric
.
IsIdempotent -- test whether a matrix is idempotent
Standard library
Calling format:
Parameters:
A -- a square matrix
Description:
IsIdempotent(A) returns True if A is idempotent and False otherwise.
A is idempotent iff A^2 = A. Note that this also implies that A
to any power is A.
Examples:
In> IsIdempotent(ZeroMatrix(10,10));
Out> True;
In> IsIdempotent(Identity(20))
Out> True;
|
JacobianMatrix -- calculate the Jacobian matrix of n functions in n variables
Standard library
Calling format:
JacobianMatrix(functions,variables)
|
Parameters:
functions -- An n dimensional vector of functions
variables -- An n dimensional vector of variables
Description:
The function JacobianMatrix calculates the Jacobian matrix
of n functions in n variables.
The ijth element of the Jacobian matrix is defined as the derivative
of ith function with respect to the jth variable.
Examples:
In> JacobianMatrix( {Sin(x),Cos(y)}, {x,y} );
Out> {{Cos(x),0},{0,-Sin(y)}};
In> PrettyForm(%)
/ \
| ( Cos( x ) ) ( 0 ) |
| |
| ( 0 ) ( -( Sin( y ) ) ) |
\ /
|
VandermondeMatrix -- calculate the Vandermonde matrix
Standard library
Calling format:
VandermondeMatrix(vector)
|
Parameters:
vector -- An n dimensional vector
Description:
The function VandermondeMatrix calculates the Vandermonde matrix
of a vector.
The ijth element of the Vandermonde matrix is defined as i^(j-1).
Examples:
In> VandermondeMatrix({1,2,3,4})
Out> {{1,1,1,1},{1,2,3,4},{1,4,9,16},{1,8,27,64}};
In>PrettyForm(%)
/ \
| ( 1 ) ( 1 ) ( 1 ) ( 1 ) |
| |
| ( 1 ) ( 2 ) ( 3 ) ( 4 ) |
| |
| ( 1 ) ( 4 ) ( 9 ) ( 16 ) |
| |
| ( 1 ) ( 8 ) ( 27 ) ( 64 ) |
\ /
|
HessianMatrix -- calculate the Hessian matrix
Standard library
Calling format:
HessianMatrix(function,var)
|
Parameters:
function -- An function in n variables
var -- An n dimensian vector of variables
Description:
The function HessianMatrix calculates the Hessian matrix
of a vector.
The ijth element of the Hessian matrix is defined as
Deriv(var[i])Deriv(var[j])function. If the third
order mixed partials are continuous, then the Hessian
matrix is symmetric.
The Hessian matrix is used in the second derivative test
to discern if a critical point is a local maximum, local
minimum or a saddle point.
Examples:
In> HessianMatrix(3*x^2-2*x*y+y^2-8*y, {x,y} )
Out> {{6,-2},{-2,2}};
In> PrettyForm(%)
/ \
| ( 6 ) ( -2 ) |
| |
| ( -2 ) ( 2 ) |
\ /
|
WronskianMatrix -- calculate the Wronskian matrix
Standard library
Calling format:
WronskianMatrix(func,var)
|
Parameters:
func -- An n dimensional vector of functions
var -- A variable to differentiate with respect to
Description:
The function WronskianMatrix calculates the Wronskian matrix
of n functions.
The Wronskian matrix is created by putting each function as the
first element of each column, and filling in the rest of each
column by the ( i-1)-th derivative, where i is the current row.
The Wronskian matrix is used to verify if n functions are linearly
independent, usually solutions to a differential equation.
If the determinant of the Wronskian matrix is zero, then the functions
are dependent, otherwise they are independent.
Examples:
In> WronskianMatrix({Sin(x),Cos(x),x^4},x);
Out> {{Sin(x),Cos(x),x^4},{Cos(x),-Sin(x),4*x^3},
{-Sin(x),-Cos(x),12*x^2}};
In> PrettyForm(%)
/ \
| ( Sin( x ) ) ( Cos( x ) ) / 4 \ |
| \ x / |
| |
| ( Cos( x ) ) ( -( Sin( x ) ) ) / 3 \ |
| \ 4 * x / |
| |
| ( -( Sin( x ) ) ) ( -( Cos( x ) ) ) / 2 \ |
| \ 12 * x / |
\ /
|
The last element is a linear combination of the first two, so the determinant is zero:
In> Determinant( WronskianMatrix( {x^4,x^3,2*x^4
+ 3*x^3},x ) )
Out> x^4*3*x^2*(24*x^2+18*x)-x^4*(8*x^3+9*x^2)*6*x
+(2*x^4+3*x^3)*4*x^3*6*x-4*x^6*(24*x^2+18*x)+x^3
*(8*x^3+9*x^2)*12*x^2-(2*x^4+3*x^3)*3*x^2*12*x^2;
In> Simplify(%)
Out> 0;
|
SylvesterMatrix -- calculate the Sylvester matrix of two polynomials
Standard library
Calling format:
SylvesterMatrix(poly1,poly2,variable)
|
Parameters:
poly1 -- polynomial
poly2 -- polynomial
variable -- variable to express the matrix for
Description:
The function SylvesterMatrix calculates the Sylvester matrix
for a pair of polynomials.
The Sylvester matrix is closely related to the resultant, which
is defined as the determinant of the Sylvester matrix. Two polynomials
share common roots only if the resultant is zero.
Examples:
In> ex1:= x^2+2*x-a
Out> x^2+2*x-a;
In> ex2:= x^2+a*x-4
Out> x^2+a*x-4;
In> SylvesterMatrix(ex1,ex2,x)
Out> {{1,2,-a,0},{0,1,2,-a},
{1,a,-4,0},{0,1,a,-4}};
In> Determinant(%)
Out> 16-a^2*a- -8*a-4*a+a^2- -2*a^2-16-4*a;
In> Simplify(%)
Out> 3*a^2-a^3;
|
The above example shows that the two polynomials have common
zeros if a=3.
See also:
Determinant
,
Simplify
,
Solve
,
PSolve
.