如何使用计算二阶导数dlgradient吗?

15的观点(30天)
下面的代码给了我一个错误。
x0 = dlarray ([1, 2]);
[fval, gradval] = dlfeval (x0 @rosenbrock)
函数[y, dy2dx] =。(x)
y = 100 * (x (2) - (1) ^ 2)。^ 2 + (1 - x (1)) ^ 2;
就要= dlgradient (y、x);
dy2dx = dlgradient(它们,x);
结束
我用dlgradient计算二阶导数但得到以下错误:
“错误使用dlfeval(43行)
必须追踪dlarray标量值来区分。”
任何帮助我做错了什么?谢谢。

接受的答案

阿布的杰曼Motlagh
阿布的杰曼Motlagh 2021年9月10日
你好,你使用dlgradient错了,第一agument dlgradient应该 标量。 从x y对梯度1梯度后返回1 by2向量。他们是 。所以你不能在dlgradient再次使用它们。也为二阶导数你有4个要素: , , ,
还应该指定选项 EnableHigherDerivatives 在dlgradient。
所以substiture函数:
函数[y, dy2dx] =。(x)
y = 100 * (x (2) - (1) ^ 2)。^ 2 + (1 - x (1)) ^ 2;
就要= dlgradient (y, x,“EnableHigherDerivatives”,真正的);
dy2dx (1:2) = dlgradient(它们(1),x);
dy2dx (1:2) = dlgradient(就要写成(2),x);
结束
5个评论
Sanaz Zanjani Foumani
Sanaz Zanjani Foumani 2021年12月29日
你知道我可以使用dlgradiet fmincon吗?我的意思是我想用自动derevative fmincon分析derevative本月。

登录置评。

更多的答案(0)

类别

找到更多的在万有引力、宇宙学和天体物理学帮助中心文件交换

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!