数值最优化
| FindMinimum[f,{x,x0}] | 以 为初始点,搜索函数 f 的局部极小值 |
| FindMinimum[f,x] | 搜索函数 f 的局部极小值 |
| FindMinimum[f,{{x,x0},{y,y0},...}] |
| 搜索多变量函数的局部极小值 |
| FindMinimum[{f,cons},{{x,x0},{y,y0},...}] |
| 以 , , ... 为初始点,搜索在约束条件 cons 下的局部极小值 |
| FindMinimum[{f,cons},{x,y,...}] | 在约束条件 cons 下搜索局部极小值 |
| FindMaximum[f,x], etc. | 搜索局部极大值 |
搜索局部极小值和极大值.
| Out[1]= |  |
| Out[2]= |  |
与 FindRoot 一样,FindMinimum 和 FindMaximum 从一个点开始,循序渐近地寻找极小值或极大值. 但是由于它们一旦找到一个极值,就会返回结果,它们可能只给出函数的局部极小值或极大值,而不是全局的极小值或极大值.
| Out[3]= |  |
以

为初始点时,在右边获得局部极小值.
| Out[4]= |  |
以下情况给出左边的局部极小值,在本利中它也是全局极小值.
| Out[5]= |  |
| Out[6]= |  |
| Out[7]= |  |
求全局极小值和极大值.
| Out[8]= |  |
NMinimize 和 NMaximize 是 Minimize 和 Maximize 的数值模拟. 但是与 Minimize 和 Maximize 不同,它们经常不能保证可以找到绝对的全局极小值和极大值. 然而,当函数 f 很平滑,并且具有有限数目的局部极小值和极大值的时候,它们通常表现良好.
| NMinimize[{f,cons},{x,y,...}] | 尝试在约束条件 cons 下求 f 的全局极小值 |
| NMaximize[{f,cons},{x,y,...}] | 尝试在约束条件 cons 下求 f 的全局极大值 |
在约束条件下,求全局极小值和极大值.
| Out[9]= |  |
这里求在单位圆内

的极小值.
| Out[10]= |  |
| Out[11]= |  |
| Out[12]= |  |
| Out[13]= |  |
如果目标函数 f 和约束条件 cons 对于所有变量都是线性的,那么极小化和极大化就对应于一个线性规划问题. 有时候,用矩阵和向量的形式代替明确的方程组来描述这些问题更为方便.
线性规划的矩阵形式.
| Out[14]= |  |
| Out[15]= |  |
可以把列表
写成一个数字对
的序列来指明等式和不等式混合约束条件. 如果
为
,那么第
个约束条件为
. 如果
为
, 那么约束条件为
,如果
为
,那么约束条件为
.
这里使得第一个不等式用

.
| Out[16]= |  |
在 LinearProgramming[c, m, b, l] 中,可以把
写成形如
的数字对列表,分别表示
的上界和下界.
在实现大型线性规划问题时,把矩阵
作为 SparseArray 对象给出常常是方便的.