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
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐