java关于数学的jar包

commons-math3

推荐的jar包是commons-math3

  • 看看它有什么上图:(来源于浏览器翻译)
    在这里插入图片描述
    在这里插入图片描述

目录

  1. 概述
    0.1 关于用户指南
    0.2 公地数学中有什么
    0.3 公地数学是如何组织的
    0.4 如何在 commons-math javadoc 中指定接口合约
    0.5 依赖关系
  2. 统计
    1.1 概述
    1.2 描述性统计量
    1.3 频率分布
    1.4 简单回归
    1.5 多元回归
    1.6 排名转换
    1.7 协方差和相关性
    1.8 统计检验
  3. 数据生成
    2.1 概述
    2.2 随机数
    2.3 随机向量
    2.4 随机字符串
    2.5 随机排列、组合、抽样
    2.6 生成"类似"输入文件的数据
    2.7 PRNG可插拔性
  4. 线性代数
    3.1 概述
    3.2 实矩阵
    3.3 实向量
    3.4 求解线性系统
    3.5 特征值/特征向量和奇异值/奇异向量
    3.6 非实数场(复数、分数等)
  5. 数值分析
    4.1 概述
    4.2 错误处理
    4.3 寻根
    4.4 插值
    4.5 集成
    4.6 多项式
    4.7 差异化
  6. 特殊功能
    5.1 概述
    5.2 Erf 函数
    5.3 伽玛函数
    5.4 测试版功能
  7. 公用事业
    6.1 概述
    6.2 双阵列实用程序
    6.3 整数/双哈希映射
    6.4 连续分数
    6.5 二项式系数、阶乘、斯特林数和其他常用数学函数
    6.6 快速数学函数
    6.7 杂项
  8. 复数
    7.1 概述
    7.2 复数
    7.3 复杂的超越函数
    7.4 复杂格式和解析
  9. 概率分布
    8.1 概述
    8.2 分发框架
    8.3 用户定义的分布
  10. 分数
    9.1 概述
    9.2 分数数
    9.3 分数格式和解析
  11. 转换方法
  12. 几何形状
    11.1 概述
    11.2 欧几里得空间
    11.3 n球
    11.4 二进制空间分区
    11.5 地区
  13. 优化
    12.1 概述
    12.2 单变量函数
    12.3 线性规划
    12.4 直接方法
    12.5 一般情况
  14. 曲线拟合
    13.1 概述
    13.2 实现的功能
    13.3 一般情况
  15. 最小二乘法
    14.1 概述
    14.2 最小平方生成器和最小方块工厂
    14.3 模型函数
    14.4 参数验证
    14.5 调谐
    14.6 优化引擎
    14.7 求解
    14.8 示例
  16. 常微分方程积分
    15.1 概述
    15.2 连续输出
    15.3 离散事件处理
    15.4 可用的集成商
    15.5 衍生品
  17. 遗传算法
    16.1 概述
    16.2 GA 框架
    16.3 实现和示例
  18. 过滤器
    17.1 概述
    17.2 卡尔曼滤波器
  19. 机器学习
    18.1 概述
    18.2 聚类算法和距离测量
    18.3 实现
  20. 例外情况
    19.1 概述
    19.2 未选中的异常
    19.3 层次结构
    19.4 功能

pom

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

使用

线性代数

矩阵相关

先写一个用于输出二维数组的方法:

	void print(double[][] arr){
        System.out.println(Arrays.deepToString(arr));
    }

测试矩阵相乘、求逆等

	@Test
    public void testRealMatrix(){
        // 创建2*3的矩阵
        double[][] matrixData = { {1d,2d,3d}, {2d,5d,3d}};
        RealMatrix m = MatrixUtils.createRealMatrix(matrixData);

        // 3*2的矩阵
        double[][] matrixData2 = { {1d,2d}, {2d,5d}, {1d, 7d}};
        RealMatrix n = new Array2DRowRealMatrix(matrixData2);

        //相乘
        RealMatrix p = m.multiply(n);
        System.out.println(p.getRowDimension());    // 2
        System.out.println(p.getColumnDimension()); // 2
        print(p.getData());

        // 求逆
        RealMatrix pInverse = new LUDecomposition(p).getSolver().getInverse();
        
        // 检验相乘是否为1
        System.out.println(p.multiply(pInverse));  //1
        
        print(pInverse.getData());
    }
线性方程组
    @Test
    public void t1(){
         /*
         求解线性系统
         2x + 3y - 2z = 1
         -x + 7y + 6x = -2
         4x - 3y - 5z = 1
         */
        //首先分解系数矩阵 A(在本例中使用 LU 分解)并构建求解器
        RealMatrix coefficients = 
                new Array2DRowRealMatrix(new double[][] { { 2, 3, -2 }, { -1, 7, 6 }, { 4, -3, -5 } },
                        false);
        DecompositionSolver solver = new LUDecomposition(coefficients).getSolver();

        //接下来创建一个数组来表示常量向量 B 并用于求解系统RealVector.solve(RealVector)
        RealVector constants = new ArrayRealVector(new double[] { 1, -2, 1 }, false);
        RealVector solution = solver.solve(constants);
        // 获取结果
        for (int i = 0; i < 3; i++) {
            System.out.println(solution.getEntry(i));
        }
    }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值