johnny1688
2019-10-14 19:22
浏览 1.2k

matlab 最速下降法求Rosenbrock函数最小值点中求梯度问题

https://blog.csdn.net/sinat_34474705/article/details/70306327

我在看篇文章中作者的程序时,发现这段下面这段代码中需要自己手动输入梯度,我试着用matlab自带的求梯度函数改了一下,总数出现错误信息:输出项过多。想请教一下不可以让程序自己求梯度吗?

目标函数:Rosenbrock函数(Rosenbrock.m)
function [f,g] = Rosenbrock(x)
f = 100*(x(2)-x(1)^2)^2 +(1-x(1))^2;
g1 = 2*x(1) - 400*x(1)*(- x(1)^2 + x(2)) - 2;
g2 = - 200*x(1)^2 + 200*x(2);
g = [g1,g2]';

这是我改写的:
function [f,g] = Rosenbrock(x)
f = 100*(x(2)-x(1)^2)^2 +(1-x(1))^2;
[g1,g2]=gradient(f)
g = [g1,g2]';

错误信息:
错误使用 gradient (line 49)
输出参数太多。

出错 Rosenbrock (line 3)
[g1,g2]=gradient(f)

出错 main_steepDescent (line 16)
[~,gk] = Rosenbrock(x0); % 求初始梯度

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

相关推荐 更多相似问题