Struct rgsl::types::eigen_symmetric_workspace::EigenGenWorkspace
[−]
[src]
pub struct EigenGenWorkspace { /* fields omitted */ }
Methods
impl EigenGenWorkspace
[src]
fn new(n: usize) -> Option<EigenGenWorkspace>
This function allocates a workspace for computing eigenvalues of n-by-n real generalized nonsymmetric eigensystems. The size of the workspace is O(n).
fn params(&mut self, compute_s: i32, compute_t: i32, balance: i32)
This function sets some parameters which determine how the eigenvalue problem is solved in subsequent calls to gsl_eigen_gen.
If compute_s is set to 1, the full Schur form S will be computed by gsl_eigen_gen. If it is set to 0, S will not be computed (this is the default setting). S is a quasi upper triangular matrix with 1-by-1 and 2-by-2 blocks on its diagonal. 1-by-1 blocks correspond to real eigenvalues, and 2-by-2 blocks correspond to complex eigenvalues.
If compute_t is set to 1, the full Schur form T will be computed by gsl_eigen_gen. If it is set to 0, T will not be computed (this is the default setting). T is an upper triangular matrix with non-negative elements on its diagonal. Any 2-by-2 blocks in S will correspond to a 2-by-2 diagonal block in T.
The balance parameter is currently ignored, since generalized balancing is not yet implemented.
fn gen(
&mut self,
A: &mut MatrixF64,
B: &mut MatrixF64,
alpha: &mut VectorComplexF64,
beta: &mut VectorF64
) -> Value
&mut self,
A: &mut MatrixF64,
B: &mut MatrixF64,
alpha: &mut VectorComplexF64,
beta: &mut VectorF64
) -> Value
This function computes the eigenvalues of the real generalized nonsymmetric matrix pair (A, B), and stores them as pairs in (alpha, beta), where alpha is complex and beta is real. If \beta_i is non-zero, then \lambda = \alpha_i / \beta_i is an eigenvalue. Likewise, if \alpha_i is non-zero, then \mu = \beta_i / \alpha_i is an eigenvalue of the alternate problem \mu A y = B y. The elements of beta are normalized to be non-negative.
If S is desired, it is stored in A on output. If T is desired, it is stored in B on output. The ordering of eigenvalues in (alpha, beta) follows the ordering of the diagonal blocks in the Schur forms S and T. In rare cases, this function may fail to find all eigenvalues. If this occurs, an error code is returned.
fn gen_QZ(
&mut self,
A: &mut MatrixF64,
B: &mut MatrixF64,
alpha: &mut VectorComplexF64,
beta: &mut VectorF64,
Q: &mut MatrixF64,
Z: &mut MatrixF64
) -> Value
&mut self,
A: &mut MatrixF64,
B: &mut MatrixF64,
alpha: &mut VectorComplexF64,
beta: &mut VectorF64,
Q: &mut MatrixF64,
Z: &mut MatrixF64
) -> Value
This function is identical to gsl_eigen_gen except that it also computes the left and right
Schur vectors and stores them into Q
and Z
respectively.