12

I am looking for a Java-based numerical method package that provides functionality including:

  1. Solving systems of equations using different numerical analysis algorithms.
  2. Matrix methods (e.g., inversion).
  3. Spline approximations.
  4. Probability distributions and statistical methods.

In this case, "best" is defined as a package with a mature and usable API, solid performance and numerical accuracy.

Edit: derick van brought up a good point in that cost is a factor. I am heavily biased in favor of free packages but others may have a different emphasis.

8 accepted

I don't know of a single package that provides all the functionality you are looking for and simultaneously meets all of your requirements (but that doesn't mean there isn't one!).

I've had good success using these Java numeric libraries:

  • Java Numeric Toolkit (JNT)
  • JAva MAtrix package (JAMA)

There is a good reference for Java Numerics from the National Institute of Standards and Technology (NIST) here: http://math.nist.gov/javanumerics/

Hopefully this will point you in the right direction until someone can provide you with the complete, singular answer you are looking for!

7

The Apache Commons Math package certainly provides what looks like a comprehensive API but I do not yet have critical data on the performance or accuracy.

3

I've used colt from CERN before but mostly for it's random number generators. It has a mature and stable API, and high performance.

2

You didn't mention cost, so I would have a look at the MATLIB libraries. Certainly they will be well tested and reliable. As for performance I do not know.

http://www.mathworks.com/products/javabuilder/

They may have something there for you image processing questions as well.

2

jHepWork project http://jwork.org/jhepwork/ includes many numerical Java libraries (including colt) interfaced with tools for plotting. It can be used for pure Java projects and also for Java scripting

1

I think there is a Java port of LAPACK.

0

Another pure Java numerical library is called SuanShu provided by Numerical Method Inc. http://www.numericalmethod.com/