What possibilites does NDSolve provide for solving partial differential equation using a pseudospectral method?

NDSolve provides the Option "DifferenceOrder"->"Pseudospectral". As I understand the documentary the method is using some form of Chebyshev polynomials $T_n$ for the expansion of a function $f$ to solve the differential equation:

$f(x)=\sum_{n=0}^{N}a_n T_n(x)$

  • Am I correct that NDSolve really uses a pseudospectral method here or is it just distribution the gridpoints in a different way and using FD?
  • If so, which polynomials are used here exactly? How is the truncation $N$ defined?
  • Which possibilities do I have to implement a pseudospectral method inherently in Mathematica's NDSolve (if any) using standard polynomials (like Bessel Functions, Jacobi Polynomials etc)?
  • $\begingroup$ My understanding is that it uses a Chebyshev grid and Chebyshev differentiation matrices to approximate spatial derivatives; this is equivalent, I believe, to a Chebyshev interpolation model that approximates the Chebyshev series (which approximation may be the pseudo- in pseudospectral). The spatial grid (N+1 points) determines the degree N. -- You can write your own solvers and plug them into NDSolve. $\endgroup$ – Michael E2 Jan 9 '18 at 18:40

There is a section entitled Pseudospectral Derivatives in https://reference.wolfram.com/language/tutorial/NDSolveMethodOfLines.html This describes how they work as well as choice of N.

The only ones implemented are the uniformly spaced periodic case and Chebyshev grid spaced non periodic. Both have fast evaluation using fast Fourier transforms. The periodic case is typically quite a bit faster and more robust.

For either, they are typically best used with explicit methods since the Jacobian is dense. For some smooth cases the higher approximation order allows N small enough that the dense Jacobian is not an issue.

Other bases can be used, but you'll need define a function that can return the spatial derivative approximation desired.

| improve this answer | |
  • 2
    $\begingroup$ Oh Hello Rob! Good to see you here! NDSolve rocks! $\endgroup$ – user21 Dec 19 '18 at 18:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.