2010-04-27 51 views
1

我必須動態地建立方程像以下:解決數學方程1個未知(方程動態建立)

X + X3/3 +(X/3)/ 4 +(X/3/4)/ 2 = 50

現在我想評估這個方程並得到x。該等式是動態構建的。 x是分類中的葉節點,其他3個節點是超概念。除數表示子節點的子數。

是否有一個庫允許動態構建這樣的方程並解析x?

謝謝,克里斯

回答

1

你的方程式總是這種形式(線性x)嗎? 如果是這樣,當建立方程時,只需將x設爲1並評估lhs。 這將給你lhs = 1 + 1/3 +(1/3)/ 4 +(1/3/4)/ 2 = 1.4583 .. 然後計算x = rhs/lhs = 50/1.4583

+0

是的,他們總是在這種形式!有沒有一個Java庫處理這個?謝謝 – user326667 2010-04-27 08:11:02

0

如果你打算使用Java,你可以試試JAS。它聲稱能夠解決多項式方程。

FTA:

Java的代數系統 (JAS)是面向對象的,類型安全 和多線程的方法來 計算機代數。 JAS提供了一個井 設計的軟件庫,使用 通用類型的代數 計算在Java編程語言中實現的 。該庫可以作爲任何其他Java軟件 包使用,也可以通過交互方式使用 或通過 解釋爲jython(Java Python)前端。 JAS的 焦點目前在 交換和可解多項式, Groebner基地和應用程序。通過 使用Java作爲實現 語言JAS是64位和多核 cpu ready。

1

它可能會幫助你做一些代數。

需要注意的是:

x= 3*x/3 = (x*4*3*2)/(4*3*2) 
x+x/3 = 3x/3 + x/3 = 4x/3 

和你的具體情況:

x + x/3 + (x/3)/4 + (x/3/4)/2 = (x*4*3*2)/(4*3*2) + (x*4*2)/(4*3*2) + (x*2)/(4*3*2) + (x)/(4*3*2) 
= (4*3*2x + 4*2x + 2*x + x)/(4*3*2) 

或許,如果你能找到一種方法,有改寫爲這樣的一個大的部分左側時,解決方案將變得更容易。 此外,分解出X

(4*3*2x + 4*2x + 2*x + x)/(4*3*2) = x*(4*3*2 + 4*2 + 2 + 1)/(4*3*2) 

然後求解X

50= x*(a/b) 
50*(b/a) = x 

既然你有一些代碼生成多項式,你應該能夠產生這麼大(A/B)部分的東西相當也很容易。我故意沒有簡化乘法運算,因此很清楚每個組件來自何處。