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.

请先登录,再进行评论。

类别

提问:

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