My Project
|
#include "kernel/mod2.h"
#include "Singular/lists.h"
#include "kernel/linear_algebra/linearAlgebra.h"
Go to the source code of this file.
Functions | |
lists | qrDoubleShift (const matrix A, const number tol1, const number tol2, const number tol3, const ring r=currRing) |
Computes all eigenvalues of a given real quadratic matrix with multiplicites. More... | |
lists qrDoubleShift | ( | const matrix | A, |
const number | tol1, | ||
const number | tol2, | ||
const number | tol3, | ||
const ring | r = currRing |
||
) |
Computes all eigenvalues of a given real quadratic matrix with multiplicites.
The method assumes that the current ground field is the complex numbers. Computations are based on the QR double shift algorithm involving Hessenberg form and householder transformations. If the algorithm works, then it returns a list with two entries which are again lists of the same size: _[1][i] is the i-th mutually distinct eigenvalue that was found, _[2][i] is the (int) multiplicity of _[1][i]. If the algorithm does not work (due to an ill-posed matrix), a list with the single entry (int)0 is returned. 'tol1' is used for detection of deflation in the actual qr double shift algorithm. 'tol2' is used for ending Heron's iteration whenever square roots are being computed. 'tol3' is used to distinguish between distinct eigenvalues: When the Euclidean distance between two computed eigenvalues is less then tol3, then they will be regarded equal, resulting in a higher multiplicity of the corresponding eigenvalue.
[in] | A | the quadratic matrix |
[in] | tol1 | tolerance for deflation |
[in] | tol2 | tolerance for square roots |
[in] | tol3 | tolerance for distinguishing eigenvalues |
Definition at line 41 of file linearAlgebra_ip.cc.