MATLAB Finite difference numerical integration or ode45?

AI Thread Summary
The discussion centers on the numerical solution of the time-dependent Schrödinger equation (TDSE) and the comparison between finite difference methods and ode45. While ode45 can be used by expressing the TDSE in terms of a basis set, finite difference methods, particularly the Crank-Nicolson method, are often preferred due to their stability and accuracy for partial differential equations. The Crank-Nicolson method is generally more efficient for larger systems, as it requires fewer grid points compared to basis functions. Additionally, while Runge-Kutta methods can be faster, they are less stable and may necessitate smaller time steps for accuracy. Ultimately, the choice of method depends on the specific characteristics of the problem being solved.
Frank Castle
Messages
579
Reaction score
23
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?
 
Physics news on Phys.org
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.
 
Fightfish said:
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)?!
 
Frank Castle said:
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.
 
DrClaude said:
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?

Fightfish said:
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?
 
Frank Castle said:
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?
 
mfig said:
Why not use PDEPE?

Is that a PDE solver in matlab?
 
  • #10
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.
 
Back
Top