Skip to content

andreas-solti/matrix-toolkits-java

 
 

Repository files navigation

Build Status Coverage Status Maven Central Javadoc

matrix-toolkits-java

MTJ is a high-performance library for developing linear algebra applications.

See matrix-toolkits-java for the original library.

This fork is just a minor extension to cover the case of general matrices. The symmetric case was already covered in ArpackSym. The new class is ArpackGen. It uses ARPACK's dnaupd and dneupd routines for the Implicitly Restarted Arnoldi Iteration.

Sparse Solvers

MTJ provides ARPACK for very large symmetric matrices in ArpackSym (see the example usage in ArpackSymTest). ARPACK solves an arbitrary number of eigenvalues / eigenvectors.

In addition, implementations of the netlib Templates are available in the no.uib.cipr.matrix.sparse package.

Users may wish to look at Sparse Eigensolvers for Java for another solver.

Legal

  • Copyright (C) 2003-2006 Bjørn-Ove Heimsund
  • Copyright (C) 2006-2014 Samuel Halliday

History

This project was originally written by Bjørn-Ove Heimsund, who has taken a step back due to other commitments. The original project matrix-toolkits-java is maintained by Samuel Halliday.

Installation

Releases are distributed on Maven central:

<dependency>
    <groupId>io.github.andreas-solti.matrix-toolkits-java</groupId>
    <artifactId>mtj</artifactId>
    <version>1.0.5</version>
</dependency>

Example Code

   // check out test class in SparseEigenvalueTest:
   CompColMatrix m = createRandomMatrix(10,15); // create a random
   ArpackGen generalSolver = new ArpackGen(matrix);
   generalSolver.setComputeOnlyEigenvalues(true);
   Map<Double, DenseVectorSub> eigenValueMap = generalSolver.solve(3, ArpackGen.Ritz.LR); // get 3 largest eigenvalues
   double largestARPACKEigenValue = eigenValueMap.keySet().iterator().next();

Contributing

Contributors are encouraged to fork this repository and issue pull requests. Contributors implicitly agree to assign an unrestricted licence to Sam Halliday, but retain the copyright of their code (this means we both have the freedom to update the licence for those contributions).

About

🚀 High Performance Linear Algebra OOP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 98.9%
  • Other 1.1%