# How to compute numerical gradient of an unknown function in matlab Simulink?

조회 수: 26(최근 30일)
Amardeep Mishra 19 Jul 2019
편집: Torsten 22 Jul 2019
Hi! I have a function that is unknown and that is being generated at every time instant t in my simulink model (Imagine it like a black box, wherein, I have data for at every time instant but not the mapping itself, the data looks something like this: ). In order to implement my algorithm, I need to find the direction that corresponds to greatest decrease (or increase) of this scalar mapping at every time instant. So, how can I find the numerical gradient descent of this unknown function at every time step, i.e at any ? The only thing known is that is lipshitz continuous. Kindly suggest me ways in which it can be implemented in simulink. Thanks for your time and consideration.

로그인 to comment.

### 답변(1개)

Torsten 19 Jul 2019
The i'th component gi of the gradient vector g is approximately given by
gi = (f(x1,...,xi+h,...,x10)-f(x1,...,xi,...,x10))/h
Thus for each time t, given (x1,...,x10), you will have to evaluate f at (x1+h,x2,...,x10),(x1,x2+h,x3,...,x10),...,(x1,x2,...,x10+h) and calculate the gi.

#### 댓글 수: 10

표시 이전 댓글 수: 7
Torsten 19 Jul 2019
Then, since
f(w1,w2,...,w10) = x'*(p(x)+q(x)*u(x,w1,w2,...,w10)
I don't understand why you write that
fh1 = f(w1+h,w2,...,w10),
fh2 = f(w1,w2+h,...,w10),
...
fh10 = f(w1,w2,...,w10+h)
cannot be evaluated to compute the gradient of f with respect to w.
Amardeep Mishra 19 Jul 2019
Because that would mean that, we'd have to perturb the parameters, and then perturb u and then integrate xdot to find the next state. Now at any given instant of time you can either give u(w). How can you give both u(w) and u(w+h) to the system?
Torsten 22 Jul 2019
How can you give both u(w) and u(w+h) to the system?
If this is a technical problem that concerns SIMULINK, I can't answer it.
As you wrote, u is the control input specified by you. So in general, it should be possible to evaluate it at (x(t),w(t)) and (x(t),perturbed w(t)).

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.

R2018a

Translated by