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?
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).
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?
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.