Maximize
更多信息和选项
- Maximize 亦称为上确界、符号优化和全局优化 (GO).
- Maximize 求在给定约束条件限制下 f 的全局最大值.
- Maximize 通常用于求给定约束条件下可能的最大值. 在不同的领域,这可能被称为最佳策略、最佳方案、最佳配置等.
- Maximize 返回形为 {fmax,{x->xmax,y->ymax,…}} 的列表.
- 如果 f 和 cons 是线性的或是多项式,Maximize 总是求全局最大值.
- 约束条件 cons 可以是以下表达式的任意逻辑组合:
-
lhs==rhs 等式 lhs>rhs, lhs≥rhs, lhs<rhs, lhs≤rhs 不等式 (LessEqual、…) lhsrhs, lhsrhs, lhsrhs, lhsrhs 向量不等式 (VectorLessEqual、…) Exists[…], ForAll[…] 量化的条件 {x,y,…}∈rdom 区域或域的指定 - Maximize[{f,cons},x∈rdom] 实际上等价于 Maximize[{f,cons∧x∈rdom},x].
- 对于 x∈rdom,可用 Indexed[x,i] 来指代不同的坐标.
- 可能的域 rdom 包括:
-
Reals 实标量变量 Integers 整数标量变量 Vectors[n,dom]
中的向量变量Matrices[{m,n},dom]
中的矩阵变量ℛ 限制在几何区域
中的向量变量 - 默认情况下,假定所有变量都是实数.
- 如果给定精确的输入,Maximize 将返回精确的结果. 如果给定近似的输入,它会自动调用 NMaximize.
- Maximize 将返回以下形式的结果:
-
{fmax,{xxmax,…}} 有限的最大值 {-∞,{xIndeterminate,…}} 不可行,即约束集为空 {∞,{xxmax,…}} 无界,即 f 的值可以是任意大的值 - 如果最大值只能在极限的位置取得(极限位置超出约束条件所定义的域),Maximize 的返回值为上确界或是最接近极限值的可列举点.
- 即使在多个点达到相同的最大值,也只返回一个.
- N[Maximize[…]] 调用 NMaximize 来解决不能以符号形式求解的优化问题.
- 当计算结果时,Maximize[f,x,WorkingPrecision->n] 使用 n 位精度. »
范例
打开所有单元 关闭所有单元基本范例 (5)
Maximize[-2x ^ 2 - 3x + 5, x]Maximize[1 - (x y - 3) ^ 2, {x, y}]Maximize[{x - 2y, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]Maximize[a x ^ 2 + b x + c, x]Maximize[x + y, {x, y}∈Disk[]]Show[ContourPlot[x + y, {x, y}∈Disk[]], Graphics[{Red, PointSize[Large], Point[{x, y} /. Last[%]]}]]范围 (36)
基本用法 (7)
Maximize[Sin[x] + Cos[x], x]Maximize[{x + 2y, x ^ 2 + 2y ^ 2 ≤ 3 && x + y == 2 && x ≥ 1}, {x, y}]Maximize[{x y, x ^ 2 + y ^ 2 ≤ 1 || (x + 1) ^ 2 + (y - 1) ^ 2 ≤ 2}, {x, y}]Maximize[{x + y, x ≤ y ^ 2}, {x, y}]Maximize[{x + y, x ^ 2 + y ^ 2 < 0}, {x, y}]Maximize[-Exp[x], x]Maximize[{{-1, -1}.v, {{1, 2}, {1, 0}}.v{3, -1}}, v]单变量问题 (7)
Maximize[-x ^ 4 + 2x ^ 3 + 5x - 7, x]Maximize[{-3x ^ 2 - x + 9, 2x ^ 3 + 5x - 7 ≥ 0}, x]Maximize[-E ^ (2E ^ x) + Log[x ^ 2 + 1] + 20x, x]Maximize[{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]]}]}]Maximize[{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]]}]}]Maximize[{Sin[x], -1 / 2 ≤ Cos[x] ≤ 1 / 2}, x]Maximize[Sin[E ^ (x / 3) - 3 x] + 2 Cos[2 E ^ (x / 3) - 6 x + 1] ^ 2, x]Maximize[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]]}}]}]}]Maximize[{Floor[x + UnitStep[x - 1]] - x, Ceiling[Abs[x]] < 5}, x]Maximize[SinhIntegral[DawsonF[x]], x]Maximize[BesselJ[7 / 4, x ^ 2 + x + 1], x]多变量问题 (9)
Maximize[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]Maximize[{(2x + y - z) / (5x - 7y + 3), 0 ≤ x + y + z ≤ 1 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}]Maximize[x ^ 2 - 2y - 1 - (x ^ 2 - 2y) ^ 2, {x, y}]Maximize[{x y - 1, x ^ 2 + y ^ 2 ≤ 1}, {x, y}]Maximize[{1 - x ^ 2, x y ≥ 1}, {x, y}]Maximize[{x, x y ≤ 1}, {x, y}]Maximize[{x, x ^ 2 + y ^ 2 < 0}, {x, y}]Maximize[{-(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}]Maximize[{-x - Sqrt[x + y] , x Sqrt[y] ≥ 1}, {x, y}]Maximize[{E ^ x + Log[y], x Log[y] == 2 && -10 ≤ x ≤ 10 && 1 / 10 ≤ y ≤ 10}, {x, y}]Maximize[{-Max[x - y, Abs[y]], Min[x - 2, x - y ^ 2] ≥ Abs[x y - 1]}, {x, y}]Maximize[v.{1, -1}, {VectorGreaterEqual[{{{1, 0}, {0, 1}, {-1, -2}}.v, {0, 0, -2}}, "ExponentialCone"]}, v]res = Maximize[{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)
Maximize[{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}]max = %[[1]];Plot3D[max, {a, -3, 3}, {b, 0, 3}]Maximize[{-(x - 1) ^ 2 - (2y - 1) ^ 2, x + 2y ≤ a + b && 2x - y ≤ a - b + 1 && x - 2y ≤ 2a - b + 1}, {x, y}]max = %[[1]];Plot3D[max, {a, -5, 5}, {b, -5, 5}]Maximize[-x ^ 4 + a x ^ 2 + b, x]Maximize[{-x ^ 2 - y ^ 2, x ^ 3 + y ^ 2 == a}, {x, y}]在整数上进行优化 (3)
Maximize[{x ^ 3 Log[x] - E ^ x, x > 0}, x, Integers]Maximize[Sin[2x] + Cos[3x], x, Integers]Show[{ListPlot[Table[Sin[2x] + Cos[3 x], {x, 0, 10000}]], Graphics[{Red, Line[{{0, %[[1]]}, {10000, %[[1]]}}]}]}]Maximize[{2x + 3y - z, 1 ≤ x + y + z ≤ 2 && 1 ≤ x - y + z ≤ 2 && x - y - z == 3}, {x, y, z}, Integers]Maximize[{-x ^ 2 - x y + 1, x y ≥ 1}, {x, y}, Integers]在区域上优化 (6)
ℛ = Cylinder[{{1, 2, 3}, {3, 2, 1}}, 1];Maximize[z, {x, y, z}∈ℛ]Graphics3D[{{Opacity[0.5], Green, ℛ}, {Red, PointSize[Large], Point[{x, y, z} /. Last[%]]}}]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)}}];Maximize[(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] = Circle[{(1/3), (1/3)}, {2 r, r}];Maximize[{r, {x, y}∈Subscript[ℛ, 1] && {x, y}∈Subscript[ℛ, 2]}, {r, x, y}]Graphics[{{LightBlue, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}, {Red, Point[{x, y}]}} /. Last[%]]Subscript[ℛ, 3] = Disk[{a, b}, {r, 2 - r}];Maximize[{r, ({0, 0} | {1, 0} | {0, 1})∈Subscript[ℛ, 3]}, {a, b, r}]Graphics[{{LightBlue, Subscript[ℛ, 3]} /. Last[%], {Red, Point[{{0, 0}, {1, 0}, {0, 1}}]}}]ℛ = Sphere[];Maximize[x.{1, 2, 3}, x∈ℛ]Subscript[ℛ, 1] = Triangle[{{0, 0}, {1, 0}, {0, 1}}];
Subscript[ℛ, 2] = Disk[{2, 2}, 1];Maximize[EuclideanDistance[x, y], {x∈Subscript[ℛ, 1], y∈Subscript[ℛ, 2]}]//RootReduceGraphics[{{LightBlue, Subscript[ℛ, 1], Subscript[ℛ, 2]}, {Red, Point[{x, y}]}} /. Last[%]]选项 (2)
Method (1)
指定 Maximize 应使用柱形代数分解:
maxcad = Maximize[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}, Method -> "CAD"]maxlm = Maximize[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}, Method -> "LagrangeMultipliers"]maxdef = Maximize[{x ^ 2 - y ^ 3 + 2x y, x ^ 2 + y ^ 2 == 1}, {x, y}]RootReduce[maxcad] === RootReduce[maxlm] === RootReduce[maxdef]WorkingPrecision (1)
TimeConstrained[Maximize[{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,可以得出精确的最大值,但是结果可能是错误的:
Maximize[{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应用 (13)
基本应用 (3)
Maximize[{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);Maximize[{Sqrt[s(s - a)(s - b)(s - c)], triangle && a + b + c == 1}, {a, b, c}]Maximize[ {v Sin[α] t - 5 t ^ 2, t ≥ 0 && 0 < Sin[α] ≤ 1 && v > 0}, t]Refine[%, 0 < Sin[α] ≤ 1 && v > 0]Maximize[{v Cos[α] t, v Sin[α] t - 5 t ^ 2 == 0 && t ≥ 0 && v > 0 && 0 ≤ Sin[α] ≤ 1 && 0 ≤ Cos[α] ≤ 1 && Sin[α] ^ 2 + Cos[α] ^ 2 == 1}, {Sin[α], Cos[α], t}]Refine[%, v > 0]几何距离 (9)
通过 Maximize[EuclideanDistance[p,q],q∈ℛ],可以求出区域 ℛ 中的点到某个给定点 p 的最大距离, 以及实现该最大距离的点 q. 求单位 Disk[] 中距 {1,1} 最远的点和最大的距离:
p = {1, 1};
q = {q1, q2};
ℛ = Disk[];{d, qrul} = Maximize[EuclideanDistance[p, q], q∈ℛ]//RootReduceGraphics[{{StandardBlue, 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} = Maximize[EuclideanDistance[p, q], q∈ℛ]Graphics[{{StandardBlue, 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} = Maximize[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} = Maximize[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}]}}]区域 ℛ 的直径是 ℛ 中两点间的最大距离. 可以用 Maximize[EuclideanDistance[p,q],{p∈ℛ,q∈ℛ}] 来计算直径和找出 ℛ 中距离最远的两个点. 求 Circle[] 的直径和距离最远的两个点:
ℛ = Circle[];{d, pqrul} = Maximize[EuclideanDistance[p, q], {p∈ℛ, q∈ℛ}]Graphics[{{ℛ}, {Red, Point[{p, q} /. pqrul]}, {Dashed, Line[{p, q} /. pqrul]}}]求标准单位单纯形 Simplex[2] 的直径和距离最远的两个点:
ℛ = Simplex[{{0, 0}, {1, 0}, {0, 1}}];{d, pqrul} = Maximize[EuclideanDistance[p, q], {p∈ℛ, q∈ℛ}]Graphics[{{LightBlue, EdgeForm[Gray], ℛ}, {Red, Point[{p, q} /. pqrul]}, {Dashed, Line[{p, q} /. pqrul]}}]求标准单位立方体 Cuboid[] 的直径和距离最远的两个点:
ℛ = Cuboid[];{d, pqrul} = Maximize[EuclideanDistance[p, q], {p∈ℛ, q∈ℛ}]Graphics3D[{{Opacity[0.5], ℛ}, {Red, Point[{p, q} /. pqrul]}, {Dashed, Line[{p, q} /. pqrul]}}]可以用 Maximize[EuclideanDistance[p,q],{p∈,q∈}] 来找出距离最远的两个点 p∈ 和 q∈ 以及它们之间的距离. 找出 Disk[{0,0}] 和 Rectangle[{3,3}] 中距离最远的两个点以及它们之间的距离:
𝒫 = Disk[{0, 0}]; 𝒬 = Rectangle[{3, 3}];{d, pqrul} = Maximize[EuclideanDistance[p, q], {p∈𝒫, q∈𝒬}]//RootReduceGraphics[{{StandardBlue, 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} = Maximize[EuclideanDistance[p, q], {p∈𝒫, q∈𝒬}]//RootReduceGraphics3D[{{𝒫, {Opacity[0.5], 𝒬}}, {Red, Point[{p, q} /. pqrul]}, {Dashed, Line[{p, q} /. pqrul]}}]几何中心 (1)
如果 ℛ⊆n 是一个全维区域,则切比雪夫中心是 ℛ 的最大内接球的中心. 可以用Maximize[-SignedRegionDistance[ℛ,p], p∈ℛ] 来计算 ℛ 的最大内接球的中心和半径. 求 Rectangle[] 的最大内接球的切比雪夫中心和半径:
ℛ = Rectangle[];p = {p1, p2};{d, prul} = Maximize[-SignedRegionDistance[ℛ, p], p∈ℛ]Graphics[{{LightBlue, EdgeForm[Gray], ℛ}, {Green, Circle[p /. prul, d]}, {Red, Point[p /. prul]}}]求 Triangle[] 的最大内接球的切比雪夫中心和半径:
ℛ = Triangle[];{d, prul} = Maximize[-SignedRegionDistance[ℛ, p], p∈ℛ]Graphics[{{LightBlue, EdgeForm[Gray], ℛ}, {Green, Circle[p /. prul, d]}, {Red, Point[p /. prul]}}]属性和关系 (4)
Maximize 得出目标函数精确的总体最大值:
f = Expand[-Product[(x - i)(x - 100 - i), {i, 5}]];Maximize[f, x]Plot[f, {x, 0, 100}, Epilog -> {PointSize[Medium], Green, Point[{x /. %[[2]], %[[1]]}]}]NMaximize 试图得出一个总体最大值,但也可能得出的是极大值:
NMaximize[f, x]Plot[f, {x, 0.5, 5.5}, Epilog -> {PointSize[Medium], Red, Point[{x /. %[[2]], %[[1]]}]}]设定一个起始点,FindMaximum 得出起始点后的第一个极大值:
FindMaximum[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 = Maximize[{(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}]}}]如果取不到最大值,Maximize 可能会给出一个边界上的点:
Maximize[{(x - 2) ^ 2 + (y - 3 / 2) ^ 2, x ^ 2 + y ^ 2 < 1}, {x, y}]Maximize[{1 - x, x y == 1 && x > 0}, {x, y}]Maximize 可以解决线性规划问题:
Maximize[{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.%用 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)
Maximize 要求所有输入的函数为实值函数:
Maximize[{-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),Maximize,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Maximize.html (更新于 2021 年).
CMS
Wolfram 语言. 2003. "Maximize." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/Maximize.html.
APA
Wolfram 语言. (2003). Maximize. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Maximize.html 年
BibTeX
@misc{reference.wolfram_2026_maximize, author="Wolfram Research", title="{Maximize}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/Maximize.html}", note=[Accessed: 31-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_maximize, organization={Wolfram Research}, title={Maximize}, year={2021}, url={https://reference.wolfram.com/language/ref/Maximize.html}, note=[Accessed: 31-October-2026]}