2008-10-07 347 views
3

我需要在我的應用程序中求解一些數學方程。這裏是這樣的方程的一個典型的例子:線性數學方程的方程求解器

a + b * c - d/e = a 

附加規則:

  • B%10 = 0
  • B> = 0
  • b < = 100
  • 每個數必須是整數
  • ...

我想得到a,b,c,d和e可能的解決方案集。

是否有任何圖書館那裏,無論是開源或商業,我可以用它來解決這樣一個方程式?如果是,他們提供什麼樣的結果?

+0

這看起來不像家庭作業Bill K.大多數家庭作業不需要外部庫。請重新考慮,然後再重新登錄。 – Landon 2008-10-07 23:45:10

回答

3

解決linear systems可以一般來解決使用線性編程。我建議首先看看Boost uBLAS - 它有一個簡單的三角解算器。然後,您可以檢出針對更多特定於域的方法的庫,可能爲QSopt

0

這看起來像線性規劃。 this列表幫助嗎?

+0

這看起來幾乎不像線性編程。 – 2008-10-17 20:19:00

0

除了其他職位。你的約束集讓人想起整數編程問題,所以你可能也想檢查這種事情。也許你的問題可以(重新)表達爲一個。

但是你必須知道,整數規劃問題往往是計算困難的問題之一,所以你最終可能會用很多時鐘週期來破解它。

2

你正在冒險進入數值分析的世界,這裏是龍。規格上看似微小的差異可能會對正確的方法產生巨大的影響。

我毫不猶豫地提出具體的建議,而沒有相當準確地描述問題域。這聽起來似乎很膚淺,就像你正在解決約束線性問題一樣簡單,以至於有很多方法可以做到,但「...」可能是一個問題。

一般求解器等的一個很好的資源將是GAMS。大部分軟件可能會對你所要求的內容有一定的影響。

1

我知道這是不是你真正的問題,但你可以簡化給出的公式:

d = B * C * E與E = 0

+0

這對d = 0,b = 1,c = 1不起作用。我想出的最好的是b * c = d/e – dummy 2008-10-07 21:24:29

0

只看「附加規則」部分,它看起來像線性編程,在這種情況下,LINDO或類似的實現單純形算法的程序應該沒問題。

但是,如果第一個方程實際上是典型的它表明你的並不是一個線性代數問題 - 沒有2個變量彼此相乘或相除應出現在線性方程中!

所以我會說你絕對需要一個計算機代數系統或使用遺傳算法解決問題。

由於你有類似於線性編程中的那些限制,雖然你不是那裏,如果你只是想解決你的具體問題,我會說拿起任何在Wikipedia's article on genetic algorithms末尾提到的庫和開發一個應用程序給你的結果。如果你想要一個更通用的方法,那麼你必須在你的計算機上模擬代數操作,沒有其他辦法。

0

TI-89計算器有一個「求解器」應用程序。 它的目的是爲了解決你的例子中的問題。 我知道它不是一個圖書館。但是那裏有幾個TI-89仿真器。