幾次我發現我有一個系統,我需要指定所有變量都獲得不同的值(即不重複)。Mathematica減少/解決:請求非重複值的最佳方法
我平時做這樣的事情:
k = {a, b, c, d, e, f, g};
Reduce[
a != 2 && f == a + b && g == c - d && f == (d + e)/2 && f == e + g &&
First[And @@@ {0 < # < 8 & /@ k}] &&
[email protected](Sequence @@ (Subsets[k, {2}] /. {x_, y_} -> (x - y))) != 0,
k, Integers]
其reduce方程式
[email protected](Sequence @@ (Subsets[k, {2}] /. {x_, y_} -> (x - y))) != 0
的最後部分,詢問不同的值。
有沒有更好的方法來做到這一點? (我的意思是,不是產品等於零,而是指定I need all variables different
)
@Leonid任何關於何時更快地包含條件以及何時進行後期處理的預感? – 2011-05-28 02:06:36
@belisarius爲此,我需要知道Reduce是如何工作的。但在我看來,對於很多變數來說,產品狀況總是非常緩慢。我的猜測是'Reduce'會嘗試比最終解決方案更多的解決方案(即使沒有產品條件),並且每個解決方案都會測試產品條件。因此,使用後處理可能總是更快,*如果*所有解決方案都可以適應內存。如果你有任何方法可以解決可能的解決方案的數量上限,並且它不是非常巨大的,我會後處理。 – 2011-05-28 07:00:21
Belisarius的代碼在等待幾分鐘後沒有給我答案,而你的確做到了。 +1。但是,如果解決方案的總數很高,或許足以超過可用內存,那麼可以做什麼? – 2011-05-28 15:28:47