My Project
linearAlgebra_ip.h
Go to the documentation of this file.
1#ifndef LINEARALGEBRA_H
2#define LINEARALGEBRA_H
3#include "Singular/lists.h"
5
6/**
7 * Computes all eigenvalues of a given real quadratic matrix with
8 * multiplicites.
9 *
10 * The method assumes that the current ground field is the complex numbers.
11 * Computations are based on the QR double shift algorithm involving
12 * Hessenberg form and householder transformations.
13 * If the algorithm works, then it returns a list with two entries which
14 * are again lists of the same size:
15 * _[1][i] is the i-th mutually distinct eigenvalue that was found,
16 * _[2][i] is the (int) multiplicity of _[1][i].
17 * If the algorithm does not work (due to an ill-posed matrix), a list with
18 * the single entry (int)0 is returned.
19 * 'tol1' is used for detection of deflation in the actual qr double shift
20 * algorithm.
21 * 'tol2' is used for ending Heron's iteration whenever square roots
22 * are being computed.
23 * 'tol3' is used to distinguish between distinct eigenvalues: When
24 * the Euclidean distance between two computed eigenvalues is less then
25 * tol3, then they will be regarded equal, resulting in a higher
26 * multiplicity of the corresponding eigenvalue.
27 *
28 * @return a list with one entry (int)0, or two entries which are again lists
29 **/
31 const matrix A, /**< [in] the quadratic matrix */
32 const number tol1, /**< [in] tolerance for deflation */
33 const number tol2, /**< [in] tolerance for square roots */
34 const number tol3, /**< [in] tolerance for distinguishing
35 eigenvalues */
36 const ring r= currRing
37 );
38#endif
Definition: lists.h:24
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.
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:13
#define A
Definition: sirandom.c:24