# Solving a Fokker-Plank PDE

I have a Wiener process in 3 dimensions, with time-independent drift and diffusion, ie x \in \mathbb{R}^3,

dx_t = \mu(x) dt + \sigma(x) dw

where \sigma(x) is diagonal. I also have an initial distribution/density p_0(x) at t = 0. Importantly, the domain is infinite (ie x is not bounded).

I would like to obtain an approximation of the distributions, eg densities p_t(0). I have already simulated this and everything is nice and smooth, so I am wondering if I could be using spectral methods for this.

Reading up about the problem, almost all texts that I have seen recommend pseudospectral methods where they convert to an ODE and solve that. But I would like to understand why one cannot treat the whole domain (ie \mathbb{R}^3 \times [0, T]) with spectral methods. The only package I have seen that seems to do this is ApproxFun.jl.

Is there a numerical problem with using a spectral representation for every dimension, including time, that the approach of Olver and Townsend somehow avoids? Or is the approximation is OK, I could be using eg a rationally transformed Chebyshev basis as well?

(Note: answers can assume that I am clueless about numerical solutions to PDEs and recommend nice intro texts. I have Boyd (2000)).

1 Like

If you use tensor product Chebyshev basis then 3d already has very big matrices. So 4d will be too big to be practical. (And I donâ€™t think it actually works in ApproxFun.jl. )

That said, if your problem is on â„ť^3 and if your variable coefficients are rotationally invariant then you could use Zernike polynomials in a ball tensored with Chebyshev. This would decouple across spherical harmonic modes and hence your actual systems will be 2D instead of 4D. Unfortunately we donâ€™t have the code to do balls yet (just disks in MultivariateOrthogonalPolynomials.jl)

1 Like

you could try gridap hoping that mesh adaptation is on to save some unknowns

1 Like

In principle, no problem. You can do the same thing in time as spatial dimension. PINNs do it this way.
But as mentioned, if there is a way to do time stepping, that will save your resources since you donâ€™t need to store all the information in time axis.

1 Like