Matlab等效于Excel Solver的以下input设置

对于Excel求解器input,我已经设置

设置对象单元:$ A $ 1(即可以是18)

致:Min

通过更改variables$ B $ 1

使非约束variables非负数被检查:

求解方法:非线性

我在这里不是math专家,但我正在试图确定我应该使用哪一个无约束最小化函数? 它看起来像fminunc的问题是:

  1. 我只是在objfun中使用Matlab min函数
    (如http://www.mathworks.com/help/optim/ug/fminunc-unconstrained-minimization.html所述 )
  2. fminunc(@objfun,x0) 

如果xo等于$ B $ 1,就像在上面的Excel求解器中一样?

我会假设没有任何额外的select,以获得所需的结果。 至less我没有看到控制负面产出的任何select。

这听起来正确吗? 谢谢

关于非负输出,这是一个约束,因此你不应该使用无约束求解器(即fminunc ),而是可以处理约束(即使用fmincon ):

你的约束是一个下界,所以你使用这种forms的fmincon

 x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 

你对lb参数的下限感兴趣,所以你可以这样称呼fmincon

 x = fmincon(fun, x0, [], [], [], [], 0, Inf) 

在Excel中调用求解器之前, x0应等于单元格$B$1的值。

对于目标函数,您不要 在Matlab中使用min函数fmincon将固有地尝试并最小化您的目标函数,这与在Excel求解器中勾选最小值框相同。 你的目标函数是单元$A$1中的函数,但是作为x一个函数而不是$B$1

所以,让我们说在单元格$A$1你试图最小化函数=$B$1^2 + 10 ,然后在Matlab中,你需要像这样定义你的函数(使用匿名函数是最简单的,你可以使用函数.m文件相反,如果function更复杂):

 fun = @(x)(x.^2 + 10)