An accurate O(N^2) floating point algorithm for the Crum transform of the KdV equation

Peter J. Prins, Sander Wahls

Research output: Contribution to journalArticleScientificpeer-review

63 Downloads (Pure)


We present an algorithm to compute the N-fold Crum transform (also known as the dressing method) for the Korteweg–de Vries equation (KdV) accurately in floating point arithmetic. This transform can be used to generate solutions of the KdV equation, e.g. as a part of the inverse Non-linear Fourier Transform. Crum transform algorithms that sequentially add the N eigenvalues to the solution with a chain of N Darboux transforms have a computational complexity of O(N^2) but suffer inevitably from singular intermediate results during the computation of certain regular Crum transforms. Algorithms that add all N eigenvalues at once do not have that flaw, but have a complexity of O(N^3) and are often even less accurate for other reasons. Our algorithm has a complexity of O(N^2). It makes use of a chain of 2-fold Crum transforms and, if N is odd, one Darboux transform. Hence, our algorithm adds two eigenvalues at a time instead of one whenever possible. We prove that with the right eigenvalue ordering, this avoids artificial singularities for all regular Crum transforms. Furthermore, we demonstrate that our algorithm is considerably more accurate in floating point arithmetic than benchmark algorithms found in the literature. At the same error tolerance, N can be three to seven times as high when using our algorithm instead of the best among the benchmark algorithms.
Original languageEnglish
Article number105782
Number of pages25
JournalCommunications in Nonlinear Science and Numerical Simulation
Publication statusPublished - 2021


This project has received funding from the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 716669)


  • Darboux transform
  • dressing method
  • Korteweg-de Vries equation
  • non-linear Fourier transform (NFT)


Dive into the research topics of 'An accurate O(N^2) floating point algorithm for the Crum transform of the KdV equation'. Together they form a unique fingerprint.

Cite this