java金融与数学

 

1、commons-math/commons-lang-math

以上两个包是apache下的,前者比后者的功能强大,后者有的功能前都有,后者主要解决平时程序中的一些基本的数学计算,主要是范围判断(*Range,随机数生成(JVMRandom,RandomUtils),分数处理(Fraction),数字转化、大小判断(NumberUtils)等。前者可以处理更复杂的数据分析(org.apache.commons.math.analysis)、复数(org.apache.commons.math.complex)、分布式处理(org.apache.commons.math.distribution)、数据预测估计(org.apache.commons.math.estimation)、分数、遗传学(org.apache.commons.math.genetics)、几何图形(org.apache.commons.math.geometry)、线性代数(org.apache.commons.math.linear)、优化(org.apache.commons.math.optimization)、统计(org.apache.commons.math.stat),传换(org.apache.commons.math.transform)、还有一些常用工具类(org.apache.commons.math.util)。

例子:求两直线的交点,第一条两个端点分别为(0,0)(1,1),另一条两个端点分别(1,0)(0,1)

思路:再条直线的交点,实际就是一个二元一次方程的解。方程的解实际可转化为线性代数中的矩阵。如3x+y=4x+2y=3这个二元一次方程。转为矩阵为:

现在就可以用上面包org.apache.commons.math.geometry的类RealMatrix计算。

代码:

double[][] coefficientsData = { { 3, 1 }, { 1, 2 } };

RealMatrix coefficients = new RealMatrixImpl(coefficientsData);

double[] constants = { 4, 3 };

double[] solution = coefficients.solve(constants);

System.out.println("它们的交点是:x=" + solution[0] + ";y=" + solution[1]);

总结:如果要用到相应功能的(比如方差variance是在统计stat包里),可查看对应的包中的API和官方例子怎么用。

2、jsjava

 

这个插件,几乎用js语言重写了apache commons lang中的功能,其实是上面commons-mathjs版(jsjava-math.js),主要有

1) jsjava-core.js : include jsjava core classes

2) jsjava-ajax.js : include jsjava ajax classes

3) jsjava-anim.js : include jsjava animation classes

4) jsjava-math.js : include jsjava math classes

5) jsjava-blog.js : include jsjava blog classes

6) jsjava-comp.js : include jsjava components classes

7) jsjava-info.js : include jsjava information classes

 

 

 

3、jmathlib

JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库。它是MatlabOctaveFreeMatScilab的一个克隆,但完全采用纯Java实现。

 

4、matlab for java

提供java接口调用matlab里的一些方法。

 

5、jscience

Jscience 软件包是一个强大的基于 Java™ 的物理和数学函数库,它通过提供单个用于所有开发的体系结构,旨在帮助跨不同科学领域构建协同作用。主要是物理、数学、经济3方面的协同作用。

 

6、Jama

 

主要用来解决基本线性代数中的乔莱斯基分解,特征值与特征向量,LU分解,矩阵列,奇异值分解

等。

 

Summary of JAMA Capabilities

Object Manipulation

constructors 
set elements 
get elements 
copy 
clone

Elementary Operations

addition 
subtraction 
multiplication 
scalar multiplication 
element-wise multiplication 
element-wise division 
unary minus 
transpose 
norm

Decompositions

Cholesky 
LU 
QR 
SVD 
symmetric eigenvalue 
nonsymmetric eigenvalue

Equation Solution

nonsingular systems 
least squares

Derived Quantities

condition number 
determinant 
rank 
inverse 
pseudoinverse

 

下面是个列子,3X3矩阵Ax=b,然后用Ax-b检测溢出值。

double[][] array = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}};
      Matrix A = new Matrix(array);
      Matrix b = Matrix.random(3,1);
      Matrix x = A.solve(b);
      Matrix Residual = A.times(x).minus(b);
      double rnorm = Residual.normInf();

 

 

7、总结:总的来说commons-math/commons-lang-math这个是个不错的选择,文档和例子都比较多。

 

你可能感兴趣的:(java开源)