我想使用區間算法來計算給定方程的範圍。例如,C = f(A,B)其中解析Java中的數學方程
f = -12.5 * log10 (1 + (0.64*(1-cos(A))/(1-cos(B/4)))
我將A和B的範圍作爲輸入,並將包含f的字符串給出。間隔運算庫我計算了簡單函數的範圍,如f = log A等。因此,要計算上述函數的範圍,我必須手動編寫多個步驟,如首先查找cos(A),然後1 - cos(A)直到我得到整個方程的範圍。我試圖找到是否有辦法解析這個公式,可能會得到解析器在計算過程中計算的步驟,以便在每一步都可以找到一個範圍,並讓解析器進入下一步。我想知道表達式評估過程中的每一步。例如,如果f = A + B(1-C)。軟件首先計算1-c,然後計算B *(1-C),然後它將它添加到A.所以,我需要在每一步控制,以便我可以找到目前評估的表達式的範圍。
任何指針表示讚賞。
有可能是你可以借用[調度場算法]的實現(http://en.wikipedia.org/wiki/Shunting-yard_algorithm)。這應該讓你開始着手評估大部分表達。 –
你可能會檢查[ANTLR](http://www.antlr.org) – user3334690