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()));

输出如下

sparse[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0]
dense[0.0, 0.2, 0.3, 0.4, 0.0, 0.0, 0.0]
result[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.2, 0.3, 0.4, 0.0, 0.0, 0.0]
[0.11, 0.222, 0.33]

下面介绍一下math3的矩阵
这里写图片描述
其中BlockRealMatrix更适合大维度的矩阵,官方文档是这样介绍的

being more suited to dimensions above 50 or 100

关于矩阵math3有一个工具类MatrixUtils,包含了一些常用的矩阵操作,有需要的可以自行查阅math3官方API。

http://commons.apache.org/proper/commons-math/javadocs/api-3.6.1/index.html?overview-summary.html

本篇博客的主要目的是对math3做一个简单地介绍,至于具体的应用还需要自行研究,有什么疑问可以在下方评论区留言,积极交流才能更快地成长~

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值