I'm trying to solve the following equation numerically:


where $\mathcal{H}$ is the Hilbert transform and $A$ is a prescribed forcing function which we assume takes the form $A(x,t)=f(x)\delta(t)$ for $\delta(t)$ the Dirac delta function. Note, the Hilbert transform is defined as

$$\mathcal{H}(u)(x)=\frac{1}{\pi}P.V. \int_{-\infty}^{\infty} \frac{u(x')}{x-x'}dx'.$$

Finally, I would like to invoke a causality condition, such that for $t<0$, $u=0$.

Currently, I am trying to implement, for example,

NDSolve[{-(D[Convolve[u[t, xp], xp^(-1), xp, x, PrincipalValue -> True], x]/Pi) + 
    Derivative[2, 0][u][t, x] == -2*Sech[50*(-1 + t)]*Sech[x]^2*Tanh[x], u[0, x] == 0, 
    Derivative[1, 0][u][0, x] == 0, u[t, -10] == u[t, 10]}, u, {t, 0, 10}, {x, -10, 10}]

And Mathematica tells me

NDSolve::delpde: Delay partial differential equations are not currently supported by NDSolve.

Are there any work arounds for this? I am using Mathematica 7.

  • 1
    $\begingroup$ Please look at your code: because of all those formatting functions, it's impossible to parse. If you right-click on your expression and choose "Copy as Plain Text", it will copy-and-paste better. $\endgroup$
    – march
    Feb 17, 2016 at 4:06
  • $\begingroup$ To solve this problem with Mathematica, I believe it will be necessary to restrict the convolution integral to the same range as used in NDSolve, here x = -10 to x = 10. Even then, NDSolve probably is unable to solve an integro-differential equation. So, it also may be necessary to convert the PDE into a coupled system of ODEs in t, as described here. $\endgroup$
    – bbgodfrey
    Feb 17, 2016 at 13:34
  • $\begingroup$ It also appears to be possible to take the Fourier transform in x of the equation, reducing it to an ODE with x-dependent coefficients that could be solvable analytically, after which the solution could be transformed back. If you wish to try this second approach, I suggest that you ask the question in Mathematics. $\endgroup$
    – bbgodfrey
    Feb 17, 2016 at 13:40

1 Answer 1


As I pointed out in a comment above, this problem can be solved by performing a Fourier Transform in x, solving the resulting ODE, and transforming back. The Fourier Transform of a Hilbert Transform is given by - I Sign[k] v[k], and the Fourier Transform of D[u[x],x] is I k v[k], where v is the Fourier Transform of u. Additionally, the Fourier Transform of the inhomogeneous term in the equation is

g = FourierTransform[Sech[x]^2*Tanh[x], x, k]
(* 1/2 I k^2 Sqrt[π/2] Csch[(k π)/2] *)

The resulting equation can be solved by

sol = FullSimplify[DSolveValue[{Derivative[2][v][t] + Abs[k] v[t] == 
    -2*Sech[50*(-1 + t)] g, v[0] == 0, Derivative[1][v][0] == 0}, v[t], t]]
(* (E^(-50 - I t Sqrt[Abs[k]]) k^2 Sqrt[π/2] Csch[(k π)/2] (E^(2 I t Sqrt[ Abs[k]]) 
   (50 + I Sqrt[Abs[k]]) Hypergeometric2F1[1, 1/2 - 1/100 I Sqrt[Abs[k]], 
   3/2 - 1/100 I Sqrt[Abs[k]], -(1/E^100)] - I E^(t (50 + I Sqrt[Abs[k]])) 
   (-50 I + Sqrt[Abs[k]]) Hypergeometric2F1[1, 1/2 - 1/100 I Sqrt[Abs[k]], 
   3/2 - 1/100 I Sqrt[Abs[k]], -E^(100 (-1 + t))] + I (50 I + Sqrt[Abs[k]]) 
   (Hypergeometric2F1[1, 1/2 +1/100 I Sqrt[Abs[k]], 3/2 + 1/100 I Sqrt[Abs[k]], -(1/E^100)]
   - E^(t (50 + I Sqrt[Abs[k]])) Hypergeometric2F1[1, 1/2 + 1/100 I Sqrt[Abs[k]], 
   3/2 + 1/100 I Sqrt[Abs[k]], -E^(100 (-1 + t))])))/(Sqrt[Abs[k]] (2500 + Abs[k])) *)

Not surprisingly, InverseFourierTransform cannot invert this expression. It can, of course, be inverted numerically. A typical plot of the expression is

Plot[Evaluate[ReIm[sol /. t -> 10]], {k, -6, 6}, PlotRange -> All]

enter image description here

The real part is essentially zero (because the source term in the ODE is so narrow in time), and the imaginary part is antisymmetric. Hence, a numerical sine transform can be used to invert expression. For instance,

Quiet@Table[NIntegrate[-2 Im[sol] Sin[k x]/Sqrt[2 Pi], {k, 0, 10}], {t, 2, 18, 8}, 
    {x, 0, 20, .2}];
ListLinePlot[%, DataRange -> {0, 20}, PlotRange -> All, AxesLabel -> {x, u}]

enter image description here

u[x] spreads and increasingly oscillates as t increases.


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.