2nd order gradient

Assuming I have a function where is a vector. Is there a method that I can use system equation to obtain

回答(1 个)

KSSV
KSSV 2021-5-18
Let b be your N*1 vector and f be your function values evealuated and of size N*1.
df = gradient(f,b) ; % first derivative
d2f = gradient(df,b) ; % second order gradient
The above is one method. Also you can evaluate the second derivative of f w.r.t. b and then you can substitute the values of b at the end.
Example:
syms b
f = 3*b^2+2*b+5 ;
d2f = diff(f,b,2)

7 个评论

However, df here is a vector due to b is a vector, gradient(df,b) is not applicable I think.
It is very much applicable.
Show us the whole code...
clear all
close all
clc
rng(10,'twister')
N = 4;
S = 2;
F = dftmtx(N)./sqrt(N);
D = 3;
F_SUB = F(:,1:S);
syms b [N 1];
A_var = diag(b)*F_SUB;
W_var = ((A_var'*A_var) + (A_var'*A_var)')./2;
fobj = trace(inv(W_var));
g = gradient(fobj, b);
gg = gradient(g, b);
The variable g is 4*1. Run gradient i.e. gg for each element.
gg = gradient(g(1), b);
Actually I'm wondering if there is way to directly get the second order gradient of it. If that cannot be done, then it would be fine.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

提问:

2021-5-18

评论:

2021-5-18

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by