ts-scikit
Version:
A scientific toolkit written in Typescript
66 lines (65 loc) • 2.65 kB
TypeScript
/**
* 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;
}