Mathematicaの最小化関数

puzzle wolfram-mathematica
Mathematicaの最小化関数

Mathematicaの「最小化」関数はMod [x、2] == 0のような制約を許可しないのは本当ですか? Mathematicaでhttp://amc.maa.org/mathclub/5-0,problems/M-problems/M-web,ia/2002web/m02-03-ia.shtml[MinuteMath]パズルを解決しようとしています。

_
4つの異なる正の偶数整数の可能な最小平均は?
_

私の「解決策」は次のようになります。

vars = Subscript[x, #] & /@ Range[4];
cond = Apply[And, Mod[#, 2] == 0 & /@ vars] &&
   (0 < Subscript[x, 1]) &&
   Apply[And, Table[Subscript[x, i] < Subscript[x, i + 1], {i, 1, 3}]];
Minimize[{Mean[vars], cond}, vars, Integers]

しかし、 `Minimize`は未評価を返します。 追加の質問:制約の定義に「EvenQ」を使用できますか? 問題は、未定義の式「x」に対して「EvenQ [x]」が「False」を返すことです。

  1  0


ベストアンサー

明らかに、これは数学を必要としませんが、あなたの質問に対する答えとして、 `Minimize`はMODを好まないようです。 ただし、次のように数式に組み込むことができます。

Minimize[{(2 x1 + 2 x2 + 2 x3 + 2 x4)/4,
  0 < x1 < x2 < x3 < x4}, {x1, x2, x3, x4}, Integers]

5


この問題は明らかに過剰ですが、いくつかのトリックを示すのに役立ちます。

ご了承ください:

 Exists[x, Element[x, Integers] && n x == y]

の代替として使用できます

  Mod[y,n] == 0

So:

Minimize[{(x1 + x2 + x3 + x4)/4, 0 < x1 < x2 < x3 < x4 &&
   Exists[x, Element[x, Integers] && 2 x == x1] &&
   Exists[x, Element[x, Integers] && 2 x == x2] &&
   Exists[x, Element[x, Integers] && 2 x == x3] &&
   Exists[x, Element[x, Integers] && 2 x == x4]
  },
 {x1, x2, x3, x4}, Integers]

-> {5, {x1 -> 2, x2 -> 4, x3 -> 6, x4 -> 8}}

またはおそらくもっとエレガント:

s = Array[x, 4];
Minimize[{
  [email protected],
  Less @@ ({0} \[Union] s) &&
   And @@ (Exists[y, Element[y, Integers] && 2 y == #] & /@ s)},
s, Integers]

--> {20, {x[1] -> 2, x[2] -> 4, x[3] -> 6, x[4] -> 8}}

4


タイトルとURLをコピーしました