johnny1688 2019-10-14 19:22
浏览 1644

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); % 求初始梯度

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求学软件的前人们指明方向🥺
    • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
    • ¥15 MCNP里如何定义多个源?
    • ¥20 双层网络上信息-疾病传播
    • ¥50 paddlepaddle pinn
    • ¥20 idea运行测试代码报错问题
    • ¥15 网络监控:网络故障告警通知
    • ¥15 django项目运行报编码错误
    • ¥15 STM32驱动继电器
    • ¥15 Windows server update services