UNPKG

ts-scikit

Version:

A scientific toolkit written in Typescript

66 lines (65 loc) 2.65 kB
/** * Special-purpose eigensolvers for digital signal processing. * <p> * Methods of this class solve small eigen-problems efficiently. */ export declare class EigenSolver { /** * Iterative Jacobi solver. Slower, but more accurate. * @private */ private static _SolveSymmetric3x3Jacobi; /** * Implementation of Kopp's hybrid method for real symmetric 3x3 matrices. * <p> * Computes eigenvalues and eigenvectors using Cardano's analytical method * for the eigenvalues and, typically, an analytical vector cross-product * algorithm for the eigenvectors. When necessary for accuracy, this method * uses a slower but more accurate QL algorithm. * @private */ private static _SolveSymmetric3x3Hybrid; /** * Sorts eigenvalues d and eigenvectors v in descending order. * @private */ private static _SortDescending3x3; /** * Computes eigenvalues of a symmetric 3x3 matrix using Cardano's analytical method. * @private */ private static _GetEigenvaluesSymmetric3x3; /** * Kopps's solver for eigenvalues and eigenvectors vial QL decomposition. * @private */ private static _SolveSymmetric3x3QL; /** * Kopp's tri-diagonal reduction for real symmetric 3x3 matrices. * Diagonal is { d[0], d[1], d[2] } and super-diagonal is { e[0], e[1] }. * Householder transformations are stored in the matrix v. * @private */ private static _ReduceSymmetric3x3; /** * Computes eigenvalues and eigenvectors for a symmetric 2x2 matrix A. * If the eigenvectors are placed in columns in a matrix V, and the * eigenvalues are placed in corresponding columns of a diagonal * matrix D, then AV = VD. * @param a the symmetric matrix A. * @param v the array of eigenvectors v[0] and v[1]. * @param d the array of eigenvalues d[0] and d[1]. */ static SolveSymmetric2x2(a: number[][], v: number[][], d: number[]): void; /** * Computes eigenvalues and eigenvectors for a symmetric 3x3 matrix A. * If the eigenvectors are placed in columns in a matrix V, and the * eigenvalues are placed in corresponding columns of a diagonal * matrix D, then AV = VD. * @param a the symmetric matrix A. * @param v the array of eigenvectors v[0], v[1], and v[2]. * @param d the array of eigenvalues d[0], d[1] and d[2]. * @param useJacobi true, if using the slower (but more accurate) iterative Jacobi solver. Default is false. */ static SolveSymmetric3x3(a: number[][], v: number[][], d: number[], useJacobi?: boolean): void; }