2011-01-12 35 views
3

我想在Mma中執行以下操作。假設我有三個表達式,其中)。我想要另外一個指定三者中最大的那個至少是最小的兩倍。因此,有上述三種情況的排列在它們的順序方面:如何在mathematica中生成一組不等式列表

x1<=3 x1-x2<=x2-x1 && 2 x1<=x2-x1 
3 x1-x2<=x1<=x2-x1 && 2 (3 x1-x2)<=x2-x1 

.... ,其餘4個類似的條件。

我該如何自動形成這些條件(與0<=x1,x2<=1一起),然後將它們逐個送入Reduce,並根據x1求解x2?

非常感謝!

回答

3
eqs = {x1, 3 x1 - x2, x2 - x1}; 
Reduce[Max[eqs] >= 2 Min[eqs], {x1, x2}, Reals] 

如果你想要做的比較與第二大或第三大/最小則可以使用RankedMax

至於解決它X2 - 有對應於每個x1x2許多不同的值所以你不能在傳統意義上解決這個問題,你可以從RegionPlot

RegionPlot[Max[eqs] >= 2 Min[eqs], {x1, 0, 1}, {x2, 0, 1}, PlotPoints -> 100] 
+1

@Yaroslav Bulatov:在版本<8.0,如何獲得相當於表達式RankedMax?排序然後提取元素似乎不起作用。非常感謝! – 2011-01-13 21:40:36

0

使用MaxMin看到它,並指定x2變量列表x1之前,如下

In[1]:= Reduce[ 
     Max[x1, 3 x1 - x2, x2 - x1] >= 2 Min[x1, 3 x1 - x2, x2 - x1] && 
     0 <= x1 && x2 <= 1, 
     {x2, x1}] 
相關問題