从Matlab到Python的优化器

2024-09-29 23:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把下面的问题从Matlab翻译成Python(Matlab代码):

  function [f,g] = rosenbrockwithgrad(x)
    f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;

    if nargout > 1 % gradient required
      g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));
      200*(x(2)-x(1)^2)];
   end

然后打电话给乐观者:

^{pr2}$

Python:

  def rosenbrockwithgrad(x, nargout = 1):
    f = 100*(x[1] - x[0]**2)**2 + (1-x([0]))**2;

    if nargout > 1: #gradient
     g = ([-400*(x[1]-x[0]**2)*x[0]-2*(1-x[0]), 200*(x[1]-x[0])**2]);
   return f,g

然后打电话给乐观者:

   scipy.optimise.fmin_cg(...no idea...)

是否有必要拆分函数,或者是否有类似于Matlab的方法?在


Tags: 代码returnifdefrequiredfunctionscipyend

热门问题