Documentation
¶
Overview ¶
Package eigen solves real symmetric generalized eigenproblems.
Solve computes the lowest eigenpairs of
A x = lambda B x
for symmetric A and symmetric positive-definite B. The implementation is a deterministic block locally-optimal preconditioned conjugate-gradient iteration. It uses operators rather than requiring a particular matrix representation; SparseSymmetric is provided for assembled finite-element systems.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNotConverged = errors.New("eigen: iteration did not converge")
Functions ¶
This section is empty.
Types ¶
type Operator ¶
Operator is a real square linear operator. MulVec must support distinct dst and src slices of length Dim().
type Options ¶
type Options struct {
NumEigenpairs int
Tolerance float64
MaxIterations int
Seed uint64
Preconditioner Preconditioner
}
type Preconditioner ¶
type Preconditioner interface {
Apply(dst, src []float64)
}
Preconditioner approximately applies the inverse of an operator.
func NewDiagonalPreconditioner ¶
func NewDiagonalPreconditioner(a *SparseSymmetric, floor float64) Preconditioner
NewDiagonalPreconditioner constructs a Jacobi preconditioner. Entries whose magnitude is at most floor use a positive floor.
func NewIC0Preconditioner ¶
func NewIC0Preconditioner(a *SparseSymmetric, shift float64) (Preconditioner, error)
NewIC0Preconditioner constructs a zero-fill incomplete Cholesky factor of A+shift*I. It returns an error if a positive pivot cannot be formed.
type Result ¶
type SparseSymmetric ¶
type SparseSymmetric struct {
// contains filtered or unexported fields
}
SparseSymmetric stores both triangles of an assembled symmetric matrix in compressed row form. Construct one with SymmetricBuilder.
func (*SparseSymmetric) Diagonal ¶
func (a *SparseSymmetric) Diagonal() []float64
Diagonal returns a copy of the matrix diagonal.
func (*SparseSymmetric) Dim ¶
func (a *SparseSymmetric) Dim() int
func (*SparseSymmetric) MulVec ¶
func (a *SparseSymmetric) MulVec(dst, src []float64)
MulVec multiplies dst = A src.
func (*SparseSymmetric) Nonzeros ¶
func (a *SparseSymmetric) Nonzeros() int
Nonzeros reports the number of stored entries, counting both triangles.
type SymmetricBuilder ¶
type SymmetricBuilder struct {
// contains filtered or unexported fields
}
SymmetricBuilder accumulates the upper triangle of a sparse symmetric matrix. Repeated Add calls to the same entry are summed.
func NewSymmetricBuilder ¶
func NewSymmetricBuilder(n int) *SymmetricBuilder
func (*SymmetricBuilder) Add ¶
func (b *SymmetricBuilder) Add(i, j int, value float64)
func (*SymmetricBuilder) Build ¶
func (b *SymmetricBuilder) Build() *SparseSymmetric