I ask the advice of specialists on control systems. We have the following system. Where $$u(t)$$ and $$y(t)$$ time-varying input and output. The characteristic $$y(t)=f(u(t))$$ is assumed to be non-inertial.

Only input and output are available for measurement.

Let me make a reservation that the variant of estimating this derivative by the Euler method, i.e.

$$g(t)=\frac{y_{n}(t)-y_{n-1}(t)}{u_{n}(t)-u_{n-1}(t)}$$

is not suitable, since the system does not allow elements of delays (delay by 1 time step).

Is it possible to construct an observer estimating the gradient $$g(t)=\frac{dy}{du}$$?

• What are you working with that doesn't allow discrete elements to be stored? That's more of a surprise to me than anything with your question.
– Chuck
Sep 23, 2020 at 12:33
• The fact is that in some cases I get a division not zero (according to Euler's model), and my model stops working. I want to apply an observer free of these problems. Let it be a new dynamic element, at the same time I will deal with the principle of its operation.Can such an observer be synthesized?
– dtn
Sep 23, 2020 at 12:53
• An observer requires some kind of a model - do you have a model for your $f(u)$?
– Chuck
Sep 23, 2020 at 13:21
• Yes there is. This is any function of these: $-u(t)^2$, $exp(-u(t)^2)$ and $\frac{1}{u(t)^2+1}$ As we can see, this is a static characteristic. If inertia is needed, then at the input we can put any inertial link of the form $W(s)=\frac{1}{T \cdot s + 1}$ My questions can be quite amateurish. Please be understanding, I just started to study the theory of observers. p.s.I want to learn how to continuously evaluate a gradient using observers.
– dtn
Sep 23, 2020 at 13:26

As you pointed out, $$y=f\left(u\right)$$ is a static map, hence it does not represent in any way the temporal evolution of a dynamical system.

With this in mind, resorting to an observer is fundamentally a wrong approach. An observer, in fact, provides you with an estimate of the temporal evolution of the dynamical system under subject; however, here $$f\left(\cdot\right)$$ has nothing to do with the time.

Thereby, you ought to fit a static map. There exist a plethora of methods to achieve this goal but you have to switch from designing an observer to a context where you deal with fitting.

You're already equipped with good knowledge to start: you essentially know the bases $$b_1 = -v$$, $$b_2 = \exp(-v)$$, and $$b_3 = 1 / \left(v+1\right)$$, where $$v = u^2$$.

You could then try to explore whether a linear combination of $$b_i$$ fits well $$f$$, or if you need to resort to polynomial fitting or even nonlinear fitting (e.g. by means of multilayer neural networks).

Once done, you can extract the gradient out of the fitted model.

If you want to fit directly the gradient $$g = df/dx$$, to avoid problems related to divisions by zero, you could:

1. feed in $$x_i = at_i+b$$, with $$a>0$$ and $$b<0$$ (to explore the whole range);
2. read back $$y_i = f\left(x_i\right)$$;
3. compute $$\dot{\tilde{y}}_i = \left(y_i-y_{i-1}\right)/\Delta t$$;
4. compute $$g_i = \dot{\tilde{y}}_i / a$$;
5. fit $$g$$ based upon the sampled points $$g_i$$ exploiting the same techniques discussed above.