RadicalEigenPackage

radeigen.spad line 1 [edit on github]

Package for the computation of eigenvalues and eigenvectors. This package works for matrices with coefficients which are rational functions over the integers. (see Fraction Polynomial Integer). The eigenvalues and eigenvectors are expressed in terms of radicals.

eigenMatrix : Matrix(Fraction(Polynomial(Integer))) -> Union(Matrix(Expression(Integer)), "failed")

eigenMatrix(m) returns the matrix b such that b*m*(inverse b) is diagonal, or "failed" if no such b exists.

gramschmidt : List(Matrix(Expression(Integer))) -> List(Matrix(Expression(Integer)))

gramschmidt(lv) converts the list of column vectors lv into a set of orthogonal column vectors of euclidean length 1 using the Gram-Schmidt algorithm.

normalise : Matrix(Expression(Integer)) -> Matrix(Expression(Integer))

normalise(v) returns the column vector v divided by its euclidean norm; when possible, the vector v is expressed in terms of radicals.

orthonormalBasis : Matrix(Fraction(Polynomial(Integer))) -> List(Matrix(Expression(Integer)))

orthonormalBasis(m) returns the orthogonal matrix b such that b*m*(inverse b) is diagonal. Error: if m is not a symmetric matrix.

radicalEigenvalues : Matrix(Fraction(Polynomial(Integer))) -> List(Expression(Integer))

radicalEigenvalues(m) computes the eigenvalues of the matrix m; when possible, the eigenvalues are expressed in terms of radicals.

radicalEigenvector : (Expression(Integer), Matrix(Fraction(Polynomial(Integer)))) -> List(Matrix(Expression(Integer)))

radicalEigenvector(c, m) computes the eigenvector(s) of the matrix m corresponding to the eigenvalue c; when possible, values are expressed in terms of radicals.

radicalEigenvectors : Matrix(Fraction(Polynomial(Integer))) -> List(Record(radval : Expression(Integer), radmult : Integer, radvect : List(Matrix(Expression(Integer)))))

radicalEigenvectors(m) computes the eigenvalues and the corresponding eigenvectors of the matrix m; when possible, values are expressed in terms of radicals.