每個 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