Coder Social home page Coder Social logo

fideoman / matrix-toolkits-java Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kris7t/matrix-toolkits-java

0.0 2.0 1.0 10.77 MB

:rocket: High Performance Linear Algebra OOP

License: GNU Lesser General Public License v3.0

Shell 0.02% Java 98.82% HTML 0.83% R 0.33%

matrix-toolkits-java's Introduction

matrix-toolkits-java

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

See matrix-toolkits-java for the original library.

The purpose of this fork is to experiement with some sparse solver in problems arising from continuous-time Markov chains (CTMC). Maven artifact coordinates were changed for easy referencing in other projects.

This fork incorporates extensions by Andreas Solti, including eigenvalue problems in the case of general sparse 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
  • Copyright (C) 2016-2018 Andreas Solti

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. As Samuel Halliday archived the project, it was forked by Andreas Solti to incorporate the sparse eigenvalue solver ApackGen for general matrices.

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).

matrix-toolkits-java's People

Contributors

fommil avatar andreasroggesolti avatar andreas-solti avatar fideoman avatar millardjn avatar zeeshanasghar avatar jbasilico avatar kris7t avatar randyp avatar molnartimi avatar dhutchis avatar juhanicc avatar maxxkia avatar dozed avatar

Watchers

James Cloos avatar  avatar

Forkers

f3l1p3xlcc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.