1. 程式人生 > >apache-commons-math3-科學計算類庫-支援矩陣運算

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更適合大維度的矩陣,官方文件是這樣介紹的