Contents
ALGORITHMS
Site map
Links
Site and author
News
About the site
FAQ
Contact
TERMS OF USE
Contents - Eigenvalues and eigenvectors - Symmetric eigenproblems - Generalized symmetric positive definite eigenproblem

Generalized symmetric positive definite eigenproblem

The generalized symmetric positive-definite eigenvalue problem is one of the following eigenproblems:

Ax = λBx
ABx = λx
BAx = λx

where A is a symmetric matrix, and B is a symmetric positive-definite matrix.

It is obvious that this problem is easily reduced to the problem of finding eigenvalues for a non-symmetric general matrix (we can perform this reduction by multiplying both sides of the system by B -1 in the first case, and by multiplying together matrices A and B in the second and the third cases). However, the non-symmetric eigenvalue problem is much more complex, therefore it is reasonable to find a more effective way of solving the generalized symmetric problem. For instance, we can reduce this problem to a classic symmetric problem by using the Cholesky decomposition of matrix B (the example below applies to the first problem).

Ax = λBx
Ax = λLL Tx
AL -TL Tx = λLL Tx
L -1AL -TL Tx = λL Tx
(L -1AL -T)(L Tx) = λ(L Tx)

so we get the following problem:

Cy = λy
C = L -1AL -T
y = L Tx

The eigenvalues for both problems are the same, the eigenvectors for the initial problem could be found by solving a system of linear equations with a triangular matrix. Similar transformations could be performed for two other generalized problems.

Subroutine description

This module contains two subroutines for solving a generalized symmetric positive-definite eigenvalue problem. The first subroutine, SMatrixGEVDReduce, performs the reduction of the problem to a classic symmetric problem. It returns matrices C (problem matrix) and R (triangular matrix which is used to find the eigenvectors). The second subroutine, SMatrixGEVD, uses the first one to solve a generalized problem. It calls all the necessary subroutines by itself and transforms the obtained vectors.

Report a bug

Source codes

C#

C# 1.0 source.
spdgevd.csharp.zip - Generalized symmetric positive definite eigenproblem


C++

C++ source.
spdgevd.cpp.zip - Generalized symmetric positive definite eigenproblem
ablas.zip - optimized basic linear algebra subroutines with SSE2 support (for C++ sources only)


C++, multiple precision arithmetic

C++ source. MPFR/GMP is used.
GMP source is available from gmplib.org. MPFR source is available from www.mpfr.org.
spdgevd.mpfr.zip - Generalized symmetric positive definite eigenproblem
mpfr.zip - precompiled Win32 MPFR/GMP binaries


Delphi

Delphi source.
Can be compiled under FPC (in Delphi compatibility mode).
spdgevd.delphi.zip - Generalized symmetric positive definite eigenproblem


Visual Basic 6

Visual Basic 6 source.
spdgevd.vb6.zip - Generalized symmetric positive definite eigenproblem


Zonnon beta

Zonnon source.
Zonnon is an experimental language developed at ETH Zurich.
See www.zonnon.ethz.ch for more information.
spdgevd.zonnon.zip - Generalized symmetric positive definite eigenproblem



 
 
Sergey Bochkanov, Vladimir Bystritsky
Copyright © 1999-2008