ArgMax
詳細とオプション
- ArgMaxは与えられた制約条件に従って f の最大値を求める.
- ArgMaxは,通常,制約条件下で可能な最大値を求めるために使われる.分野によっては,最適な戦略,最良適合,最適な構成等と呼ばれることがある.
- f と cons が線形または多項式の場合,ArgMaxは常に最大値を求める.
- 制約条件 cons は,以下の任意の論理結合でよい.
-
lhs==rhs 等式 lhs>rhs, lhs≥rhs, lhs<rhs, lhs≤rhs 不等式 (LessEqual,…) lhsrhs, lhsrhs, lhsrhs, lhsrhs ベクトル不等式 (VectorLessEqual,…) Exists[…], ForAll[…] 量化条件 {x,y,…}∈rdom 領域指定 - ArgMax[{f,cons},x∈rdom]は,事実上,ArgMax[{f,cons∧x∈rdom},x]に等しい.
- x∈rdom については,Indexed[x,i]を使って別の座標に言及することができる.
- 次は,使用可能な領域 rdom である.
-
Reals 実数スカラー変数 Integers 整数スカラー変数 Vectors[n,dom]
のベクトル変数Matrices[{m,n},dom]
の行列変数ℛ 幾何領域
に制限されたベクトル変数 - デフォルトで,すべての変数が実数であるとみなされる.
- ArgMaxは入力が厳密値の場合は厳密値を返す.入力が近似値の場合は自動的にNArgMaxを呼び出す.
- 最大値が制約条件で定義された領域外で無限小にあるいは漸近的にしか達しなかった場合,ArgMaxは最も近い指定可能な点を返す.
- いくつかの点で同じ最大値に達したとしても,その中の1つしか返されない.
- ArgMaxは,制約条件が満足できない場合は{Indeterminate,Indeterminate,…}を返す.
- N[ArgMax[…]]は,記号的には解けない最適化問題についてはNArgMaxを呼び出す.
例題
すべて開く すべて閉じる例 (5)
ArgMax[-2x ^ 2 - 3x + 5, x]ArgMax[1 - (x y - 3) ^ 2, {x, y}]ArgMax[{x - 2y, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]ArgMax[a x ^ 2 + b x + c, x]ArgMax[x + y, {x, y}∈Disk[]]Show[ContourPlot[x + y, {x, y}∈Disk[]], Graphics[{Red, PointSize[Large], Point[%]}]]スコープ (36)
基本的な用法 (7)
ArgMax[Sin[x] + Cos[x], {x}]リスト中に単一の変数が与えられていない場合,結果は最大値に達する値になる:
ArgMax[Sin[x] + Cos[x], x]ArgMax[{x + 2y, x ^ 2 + 2y ^ 2 ≤ 3 && x + y == 2 && x ≥ 1}, {x, y}]ArgMax[{x y, x ^ 2 + y ^ 2 ≤ 1 || (x + 1) ^ 2 + (y - 1) ^ 2 ≤ 2}, {x, y}]ArgMax[{x + y, x ≤ y ^ 2}, {x, y}]ArgMax[{x + y, x ^ 2 + y ^ 2 < 0}, {x, y}]ArgMax[-Exp[x], x]ArgMax[{{-1, -1}.v, {{1, 2}, {1, 0}}.v{3, -1}}, v]一変数の問題 (7)
ArgMax[-x ^ 4 + 2x ^ 3 + 5x - 7, x]ArgMax[{-3x ^ 2 - x + 9, 2x ^ 3 + 5x - 7 ≥ 0}, x]ArgMax[-E ^ (2E ^ x) + Log[x ^ 2 + 1] + 20x, x]ArgMax[{AiryAi[x + Sin[x]] + Cos[x ^ 2], -5 ≤ x ≤ 5}, x]Plot[AiryAi[x + Sin[x]] + Cos[x ^ 2], {x, -5, 5}, Epilog -> {Red, Point[{%, AiryAi[x + Sin[x]] + Cos[x ^ 2] /. x -> %}]}]ArgMax[{BesselJ[2, x] / Gamma[x + 1] + (x + 1) ^ Sin[x], 0 ≤ x ≤ 10}, x]Plot[BesselJ[2, x] / Gamma[x + 1] + (x + 1) ^ Sin[x], {x, 0, 10}, Epilog -> {Red, Point[{%, BesselJ[2, x] / Gamma[x + 1] + (x + 1) ^ Sin[x] /. x -> %}]}]ArgMax[{Sin[x], -1 / 2 ≤ Cos[x] ≤ 1 / 2}, x]ArgMax[Sin[E ^ (x / 3) - 3 x] + 2 Cos[2 E ^ (x / 3) - 6 x + 1] ^ 2, x]ArgMax[{Floor[x + UnitStep[x - 1]] - x, Ceiling[Abs[x]] < 5}, x]ArgMax[SinhIntegral[DawsonF[x]], x]ArgMax[BesselJ[7 / 4, x ^ 2 + x + 1], x]多変数の問題 (9)
ArgMax[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]ArgMax[{(2x + y - z) / (5x - 7y + 3), 0 ≤ x + y + z ≤ 1 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]ArgMax[x ^ 2 - 2y - 1 - (x ^ 2 - 2y) ^ 2, {x, y}]ArgMax[{x y - 1, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]ArgMax[{1 - x ^ 2, x y ≥ 1}, {x, y}]ArgMax[{x, x y ≤ 1}, {x, y}]ArgMax[{x, x ^ 2 + y ^ 2 < 0}, {x, y}]ArgMax[{-(x + 7)^2 - (y - 8)^2, Subscript[∀, z]Subscript[∃, w]3 z^2 w + (x + y) z^4 - 1 == (x^3 - x y + y^2 - 1) w^2}, {x, y}]ArgMax[{-x - Sqrt[x + y] , x Sqrt[y] ≥ 1}, {x, y}]ArgMax[{E ^ x + Log[y], x Log[y] == 2 && -10 ≤ x ≤ 10 && 1 / 10 ≤ y ≤ 10}, {x, y}]ArgMax[{-Max[x - y, Abs[y]], Min[x - 2, x - y ^ 2] ≥ Abs[x y - 1]}, {x, y}]ArgMax[v.{1, -1}, {VectorGreaterEqual[{{{1, 0}, {0, 1}, {-1, -2}}.v, {0, 0, -2}}, "ExponentialCone"]}, v]res = ArgMax[{Log[x + y], (| | |
| ----- | ----- |
| x + y | 1 |
| 1 | x - y |)Underscript[, {"SemidefiniteCone", 2}]0 && 1 ≤ x ≤ 10 && -1 ≤ y ≤ 1}, {x, y}]Show[Plot3D[Log[x + y], {x, 1, 10}, {y, -1, 1}, ...], Graphics3D[{Red, PointSize[0.05], Point[Append[res, Log[x + y] /. Thread[{x, y} -> res]]]}]]パラメトリック問題 (4)
ArgMax[{8x + 7y, -6 x - 4 y ≤ 8 - 5 a - 7 b && 7 x + 5 y ≤ a + 4 b && -x + y ≤ 6 + 4a - 5 b && -4 x + 7 y ≤ -1 - 2 a - 7 b && 5 y ≤ 6 - 9 b}, {x, y}]GraphicsRow[Plot3D[#, {a, -3, 3}, {b, 0, 3}, Axes -> False]& /@ %, ImageSize -> Medium]ArgMax[{-(x - 1) ^ 2 - (2y - 1) ^ 2, x + 2y ≤ a + b && 2x - y ≤ a - b + 1 && x - 2y ≤ 2a - b + 1}, {x, y}]GraphicsRow[Plot3D[#, {a, -3, 3}, {b, 0, 3}, Axes -> False]& /@ %, ImageSize -> Medium]ArgMax[-x ^ 4 + a x ^ 2 + b, x]ArgMax[{-x ^ 2 - y ^ 2, x ^ 3 + y ^ 2 == a}, {x, y}]整数上の最適化 (3)
ArgMax[{x ^ 3 Log[x] - E ^ x, x > 0}, x, Integers]ArgMax[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}, Integers]ArgMax[{-x ^ 2 - x y + 1, x y ≥ 1}, {x, y}, Integers]領域上の最適化 (6)
ℛ = Cylinder[{{1, 2, 3}, {3, 2, 1}}, 1];ArgMax[z, {x, y, z}∈ℛ]Graphics3D[{{Opacity[0.5], Green, ℛ}, {Red, PointSize[Large], Point[%]}}]Subscript[ℛ, 1] = Disk[];
Subscript[ℛ, 2] = Line[{{-(1/2), -(1/2)}, {-(1/2), (1/2)}, {(1/2), (1/2)}, {(1/2), -(1/2)}, {-(1/2), -(1/2)}}];ArgMax[(x - u)^2 + (y - v)^2, {{x, y}∈Subscript[ℛ, 1], {u, v}∈Subscript[ℛ, 2]}]//RootReduceGraphics[{{StandardBlue, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}, {Red, Point[Partition[%, 2]]}}]Subscript[ℛ, 1] = Triangle[{{0, 0}, {1, 0}, {0, 1}}];
Subscript[ℛ, 2] = Circle[{(1/3), (1/3)}, {2 r, r}];ArgMax[{r, {x, y}∈Subscript[ℛ, 1] && {x, y}∈Subscript[ℛ, 2]}, {r, x, y}]Graphics[{{StandardBlue, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}, {Red, Point[{x, y}]}} /. Thread[{r, x, y} -> %]]Subscript[ℛ, 3] = Disk[{a, b}, {r, 2 - r}];ArgMax[{r, ({0, 0} | {1, 0} | {0, 1})∈Subscript[ℛ, 3]}, {a, b, r}]Graphics[{{StandardBlue, Subscript[ℛ, 3]} /. Thread[{a, b, r} -> %], {Red, Point[{{0, 0}, {1, 0}, {0, 1}}]}}]ℛ = Sphere[];ArgMax[x.{1, 2, 3}, x∈ℛ]Subscript[ℛ, 1] = Triangle[{{0, 0}, {1, 0}, {0, 1}}];
Subscript[ℛ, 2] = Disk[{2, 2}, 1];ArgMax[(x - y).(x - y), {x∈Subscript[ℛ, 1], y∈Subscript[ℛ, 2]}]//RootReduceGraphics[{{StandardBlue, Subscript[ℛ, 1], Subscript[ℛ, 2]}, {Red, Point[%]}}]オプション (2)
Method (1)
ArgMaxが円筒代数分解を使用するよう指定する:
maxcad = ArgMax[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}, Method -> "CAD"]maxlm = ArgMax[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}, Method -> "LagrangeMultipliers"]maxdef = ArgMax[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}]RootReduce[maxcad] === RootReduce[maxlm] === RootReduce[maxdef]WorkingPrecision (1)
TimeConstrained[ArgMax[{x ^ 2 + y ^ 2 + z ^ 2, x ^ 2 - 3 x y z + 9 z ^ 2 + y ^ 2 == E && x y z ≤ Pi}, {x, y, z}], 60]WorkingPrecision->200とすると,最大値の近似点を求めることができる:
ArgMax[{x ^ 2 + y ^ 2 + z ^ 2, x ^ 2 - 3 x y z + 9 z ^ 2 + y ^ 2 == E && x y z ≤ Pi}, {x, y, z}, WorkingPrecision -> 200]//Timingアプリケーション (15)
基本的な問題 (3)
ArgMax[{x y, 2x + 2y == 1 && x > 0 && y > 0}, {x, y}]triangle = a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a;
s = 1 / 2(a + b + c);ArgMax[{Sqrt[s(s - a)(s - b)(s - c)], triangle && a + b + c == 1}, {a, b, c}]ArgMax[ {v Sin[α] t - 5 t ^ 2, t ≥ 0 && 0 < Sin[α] ≤ 1 && v > 0}, t]Refine[%, 0 < Sin[α] ≤ 1 && v > 0]幾何学的距離 (9)
指定された点 p から最も遠い領域 ℛ 内の点 q はArgMax[{Norm[p-q],q∈ℛ},q]で与えられる.{1,1}から最も遠いDisk[] 内の点を求める:
p = {1, 1};
ℛ = Disk[];q = Simplify@ArgMax[Norm[p - {q1, q2}], {q1, q2}∈ℛ]Graphics[{{StandardBlue, EdgeForm[Gray], ℛ}, {Red, Point[{p, q}]}, {Dashed, Line[{p, q}]}}]{1,2}から最も遠い,標準的な単位単体Simplex[2]内の点を求める:
p = {1, 2};
ℛ = Simplex[{{0, 0}, {1, 0}, {0, 1}}];q = Simplify@ArgMax[Norm[p - {q1, q2}], {q1, q2}∈ℛ]Graphics[{{StandardBlue, EdgeForm[Gray], ℛ}, {Red, Point[{p, q}]}, {Dashed, Line[{p, q}]}}]{1,1,1}から最も遠い,標準単位球Sphere[]上の点を求める:
p = {1, 1, 1};
ℛ = Sphere[];q = Simplify@ArgMax[Norm[p - {q1, q2, q3}], {q1, q2, q3}∈ℛ]Graphics3D[{{Opacity[0.5], ℛ}, {Red, Point[{p, q}]}, {Dashed, Line[{p, q}]}}]{-1,1,1}から最も遠い,標準単位単体Simplex[3]内の点を求める:
p = {-1, 1, 1};
ℛ = Simplex[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}];q = Simplify@ArgMax[Norm[p - {q1, q2, q3}], {q1, q2, q3}∈ℛ]Graphics3D[{{Opacity[0.5], ℛ}, {Red, Point[{p, q}]}, {Dashed, Line[{p, q}]}}]領域 ℛ の直径は,ℛ 内の最も遠い点間の距離で与えられる.これは,ArgMax[Norm[p-q],{q∈ℛ,p∈ℛ}]で計算することができる.Circle[]の直径を求める:
ℛ = Circle[];{pt, qt} = ArgMax[Norm[p - q], {q∈ℛ, p∈ℛ}]Norm[pt - qt]//SimplifyGraphics[{{ℛ}, {Red, Point[{pt, qt}]}, {Dashed, Line[{pt, qt}]}}]標準的な単位単体Simplex[2]の直径を求める:
ℛ = Simplex[{{0, 0}, {1, 0}, {0, 1}}];{pt, qt} = ArgMax[Norm[p - q], {q∈ℛ, p∈ℛ}]Norm[pt - qt]Graphics[{{StandardBlue, EdgeForm[Gray], ℛ}, {Red, Point[{pt, qt}]}, {Dashed, Line[{pt, qt}]}}]標準的な単位立方体Cuboid[]の直径を求める:
ℛ = Cuboid[];{pt, qt} = ArgMax[Norm[p - q], {q∈ℛ, p∈ℛ}]Norm[pt - qt]//SimplifyGraphics3D[{{Opacity[0.5], ℛ}, {Red, Point[{pt, qt}]}, {Dashed, Line[{pt, qt}]}}]最も遠い点 p∈ と q∈ はArgMax[Norm[p-q],{p∈,q∈}]で求めることができる.Disk[{0,0}]およびRectangle[{3,3}]内の最も遠い点を求める:
𝒫 = Disk[{0, 0}]; 𝒬 = Rectangle[{3, 3}];{pt, qt} = Simplify@ArgMax[Norm[p - q], {p∈𝒫, q∈𝒬}]Norm[pt - qt]//SimplifyGraphics[{{StandardBlue, EdgeForm[Gray], 𝒫, 𝒬}, {Red, Point[{pt, qt}]}, {Dashed, Line[{pt, qt}]}}]Line[{{0,0,0},{1,1,1}}]およびBall[{5,5,0},1]内の最も遠い点を求める:
𝒫 = Line[{{0, 0, 0}, {1, 1, 1}}]; 𝒬 = Ball[{5, 5, 0}, 1];{pt, qt} = Simplify@ArgMax[Norm[p - q], {p∈𝒫, q∈𝒬}]Norm[pt - qt]//SimplifyGraphics3D[{{𝒫, {Opacity[0.5], 𝒬}}, {Red, Point[{pt, qt}]}, {Dashed, Line[{pt, qt}]}}]幾何学的中心 (3)
ℛ⊆nが全次元の領域であれば,Chebyshev Center は-SignedRegionDistance[ℛ,p]を最大にする,つまり,補領域までの距離である点 p∈ℛ である.Disk[]のChebyshev Centerを求める:
ℛ = Disk[];p = ArgMax[-SignedRegionDistance[ℛ, {p1, p2}], {p1, p2}∈ℛ]Graphics[{{StandardBlue, EdgeForm[Gray], ℛ}, {Red, Point[p]}}]Rectangle[]についてのChebyshev Centerを求める:
ℛ = Rectangle[];p = ArgMax[-SignedRegionDistance[ℛ, {p1, p2}], {p1, p2}∈ℛ]Graphics[{{StandardBlue, EdgeForm[Gray], ℛ}, {Red, Point[p]}}]不等式 ℛ=ImplicitRegion[f1[x]≥0∧⋯∧fm[x]≥0,x]で定義される領域の「解析の中心」はArgMax[{Log[f1[x]⋯ fm[x]],x∈ℛ},x]で与えられる.Triangle[{{0,0},{1,0},{0,1}}]の解析の中心を求める:
RegionMember[Triangle[{{0, 0}, {1, 0}, {0, 1}}], {x, y}]{f1, f2, f3} = {x, y, 1 - x - y};c = ArgMax[Log[f1 f2 f3], {x, y}∈Triangle[{{0, 0}, {1, 0}, {0, 1}}]]Graphics[{{StandardBlue, EdgeForm[Gray], Triangle[{{0, 0}, {1, 0}, {0, 1}}]}, {Red, Point[c]}}]Cylinder[]についての解析的中心を求める:
RegionMember[Cylinder[], {x, y, z}]{f1, f2, f3} = {(1 + z) / 2, 1 - (1 + z) / 2, 1 - (x^2 + y^2)};c = ArgMax[Log[f1 f2 f3], {x, y, z}∈Cylinder[]]Graphics3D[{{Opacity[0.3], Cylinder[]}, {Red, Point[c]}}]特性と関係 (4)
Maximizeは最大値と最大になる点の両方の値を与える:
Maximize[{x - 2y, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]ArgMaxは厳密に最大値となる点を与える:
f = Expand[-Product[(x - i)(x - 100 - i), {i, 5}]];ArgMax[f, x]Plot[f, {x, 0, 100}, Epilog -> {PointSize[Medium], Green, Point[{%, f /. x -> %}]}]NArgMaxは数値的に最大値となる点を求めようとするが,極大値となる点を求めることがある:
NArgMax[f, x]Plot[f, {x, 0.5, 5.5}, Epilog -> {PointSize[Medium], Red, Point[{%, f /. x -> %}]}]FindArgMaxは始点によって極大値となる点を求める:
FindArgMax[f, {x, #}]& /@ {1, 50}Plot[f, {x, 0, 100}, Epilog -> {PointSize[Medium], {Red, Point[{%[[1, 1]], f /. x -> %[[1, 1]]}]}, {Green, Point[{%[[2, 1]], f /. x -> %[[2, 1]]}]}}]メッセージが出ない限り,最大となる点は制約条件を満たしている:
m = ArgMin[{(x - 2) ^ 2 + (y - 3 / 2) ^ 2, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]x ^ 2 + y ^ 2 ≤ 1 /. Thread[{x, y} -> m]RegionPlot[x ^ 2 + y ^ 2 ≤ 1, {x, -1.2, 2.2}, {y, -1.2, 2.2}, Epilog -> {PointSize[Medium], {Red, Point[m]}, {Green, Point[{2, 3 / 2}]}}]最大値に達しない場合,ArgMaxは境界上の点を与えることがある:
ArgMax[{(x - 2) ^ 2 + (y - 3 / 2) ^ 2, x ^ 2 + y ^ 2 < 1}, {x, y}]ここでは,y が無限大に向かうときに目的関数が最大値に向かっている:
ArgMax[{1 - x, x y == 1 && x > 0}, {x, y}]ArgMaxは線形最適化問題を解くことができる:
res = ArgMax[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]LinearOptimizationは引数の符号を負にすることで与えられた同じ問題を解くことができる:
LinearOptimization[-(2x + 3y - z), {1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2
&& x - y - z == 3}, {x, y, z}]考えられる問題 (2)
ArgMax[{1 - x ^ 2, x y ≥ 1}, {x, y}]ArgMax[{x, x y ≤ 1}, {x, y}]ArgMax[{x, x ^ 2 + y ^ 2 < 0}, {x, y}]ArgMaxは入力中に存在するすべての関数が実数値を持つことを必要とする:
ArgMax[{-x - y, Sqrt[x] - Sqrt[y] == 0}, {x, y}]方程式は満足するが平方根が実数とはならない値は認められない:
{Sqrt[x] - Sqrt[y] == 0, Sqrt[x], Sqrt[y]} /. {x -> -1, y -> -1}テクニカルノート
-
▪
- 不等式 ▪
- 最小化と最大化 ▪
- 制約条件付き最適化 ▪
- 制約条件のない最適化 ▪
- 内部実装について:代数と解析
関連するガイド
-
▪
- 最適化 ▪
- 記号的なベクトル,行列,配列 ▪
- 離散微積分 ▪
- 領域におけるソルバ ▪
- 凸最適化
テキスト
Wolfram Research (2008), ArgMax, Wolfram言語関数, https://reference.wolfram.com/language/ref/ArgMax.html (2021年に更新).
CMS
Wolfram Language. 2008. "ArgMax." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/ArgMax.html.
APA
Wolfram Language. (2008). ArgMax. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ArgMax.html
BibTeX
@misc{reference.wolfram_2026_argmax, author="Wolfram Research", title="{ArgMax}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/ArgMax.html}", note=[Accessed: 14-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_argmax, organization={Wolfram Research}, title={ArgMax}, year={2021}, url={https://reference.wolfram.com/language/ref/ArgMax.html}, note=[Accessed: 14-August-2026]}