[WIP/discuss] More strict check that equation is conditionally linear #1143
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@romainbrette noticed that while we claim that the exponential Euler algorithm requires that equations are conditionally linear (linear in the integrated variable, potentially non-linear in all other variables), our implementation actually allows for equations that are non-linear in the integrated variable itself. This is because we simply separate the equation into a linear and a non-linear part, and the non-linear part might still depend on the integrated variable. So currently, you can integrate the following with exponential Euler:
This PR fixes this by checking that the non-linear part does not include the variable.
However, after implementing this I started to have some doubts (also because applying the exponential Euler algorithm to these kind of equations gives somewhat reasonable results). There are certainly better sources, but from Wikipedia, the algorithm requires the equation to decompose as:
The exact solution is then:
And you can use a first-order approximation by considering the non-linear part to be constant over the time step, yielding
which is I think exactly what we are doing. Note that this contains an arbitrary non-linear term
which is a function of y, so it seems to be fine to have a non-linear dependence on the integrated variable. Am I missing something here?