ODE-BVP's with Unknown Parameter

Matlab’s bvp4c allows the user to specify ODE-BVP problems which contain an unknown parameter, and then to specify the problem by providing an extra boundary condition. E.g. for a second order ODE, we might have an extra unknown parameter, lambda, in the ODE, but then specify 3 boundary conditions rather than the usual two. This is handy for a wide range of problems.

Is there any functionality like this in DifferentialEquations.jl?

Thanks!

1 Like

Right now we don’t handle that, but it’s something we do plan on adding.

2 Likes

Would it be possible to do this currently if the OP extended the state-space to include the unknown parameter with no dynamics?

3 Likes

Yes. Just to clarify to other users, instead of having a parameters, you can add

du[i] = 0

and then extend u to include the parameters. Since they are constant you’d get the same result, and since it’s now just another value it would act the same. Maybe this is how MATLAB supports it behind the scenes (it would mention it in the docs).

Of course :slight_smile: I’ll give that a go!

Would there be a significant performance impact, as the computation would have to carry along a vector of param(x) when it’s actually only one value (i.e. your state space size would grow by 50% in this example), or can Julia take advantage of the fact that all values are identical, under the hood?

Is this solution working? Could you provide an example?

Did you give it a try?

It will increase the Jacobian size so it will increase the cost. The other way of doing this via NonlinearLeastSquaresProblem also has to increase the cost a bit too, it’s just somewhat required.

Did you try what was mentioned above?

Yes, but I get a Rank deficiency matrix error! I opened a new post explaining a bit better my problem: here