每个 Java 开发人员都应该知道的最佳数学库
除了 Java 的数学库之外,你还可以扩展强大的数学库以在 Java 项目中实现高级数学任务。
为了使本教程保持准确,我们将记录两个用于 Java 高级数学项目的知名库的配置。我们还将使用 Apache Commons Math 运行两个程序。
我们将使用 CMD 和 IDE 来实现和运行我们的程序。
在 Java 中使用数学库的范围
毫无疑问,我们的大部分任务都可以有效地关注 Java 的数学库。而且我们大多数人都不想下载 jar
文件并将它们添加为库来执行可以使用 Java 本身完成的操作。
好吧,并不是每个人都是 Java 书呆子。有些是初学者。
其他人则将技术转换为研究问题陈述,这些问题可以像有理数一样简单,也可以像机器学习、深度学习、遗传算法一样复杂,仅举几例。
在这两种情况下,使用库都不是问题。它将使你了解开发人员如何构建这些类来解决我们的问题。
Java 开发人员应该知道的一些可靠的数学库。
库名称 | 下载链接 | 开源 |
---|---|---|
Apache Commons | [Apache 下载存储库] | ✅ |
JScience |
http://jscience.org/ | ✅ |
Parallel Colt |
[资源下载] | ✅ |
Colt |
[下载 ] | ✅ |
Google Guava |
[可用的] | ✅ |
Java 中的 Apache Commons 数学库
它是来自著名 Apache 组织的高度评价、值得信赖且经常使用的开源数学库。
查看它的一些最受欢迎的功能:
- 统计
- 数据生成
- 线性代数
- 数值分析
- 分数
- 几何
- 复数
- 机器学习
- 优化
下载链接:
配置:
从你最喜欢的 IDE
中右键单击你的项目,进入构建路径
>配置构建路径
>库
>添加外部 jar
文件。
Eclipse 演示:
从 Windows 命令提示符配置 Java 库
- 创建一个文件夹
Demo
,将你的库jar
文件粘贴到该文件夹中。 - 现在,创建一个像下面这样的简单程序(给你一个演示,它可以是使用任何库的任何东西)。
import org.apache.commons.math3.fraction.Fraction;
public class Demo {
public static void main(String[] args) {
/*
* double[] n = { 1.1, 1.2, 1.3, 1.4, 2.1, 2.2, -2.35, 100.09 };
*
* for (double d : n) System.out.printf("12 : 445", d, new BigFraction(d,
* 0.00000002D, 10000));
*/
//In Java, assuming I have a double variable called decimal with the assigned value of 0.333,
//how would I display this as a "proper", formatted fraction -
//with the numerator over the denominator separated with a straight line (instead of simply displaying 1/3)?
Fraction a = new Fraction(1, 10);
Fraction b = new Fraction(0.99);
System.out.println("Result:" + " " + a.add(b));
// I need to add up a series of fractions, e.g. 1/2 + 1/3 + 1/4 + ..., and return a double. How can I avoid or minimize the round off error?
//
// An alternative if you want to preserve accuracy,
// and don't want to rely on the precision settings of BigDecimal, is to use the Apache Fractions library:
Fraction grf1 = Fraction.getReducedFraction(1, 2);
grf1 = grf1.add(Fraction.getReducedFraction(1, 2));
grf1 = grf1.add(Fraction.getReducedFraction(1, 3));
System.out.println(grf1);
System.out.println(grf1.doubleValue());
}
}
```
3. 在 Windows 中打开命令提示符。
4. 编译它:`javac -cp "commons-math3-3.6.1.jar" Demo.java`。
5. 运行它:`java -cp ".;commons-math3-3.6.1.jar" Demo`。
输出:
```text
Result: 109 / 100
4 / 3
1.3333333333333333
```
如果你有任何困惑,我们也创建了一个演示 gif。
![从 Windows 中的命令行界面 shell 配置和运行你的库程序](</img/Java/configure and run your library program from command line interface shell in windows.gif>)
## Apache Commons 演示数学程序
以下代码块将在定义的范围内创建随机数和字符串。你可以使用 Apache Commons 使用字母和数字来创建算法。
它使用:`apache import org.apache.commons.lang3.RandomStringUtils;` `commons-lang3-3.12.0` `jar` 文件(也附加在 zip 文件夹中)。
<!--adsense-->
代码:
```java
/*Basic level random string and random numeric value generator in the given range.abstract
Note this is for the demonstration of how to use a particular library*/
import org.apache.commons.lang3.RandomStringUtils;
public class BestJavaMathLibrary {
public static void main(String[] args) {
String rn1 = RandomStringUtils.randomNumeric(50);
System.out.println(rn1);
String rs1 = RandomStringUtils.randomAlphabetic(50);
System.out.println(rs1);
}
}
输出:
80511636875416144724783964293309510956685562561281
sXSlFJCVOxeaAhVAdEITZfynFdatqdvtAQPJVSrVTHlxZrjPYZ
Java 的 JScience 库
对于一些 Java 高级任务,它是另一个可靠的数学库。该库为有理数、多项式有理数和向量有理数提供了极好的支持。
你还可以通过在 Java 中应用你的自定义算法来构建条目并扩展它们的类,特别是如果你是一名研究生。
- 下载链接:[JScience Math Library for Java]。
- 配置:你可以按照本教程上一节中描述的步骤进行操作。
演示示例:
假设你要做一些与有理数相关的事情,并且你想为此使用 JScience 类。
代码:
import java.util.Collection;
import org.jscience.mathematics.number.LargeInteger;
import org.jscience.mathematics.number.Rational;
public class JScienceDemo {
public static void main (String[] args) {
//your code here
}
}
Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.
LinkedIn