Java进行矩阵运算(UJMP)
Java进行矩阵运算(UJMP)首先需下载进行矩阵运算的第三方jar包,jar包下载地址如下:https://ujmp.org/1.添加jar包以IDEA为例步骤1步骤2选择第一项并通过文件索引找到jar包下载位置,jar包类似于一个压缩包,可以用解压文件打开2.UJMP常用APIpublic static void main(String[] args) {/*** 基本运算*///创建3×3矩
·
Java进行矩阵运算(UJMP)
首先需下载进行矩阵运算的第三方jar包,jar包下载地址如下:
https://ujmp.org/
1.添加jar包
以IDEA为例
步骤1
步骤2
选择第一项并通过文件索引找到jar包下载位置,jar包类似于一个压缩包,可以用解压文件打开
2.UJMP常用API
/**
* 基本运算
*/
//创建3×3矩阵
Matrix m = DenseMatrix.Factory.zeros(3, 3);
//修改元素serAsDouble(value,i,j)
m.setAsDouble(1, 0, 0);
m.setAsDouble(2, 0, 1);
m.setAsDouble(3, 0, 2);
m.setAsDouble(1, 1, 0);
m.setAsDouble(3, 1, 1);
m.setAsDouble(2, 1, 2);
m.setAsDouble(3, 2, 0);
m.setAsDouble(2, 2, 1);
m.setAsDouble(2, 2, 2);
//矩阵的转置
Matrix transpose = m.transpose();
//矩阵的求和
Matrix sum = m.plus(transpose);
//矩阵的相减
Matrix minus = m.minus(transpose);
//矩阵的乘法
Matrix product = m.mtimes(transpose);
//矩阵的数乘
Matrix scaled = m.times(2.0);
//矩阵的逆
Matrix inv = m.inv();
//方阵的行列式
double det = m.det();
运算结果
矩阵m为:
1.0000 2.0000 3.0000
1.0000 3.0000 2.0000
3.0000 2.0000 2.0000
矩阵m的转置:
1.0000 1.0000 3.0000
2.0000 3.0000 2.0000
3.0000 2.0000 2.0000
矩阵的和:
2.0000 3.0000 6.0000
3.0000 6.0000 4.0000
6.0000 4.0000 4.0000
矩阵的差:
0.0000 1.0000 0.0000
-1.0000 0.0000 0.0000
0.0000 0.0000 0.0000
矩阵的乘法:
14.0000 13.0000 13.0000
13.0000 14.0000 13.0000
13.0000 13.0000 17.0000
矩阵的数乘:
2.0000 4.0000 6.0000
2.0000 6.0000 4.0000
6.0000 4.0000 4.0000
矩阵的逆:
-0.1818 -0.1818 0.4545
-0.3636 0.6364 -0.0909
0.6364 -0.3636 -0.0909
矩阵的行列式:
-10.999999999999998
3.小操作
//获取矩阵的行数与列数
int i = (int) m.getRowCount();
int j = (int) m.getColumnCount();
//数组转矩阵
int[][] a = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
};
Matrix arr = DenseMatrix.Factory.importFromArray(a);
//矩阵特征值
Matrix[] eigenValue = m.eig();
//矩阵LU分解
Matrix[] decompose = m.lu();
//创造m*n随机矩阵
Matrix randMat = Matrix.Factory.rand(3, 4);
// 选取行selectRows(Ret,i) Ret.NEW为深拷贝 Ret.LINK为浅拷贝
Matrix row = m.selectRows(Calculation.Ret.NEW, 0);
// 选取列
Matrix column = m.selectColumns(Calculation.Ret.NEW, 0);
// 按第j列进行排序sortrows(Calculation.Ret.NEW, j, boolean)
Matrix order = m.sortrows(Calculation.Ret.NEW, 1, false);
// 将矩阵的所有数值相加得到的返回值
double accumulation = m.getValueSum();
运算结果
矩阵的行数:
3
矩阵的列数:
3
数组转矩阵:
1.0000 2.0000 3.0000
4.0000 5.0000 6.0000
7.0000 8.0000 9.0000
矩阵的特征向量为:
0.7075 -0.5559 0.3741
0.1496 -0.5418 -0.7945
-0.6907 -0.6315 0.5482
矩阵的特征值为:
-1.5060 0.0000 0.0000
0.0000 6.3570 0.0000
0.0000 0.0000 1.1490
矩阵的LU分解:
1.0000 0.0000 0.0000
0.3333 1.0000 0.0000
0.3333 0.5714 1.0000
3.0000 2.0000 2.0000
0.0000 2.3333 1.3333
0.0000 0.0000 1.5714
0.0000 0.0000 1.0000
0.0000 1.0000 0.0000
1.0000 0.0000 0.0000
随机矩阵:
0.8278 0.5812 0.3573 0.6924
0.1943 0.4090 0.2563 0.7032
0.3256 0.8558 0.8142 0.7798
矩阵截取的行:
1.0000 2.0000 3.0000
矩阵截取的列:
1.0000
1.0000
3.0000
矩阵按某列排序:
1.0000 2.0000 3.0000
3.0000 2.0000 2.0000
1.0000 3.0000 2.0000
矩阵所有元素的和:19.0
更多推荐
已为社区贡献1条内容
所有评论(0)