As a toy problem, I was looking at a classical second order system of the following form:

\begin{align} \ddot{x}(t) + c \dot{x}(t) + k x(t) = 0 \end{align}

Instead of the basic system above, I want to replace $x(t)$ with a Low-Pass filtered version of $x(t)$. This can change the equation to the following form:

\begin{align} \ddot{x}(t) + c \dot{x}(t) + \frac{k}{\tau} \int_{0}^{t} \exp\left(\frac{-(t-\hat{t})}{\tau}\right)x(\hat{t}) d\hat{t} = 0 \end{align}

Given this form, how might I be able to find numerical stability analytically? In the original system, I could break it into a system of two first order ODEs and analyze the eigenvalues of the matrix relating independent variables to their derivatives. In this latter case, I don't see a strategy like that working.

This problem is motivated by an empirical observation myself and a colleague noted when we were simulating our missile system and found it would develop large errors for Explicit Euler, no matter the step size, but would work fine for 4th Order Runge Kutta. We reproduced it on two separate simulation codebases of our weapon, so it seems to be more than potentially bugs in the code.

Since our system can be approximately viewed as a second order system with a Low-Pass Filter (due to filtering sensors for state estimations), I am interested in trying to understand the second equation from an accuracy and stability perspective. Any hints or insights about how to analyze this scenario would be appreciated.


You can introduce an auxiliary variable $$ y(t) = \int_0^t \exp\left(\frac{-(t-\hat t)}{\tau}\right) x(\hat t) \; d\hat t, $$ which you can differentiate to get on ODE for $y(t)$ that depends on $x(t)$, but not any of the times before (i.e., no longer contains an integral). In other words, you end up with a system of two ODEs that you can analyze as you always do.

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.