# Finite difference numerical integration or ode45?

• MATLAB
I'm trying to numerically solve the time dependent Schrödinger equation and I've been told that the best approach is to numerically integrate using a finite difference method, however I don't understand why I couldn't just use ode45 to solve it?! Is the finite difference (interpolation) method simply more accurate than ode45 in this case or are there other reasons?

The time dependent Schrödinger equation is a partial differential equation, not an ordinary differential equation. One of the more commonly used finite difference schemes for numerically evolving the dynamics of a wavepacket is the Crank-Nicolson method.

The time dependent Schrödinger equation is a partial differential equation, not an ordinary differential equation. One of the more commonly used finite difference schemes for numerically evolving the dynamics of a wavepacket is the Crank-Nicolson method.
Yes, I appreciate that, but if one is solving it for the one-dimensional case it can be treated as an ODE. I was just wondering if in general certain cases are better suited to using ode45 (or other Runge-Kutta like methods), or using interpolation techniques to numerically integrate (using finite difference methods)?!

DrClaude
Mentor
Yes, I appreciate that, but if one is solving it for the one-dimensional case it can be treated as an ODE.
Not the time-dependent Schrödinger equation.

You can use ODE methods with the TDSE if you express it in terms of a basis set, since you then get a set of coupled ODEs for the basis coefficients.

Technically you can still use RK4 (or related schemes) for the temporal evolution (while discretising the spatial Laplacian part of the Schrodinger equation via finite differences). For the same time step size, this will be faster than implicit methods such as Crank-Nicolson, but it is less stable and in general requires smaller step sizes in order to achieve sufficient accuracy, which is why the Crank-Nicolson method is still largely preferred in most cases.

Not the time-dependent Schrödinger equation.

You can use ODE methods with the TDSE if you express it in terms of a basis set, since you then get a set of coupled ODEs for the basis coefficients.
Is it more efficient to use a finite difference method to integrate in this case then?

In general, are there cases where it is better to use a finite difference (interpolation) method than using an ODE solver such as ode45?

Technically you can still use RK4 (or related schemes) for the temporal evolution (while discretising the spatial Laplacian part of the Schrodinger equation via finite differences). For the same time step size, this will be faster than implicit methods such as Crank-Nicolson, but it is less stable and in general requires smaller step sizes in order to achieve sufficient accuracy, which is why the Crank-Nicolson method is still largely preferred in most cases.
Is this because the the time dependent Schrödinger equation is a so-called "stiff" equation? Is this why finite difference techniques are preferred over ODE solvers in certain situations, as the latter can be much less stable?

DrClaude
Mentor
In general, are there cases where it is better to use a finite difference (interpolation) method than using an ODE solver such as ode45?
Unless the number of discrete states of the system is small, grid methods are usually more efficient (fewer grid points are needed than basis functions for a similar problem).

Personally, I prefer the split-operator method, where the kinetic energy operator is dealt with in momentum space, using FFTs.

Why not use PDEPE?

Why not use PDEPE?
Is that a PDE solver in matlab?

Sorry, I should have linked this the first time: pdepe

If you post the actual equation (and (b/i)c) you are trying to solve I might be able to help you cast it into the correct form.