apache-commons-math3-科学计算类库-支持矩阵运算

一、基本功能简介

apache-commons-math3是java的一种科学计算类库,实现科学计算功能的类库其他语言如python、scala都有很多而且很容易找到资料,java可能是由于这方面的需求不多,所以相关的资料较少,在此我就简要介绍一下apache-commons-math3,帮大家大致了解一下这个东西,详细的使用还是需要自己去研究官方文档了。如果想使用其他科学计算包可以参考下面这个网址,其中很详细地介绍了如今市面上常见的科学计算包及其支持的功能。

https://java-matrix.org/
math3支持的的功能如下所示:

支持java5到java8
支持以二维数组的形式存储密集数据
支持大量密集数据的块存储
支持DOK形式的稀疏数据存储(键值对字典)
支持double、BigDecimal、String、Object、Complex Numbers等数据类型
支持二维矩阵
支持常用的矩阵操作、如矩阵转置、矩阵求逆、加减乘除
支持LU和QR分解等
二、向量与矩阵

math3中向量的几个实数常用接口和类库,最顶端是基础接口类,OpenMapRealVector和ArrayRealVector分别是稀疏向量和稠密向量的实现类,OpenMapRealVector以键值对的形式存储稀疏向量,ArrayRealVector则是以一维数组的形式存储数据,简单示例如下所示:

//构造稀疏向量,维数为7
OpenMapRealVector openMapRealVector=new OpenMapRealVector(7);
//填充稀疏向量
openMapRealVector.setEntry(2,1.0);
openMapRealVector.setEntry(4,1.0);
//输出稀疏向量当前的值
System.out.println("sparse:"+Arrays.toString(openMapRealVector.toArray()));
double[] a=new double[]{0,0.2,0.3,0.4,0,0,0};
//直接以一维数组构造稠密向量
ArrayRealVector arrayRealVector=new ArrayRealVector(a);
System.out.println("dense:"+Arrays.toString(arrayRealVector.toArray()));
OpenMapRealVector realVector=openMapRealVector.append(arrayRealVector);
System.out.println("result:"+Arrays.toString(realVector.toArray()));
String str="0.11,0.222,0.33";
//用RealVector解析字符串,参数分别是字符串的前缀、后缀和分隔符
RealVectorFormat realVectorFormat=new RealVectorFormat("","",",");
ArrayRealVector arrayRealVector1=realVectorFormat.parse(str);
System.out.println(Arrays.toString(arrayRealVector1.toArray()));

其中BlockRealMatrix更适合大维度的矩阵,官方文档是这样介绍的


版权声明:本文为u014677702原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>