(来自ruby-talk)
[ANN] linalg-0.3.2 -- Ruby Linear Algebra Library http://linalg.rubyforge.org/ http://rubyforge.org/frs/?group_id=273 ----------------- >From the README: Major features: * Cholesky decomposition * LU decomposition * QR decomposition * Schur decomposition * Singular value decomposition * Eigenvalues and eigenvectors of a general matrix * Minimization by least squares * Linear equation solving * Stand-alone LAPACK bindings: call any LAPACK routine from directly from ruby. ----------------- Release notes: Initial release. There are no dependencies for the pre-built packages -- linalg-0.3.2-i686-linux-ruby18.tgz linalg-0.3.2-i386-mswin32-ruby18.zip To build from source, you need: LAPACK, BLAS, libf2c. Your OS should have these packages available in binary form. If not, you will need a Fortran compiler. (The pre-builts statically link these packages, thus no dependencies.) The pre-built win32 linalg is somewhat incompatible with the 1.8.1 Ruby One-Click Installer, as are all extensions not built with Visual Studio .NET. (I say "somewhat" because it probably won't crash for light use, but no guarantees.) You can pick up a compatible 1.8.1 win32 ruby at http://www.dm4lab.to/~usa/ruby/index_en.html There is a new test 1.8.2 one-click installer which seems to work (it reverts back to the common win32 compatible runtime): http://rubyforge.org/frs/download.php/852/ruby182-14-test.zip ----------------- linalg is a by-product of my academic work with crystallographic space groups. A good deal of linear algebra functionality from Mathematica and Matlab can be found in linalg, with equal or greater speed insofar as per-matrix function calls. It started when I was too lazy to move from ruby back to Mathematica, and too lazy to set up Mathlink or some such. What I was doing was not particularly suited to Mathematica either, minus the linear algebra part, which among other things was communicating with two other processes, a little networking, and spitting out LaTeX output. It was nice to be free of Mathematica as well. I have pounded on this package pretty thoroughly in real-life applications, so I do not expect many serious bugs, if at all. This kind of package is very amenable to unit testing as well. I realize linalg is mostly for specialized use; singular value decompositions are not the most urgent necessity for rubyists, I can assume. But that is what I needed, so here it is. Excerpt from the end of the README: Perhaps some day there will be a common library which all numerical ruby packages may share. Perhaps the basis will be the R-project library. But for now, linalg exists because the LAPACK routines were "right there" in front of me, I needed them, and it was easy to call them. I'll add that although full functionality for complex-number matrices is not yet finished, it would not take too much time to complete. However I hesitate for fear of something better coming along which can do singular value decompositions and eigenvalues of a general matrix. If enough people request it, I'll get off my butt and implement the complex side. By the way there is no reason to touch C code -- all the LAPACK routines are available within ruby and all the core methods are implemented in C for all matrix types. This makes contributing easier. linalg contains a few ideas which are independently useful, I think. The Linalg::Iterators mix-in comes to mind. Check it out