Minimize
詳細とオプション
- Minimizeは上限(インフィマム),記号最適化,および大域的最適化(GO)としても知られている.
- Minimizeは与えられた制約条件に従って f の最小値を求める.
- Minimizeは,通常,制約条件下で可能な最小値を求めるために使われる.分野によっては,最適な戦略,最良適合,最適な構成等と呼ばれることがある.
- Minimizeは{fmin,{x->xmin,y->ymin,…}}の形式のリストを返す.
- f および cons が線形あるいは多項式の場合,Minimizeは常に大域的な最小大値を求める.
- 制約条件 cons は以下の論理結合でよい.
-
lhs==rhs 等式 lhs>rhs, lhs≥rhs, lhs<rhs, lhs≤rhs 不等式 (LessEqual,…) lhsrhs, lhsrhs, lhsrhs, lhsrhs ベクトル不等式 (VectorLessEqual,…) Exists[…], ForAll[…] 量化条件 {x,y,…}∈rdom 領域指定 - Minimize[{f,cons},x∈rdom]は,事実上,Minimize[{f,cons∧x∈rdom},x]に等しい.
- x∈rdom については,Indexed[x,i]を使って別の座標に言及することができる.
- 次は,使用可能な領域 rdom である.
-
Reals 実数スカラー変数 Integers 整数スカラー変数 Vectors[n,dom]
のベクトル変数Matrices[{m,n},dom]
の行列変数ℛ 幾何領域
に制限されたベクトル変数 - デフォルトで,すべての変数が実数であるとみなされる.
- Minimizeは入力が厳密値の場合は厳密値を返す.入力が近似値の場合は自動的にNMinimizeを呼び出す.
- Minimizeは次の形式を返す.
-
{fmin,{xxmin,…}} 有限最小値 {∞,{xIndeterminate,…}} 実行不可能,つまり,制約条件集合が空 {-∞,{xxmin,…}} 非有界,つまり,f の値は任意に小さくできる - 最小値が制約条件で定義した領域のごくわずか外側でのみ,あるいは漸近的にのみ達せられた場合,Minimizeは下限と最も近くの指定可能な点を返す.
- たとえ複数の点で同じ最小値に達しても,そのうちの1つだけが返される.
- N[Minimize[…]]は,記号的には解けない最適化問題についてはNMinimizeを呼び出す.
- Minimize[f,x,WorkingPrecision->n]は n 桁精度で結果を計算する. »
例題
すべて開く すべて閉じる例 (5)
Minimize[2x ^ 2 - 3x + 5, x]Minimize[(x y - 3) ^ 2 + 1, {x, y}]Minimize[{x - 2y, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]Minimize[a x ^ 2 + b x + c, x]Minimize[x + y, {x, y}∈Disk[]]Show[ContourPlot[x + y, {x, y}∈Disk[]], Graphics[{Red, PointSize[Large], Point[{x, y} /. Last[%]]}]]スコープ (36)
基本的な用法 (7)
Minimize[Sin[x] + Cos[x], x]Minimize[{x + 2y, x ^ 2 + 2y ^ 2 ≤ 3 && x + y == 2 && x ≥ 1}, {x, y}]Minimize[{x y, x ^ 2 + y ^ 2 ≤ 1 || (x + 1) ^ 2 + (y - 1) ^ 2 ≤ 2}, {x, y}]Minimize[{x + y, x ≤ y ^ 2}, {x, y}]Minimize[{x + y, x ^ 2 + y ^ 2 < 0}, {x, y}]Minimize[Exp[x], x]Minimize[{{1, 1}.v, {{1, 2}, {1, 0}}.v{3, -1}}, v]一変数の問題 (7)
Minimize[x ^ 4 + 2x ^ 3 + 5x - 7, x]Minimize[{3x ^ 2 - x + 9, 2x ^ 3 + 5x - 7 ≥ 0}, x]Minimize[E ^ (2E ^ x) - Log[x ^ 2 + 1] - 20x, x]Minimize[{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[{x /. %[[2]], %[[1]]}]}]Minimize[{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[{x /. %[[2]], %[[1]]}]}]Minimize[{Sin[x], -1 / 2 ≤ Cos[x] ≤ 1 / 2}, x]Minimize[Sin[E ^ (x / 3) - 3 x] + 2 Cos[2 E ^ (x / 3) - 6 x + 1] ^ 2, x]Minimize[Sin[Sqrt[3] x] - Exp[Cos[3 x] + 2], x]Show[{Plot[Sin[Sqrt[3] x] - Exp[Cos[3 x] + 2], {x, -50, 50}], Graphics[{Red, Line[{{-50, %[[1]]}, {50, %[[1]]}}]}]}]Minimize[{x - Floor[x + UnitStep[x - 1]], Ceiling[Abs[x]] < 5}, x]Minimize[SinhIntegral[DawsonF[x]], x]Minimize[BesselJ[7 / 4, x ^ 2 + x + 1], x]多変数の問題 (9)
Minimize[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]Minimize[{(2x + y - z) / (5x - 7y + 3), 0 ≤ x + y + z ≤ 1 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]Minimize[(x ^ 2 - 2y) ^ 2 - x ^ 2 + 2y - 1, {x, y}]Minimize[{x y - 1, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]Minimize[{x ^ 2 + 1, x y ≥ 1}, {x, y}]Minimize[{x, x y ≤ 1}, {x, y}]Minimize[{x, x ^ 2 + y ^ 2 < 0}, {x, y}]Minimize[{(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}]Minimize[{Sqrt[x + y] + x , x Sqrt[y] ≥ 1}, {x, y}]Minimize[{E ^ x + Log[y], x Log[y] == 2 && -10 ≤ x ≤ 10 && 1 / 10 ≤ y ≤ 10}, {x, y}]Minimize[{Max[x - y, Abs[y]], Min[x - 2, x - y ^ 2] ≥ Abs[x y - 1]}, {x, y}]Minimize[v.{-1, 1}, {VectorGreaterEqual[{{{1, 0}, {0, 1}, {-1, -2}}.v, {0, 0, -2}}, "ExponentialCone"]}, v]res = Minimize[{-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[{x, y, -Log[x + y]} /. res[[2]]]}]]パラメトリック問題 (4)
Minimize[{-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}]min = %[[1]];Plot3D[min, {a, -3, 3}, {b, 0, 3}]Minimize[{(x - 1) ^ 2 + (2y - 1) ^ 2, x + 2y ≤ a + b && 2x - y ≤ a - b + 1 && x - 2y ≤ 2a - b + 1}, {x, y}]min = %[[1]];Plot3D[min, {a, -5, 5}, {b, -5, 5}]Minimize[x ^ 4 + a x ^ 2 + b, x]Minimize[{x ^ 2 + y ^ 2, x ^ 3 + y ^ 2 == a}, {x, y}]整数上の最適化 (3)
Minimize[{E ^ x - x ^ 3 Log[x], x > 0}, x, Integers]Minimize[Sin[2x] + Cos[3x], x, Integers]Show[{ListPlot[Table[Sin[2x] + Cos[3 x], {x, 0, 10000}]], Graphics[{Red, Line[{{0, %[[1]]}, {10000, %[[1]]}}]}]}]Minimize[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}, Integers]Minimize[{x ^ 2 + x y + 1, x y ≥ 1}, {x, y}, Integers]領域上の最適化 (6)
ℛ = Cylinder[{{1, 2, 3}, {3, 2, 1}}, 1];Minimize[z, {x, y, z}∈ℛ]Graphics3D[{{Opacity[0.5], Green, ℛ}, {Red, PointSize[Large], Point[{x, y, z} /. Last[%]]}}]Subscript[ℛ, 1] = Disk[];
Subscript[ℛ, 2] = InfiniteLine[{{-2, 0}, {0, 2}}];Minimize[(x - u)^2 + (y - v)^2, {{x, y}∈Subscript[ℛ, 1], {u, v}∈Subscript[ℛ, 2]}]//RootReduceGraphics[{{LightBlue, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}, {Red, Point[{{x, y}, {u, v}} /. Last[%]]}}]Subscript[ℛ, 1] = Triangle[{{0, 0}, {1, 0}, {0, 1}}];
Subscript[ℛ, 2] = Disk[{1, 1}, {2r, r}];Minimize[{r, {x, y}∈Subscript[ℛ, 1] && {x, y}∈Subscript[ℛ, 2]}, {r, x, y}]Graphics[{{LightBlue, Subscript[ℛ, 1], Subscript[ℛ, 2]}, {Red, Point[{x, y}]}} /. Last[%]]Subscript[ℛ, 3] = Disk[{a, b}, r];Minimize[{r, ({0, 0} | {1, 0} | {0, 1})∈Subscript[ℛ, 3]}, {a, b, r}]Graphics[{{LightBlue, Subscript[ℛ, 3]} /. %[[2]], {Red, Point[{{0, 0}, {1, 0}, {0, 1}}]}}]Circumsphereを使って同じ結果を直接得る:
Circumsphere[{{0, 0}, {1, 0}, {0, 1}}]ℛ = Sphere[];Minimize[x.{1, 2, 3}, x∈ℛ]Subscript[ℛ, 1] = Triangle[{{0, 0}, {1, 0}, {0, 1}}];
Subscript[ℛ, 2] = Disk[{2, 2}, 1];Minimize[EuclideanDistance[x, y], {x∈Subscript[ℛ, 1], y∈Subscript[ℛ, 2]}]//RootReduceGraphics[{{LightBlue, Subscript[ℛ, 1], Subscript[ℛ, 2]}, {Red, Point[{x, y}]}} /. %[[2]]]オプション (2)
Method (1)
Minimizeが円筒代数分解を使うように指定する:
mincad = Minimize[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}, Method -> "CAD"]minlm = Minimize[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}, Method -> "LagrangeMultipliers"]mindef = Minimize[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}]RootReduce[mincad] === RootReduce[minlm] === RootReduce[mindef]WorkingPrecision (1)
TimeConstrained[Minimize[{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->100とすると,厳密な最小値が得られるが,得られた解は正しくないかもしれない:
Minimize[{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 -> 100]//Timingアプリケーション (10)
基本的なアプリケーション (3)
Minimize[{2x + 2y, x y == 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);Minimize[{a + b + c, triangle && Sqrt[s(s - a)(s - b)(s - c)] ^ 2 == 1}, {a, b, c}]%//RootReduceMinimize[{Sqrt[x ^ 2 + (y - c) ^ 2], y == a x ^ 2}, {x, y}]Assuming[0 < 1 / (2c) < a, Refine@ Minimize[{Sqrt[x ^ 2 + (y - c) ^ 2], y == a x ^ 2}, {x, y}]]幾何学的距離 (6)
領域 ℛ 内の点から指定された点 p 真での最短距離と,最短距離を実現する点 q は,Minimize[EuclideanDistance[p,q],q∈ℛ]で与えられる.単位Disk[]内からの{1,1}までの最短距離と最近点を求める:
p = {1, 1};
q = {q1, q2};
ℛ = Disk[];{d, qrul} = Minimize[EuclideanDistance[p, q], q∈ℛ]//RootReduceGraphics[{{LightBlue, EdgeForm[Gray], ℛ}, {Green, Circle[p, d]}, {Red, Point[{p, q /. qrul}]}, {Dashed, Line[{p, q /. qrul}]}}]標準的な単位シンプレックスSimplex[2]内から点{1,3/4}までの最短距離と最近点を求める:
p = {1, 3 / 4};
q = {q1, q2};
ℛ = Simplex[{{0, 0}, {1, 0}, {0, 1}}];{d, qrul} = Minimize[EuclideanDistance[p, q], q∈ℛ]Graphics[{{LightBlue, EdgeForm[Gray], ℛ}, {Green, Circle[p, d]}, {Red, Point[{p, q /. qrul}]}, {Dashed, Line[{p, q /. qrul}]}}]標準的な単位球Sphere[]から{1,1,1}までの最短距離と最近点を求める:
p = {1, 1, 1};
q = {q1, q2, q3};
ℛ = Sphere[];{d, qrul} = Minimize[EuclideanDistance[p, q], q∈ℛ]//RootReduceGraphics3D[{{Opacity[0.5], ℛ}, {Opacity[0.3], Green, Sphere[p, d]}, {Red, Point[{p, q /. qrul}]}, {Dashed, Line[{p, q /. qrul}]}}]標準的な単位シンプレックスSimplex[3]内から点{-1/3,1/3,1/3}までの最短距離と最近点を求める:
p = {-1 / 3, 1 / 3, 1 / 3};
q = {q1, q2, q3};
ℛ = Simplex[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}];{d, qrul} = Minimize[EuclideanDistance[p, q], q∈ℛ]Graphics3D[{{Opacity[0.5], ℛ}, {Opacity[0.3], Green, Sphere[p, d]}, {Red, Point[{p, q /. qrul}]}, {Dashed, Line[{p, q /. qrul}]}}]最近点 p∈ および q∈ とその距離は,Minimize[EuclideanDistance[p,q],{p∈,q∈}]え求めることができる.Disk[{0,0}]とRectangle[{3,3}]の最近点および両者の距離を求める:
𝒫 = Disk[{0, 0}]; 𝒬 = Rectangle[{3, 3}];{d, pqrul} = Minimize[EuclideanDistance[p, q], {p∈𝒫, q∈𝒬}]//RootReduceGraphics[{{LightBlue, EdgeForm[Gray], 𝒫, 𝒬}, {Red, Point[{p, q} /. pqrul]}, {Dashed, Line[{p, q} /. pqrul]}}]Line[{{0,0,0},{1,1,1}}]内とBall[{5,5,0},1]内の最近点と両者の距離を求める:
𝒫 = Line[{{0, 0, 0}, {1, 1, 1}}]; 𝒬 = Ball[{5, 5, 0}, 1];{d, pqrul} = Minimize[EuclideanDistance[p, q], {p∈𝒫, q∈𝒬}]//RootReduceGraphics3D[{{𝒫, {Opacity[0.5], 𝒬}}, {Red, Point[{p, q} /. pqrul]}, {Dashed, Line[{p, q} /. pqrul]}}]幾何学的中心 (1)
ℛ⊆nが全次元の領域である場合,Chebyshev center は ℛ の最大内接球の中心である.ℛ の最大内接球の中心と半径はMinimize[SignedRegionDistance[ℛ,p], p∈ℛ]で求めることができる.Rectangle[]について,最大内接球のChebyshev Centerと半径を求める:
ℛ = Rectangle[];p = {p1, p2};{d, prul} = Minimize[SignedRegionDistance[ℛ, p], p∈ℛ]Graphics[{{LightBlue, EdgeForm[Gray], ℛ}, {Green, Circle[p /. prul, -d]}, {Red, Point[p /. prul]}}]Triangle[]について,最大内接球のChebyshev Centerと半径を求める:
ℛ = Triangle[];{d, prul} = Minimize[SignedRegionDistance[ℛ, p], p∈ℛ]Graphics[{{LightBlue, EdgeForm[Gray], ℛ}, {Green, Circle[p /. prul, -d]}, {Red, Point[p /. prul]}}]特性と関係 (6)
Minimizeは目的関数の厳密な大域的最小値を与える:
f = Expand[Product[(x - i)(x - 100 - i), {i, 5}]];Minimize[f, x]Plot[f, {x, 0, 100}, Epilog -> {PointSize[Medium], Green, Point[{x /. %[[2]], %[[1]]}]}]NMinimizeは大域的最小値を数値的に求めようとするが,極小値が求まることもある:
NMinimize[f, x]Plot[f, {x, 0.5, 5.5}, Epilog -> {PointSize[Medium], Red, Point[{x /. %[[2]], %[[1]]}]}]FindMinimumは初期値によって極小値を求める:
FindMinimum[f, {x, #}]& /@ {1, 50}Plot[f, {x, 0, 100}, Epilog -> {PointSize[Medium], {Red, Point[{x /. %[[1, 2]], %[[1, 1]]}]}, {Green, Point[{x /. %[[2, 2]], %[[2, 1]]}]}}]m = Minimize[{(x - 2) ^ 2 + (y - 3 / 2) ^ 2, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]x ^ 2 + y ^ 2 ≤ 1 /. m[[2]]RegionPlot[x ^ 2 + y ^ 2 ≤ 1, {x, -1.2, 2.2}, {y, -1.2, 2.2}, Epilog -> {PointSize[Medium], {Red, Point[{x, y} /. m[[2]]]}, {Green, Point[{2, 3 / 2}]}}]最小値に達しなかった場合,Minimizeは境界上の点を返すことがある:
Minimize[{(x - 2) ^ 2 + (y - 3 / 2) ^ 2, x ^ 2 + y ^ 2 < 1}, {x, y}]ここでは,y が無限大に向かうと目的関数は最小値に向かう傾向にある:
Minimize[{x, x y == 1 && x > 0}, {x, y}]Minimizeは線形計画法問題を解くことができる:
Minimize[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]LinearProgrammingを使って,行列表記で与えられた同じ問題を解くことができる:
c = {2, 3, -1};
m = {{1, 1, 1}, {1, 1, 1}, {1, -1, 1}, {1, -1, 1}, {1, -1, -1}};
b = {{1, 1}, {2, -1}, {1, 1}, {2, -1}, {3, 0}};LinearProgramming[c, m, b, -Infinity]c.%RegionDistanceおよびRegionNearestを使って距離と最近点を計算する:
ℛ = Cone[{{1, 2, 3}, {4, 5, 6}}, 3];
p = {5, 4, 3};RegionDistance[ℛ, p]//RootReduceRegionNearest[ℛ, p]//RootReduceどちらもMinimizeを使って計算することができる:
Minimize[Norm[{x, y, z} - p], {x, y, z}∈ℛ]//RootReduceGraphics3D[{ℛ, {PointSize[Large], {Green, Point[p]}, {Red, Point[{x, y, z} /. %[[2]]]}}}]RegionBoundsを使って境界ボックスを計算する:
f = x^4 + 3 x^2 y + 2 x^2 y^2 - y^3 + y^4 ≤ 0;
ℛ = ImplicitRegion@@{f, {x, y}}RegionBounds[ℛ]MaximizeおよびMinimizeを使って同じ境界を計算する:
{{x1, x2}, {y1, y2}} = {Minimize[#, {x, y}∈ℛ][[1]], Maximize[#, {x, y}∈ℛ][[1]]}& /@ {x, y}Show[{Graphics[{LightBlue, Rectangle[{x1, y1}, {x2, y2}]}], RegionPlot[f, {x, x1 - 1, x2 + 1}, {y, y1 - 1, y2 + 1}]}]考えられる問題 (1)
Minimizeの入力に使われる関数はすべて実数値を持たなければならない:
Minimize[{x + y, Sqrt[x] - Sqrt[y] == 0}, {x, y}]{Sqrt[x] - Sqrt[y] == 0, Sqrt[x], Sqrt[y]} /. {x -> -1, y -> -1}テクニカルノート
-
▪
- 記号数学:基本操作 ▪
- 不等式 ▪
- 最小化と最大化 ▪
- 制約条件付き最適化 ▪
- 制約条件のない最適化 ▪
- 実装に関するノート: 代数と解析
履歴
2003 で導入 (5.0) | 2014 で更新 (10.0) ▪ 2021 (12.3)
テキスト
Wolfram Research (2003), Minimize, Wolfram言語関数, https://reference.wolfram.com/language/ref/Minimize.html (2021年に更新).
CMS
Wolfram Language. 2003. "Minimize." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/Minimize.html.
APA
Wolfram Language. (2003). Minimize. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Minimize.html
BibTeX
@misc{reference.wolfram_2026_minimize, author="Wolfram Research", title="{Minimize}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/Minimize.html}", note=[Accessed: 08-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_minimize, organization={Wolfram Research}, title={Minimize}, year={2021}, url={https://reference.wolfram.com/language/ref/Minimize.html}, note=[Accessed: 08-August-2026]}