簡體   English   中英

JAVA中的符號數學實現

[英]Symbolic Mathematics implementation in JAVA

我正在嘗試構建一個表達式解析器,用於計算數學表達式的值。 然而,問題在於某些類別的表達式,其評估為無理數。

讓我們舉一個例子,如(√2)²這應該評估為2但是由於程序編碼的邏輯,它返回一個小數點數。

首先評估√2等於1.4142135 ,然后將結果平方給出1.9999998

目前,所有可以做的是通過JLink將表達式發送到Mathematica ,然后使用結果。 然而,這需要第三方軟件的幫助。

我想知道是否可以在java中實現這一切。

是的,您當然可以在Java中實現表達式解析器。 我認為你的基本錯誤不是Java編程,而是程序設計。

你不應該在盡可能晚地評估沖擊。 相反,您應該將(sqrt(n))^2sqrt(n)*sqrt(n)sqrt(n)*sqrt(n)等表達式求值為n 只有這樣才能考慮將n轉換為等效的浮點數。

您在方法中確定為錯誤的是浮點運算的一個特征,您將很難對抗它。 更好的策略是通過對符號表達式實現符號操作來解決它。

Double value = new Double(2);
Double power = new Double(2);
Double result = Math.pow(value, power);
result = Math.sqrt(result);
System.out.print(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM