# Using DSolve with a boundary condition at -Infinity

I would like to solve a simple 2nd-order ODE with one of the boundary conditions defined at $-\infty$. The ODE I am looking to solve is:

$$w''(z)-2i\pi^2w(z)=0$$

with the corresponding boundary conditions:

$$w(z=-\infty)=0, \; w'(z=0)=0+i\dfrac{\tau_{0}}{\mu}.$$

My attempt at a solution using DSolve is as follows:

DSolve[{-2 I \[Pi]^2 w[z] + (w^\[Prime]\[Prime])[z] == 0,
w[-Infinity] == 0, w'[0] == 0 + I Subscript[\[Tau], 0]/\[Mu]}, w[z],z]


but I only get an empty set of curly brackets as an output. I checked the rest of my snipet of code without the w[-Infinity]==0 boundary condition, and that works as expected; therefore, I know that this is a problem with the boundary condition at $z=-\infty$. I am looking for methods with which I can solve simple ODE's with boundary conditions at infinity, and any help would be greatly appreciated.

• Is the boundary condition at z=0 a condition on w or on w'? You have it both ways. Commented Nov 10, 2016 at 5:31
• The boundary condition at z=0 is for w'. I am sorry about the typo. Commented Nov 10, 2016 at 6:32

This is the solution of your equation without the boundary conditions:

sol = DSolve[-2 I \[Pi]^2 w[z] + w''[z] == 0, w[z], z] // ExpToTrig //
ComplexExpand

(*  {{w[z] ->
C[1] Cos[\[Pi] z] Cosh[\[Pi] z] + C[2] Cos[\[Pi] z] Cosh[\[Pi] z] +
C[1] Cos[\[Pi] z] Sinh[\[Pi] z] - C[2] Cos[\[Pi] z] Sinh[\[Pi] z] +
I (C[1] Cosh[\[Pi] z] Sin[\[Pi] z] - C[2] Cosh[\[Pi] z] Sin[\[Pi] z] +
C[1] Sin[\[Pi] z] Sinh[\[Pi] z] + C[2] Sin[\[Pi] z] Sinh[\[Pi] z])}}  *)


Now let us take its limit at z->-Infinity:

Limit[w[z] /. sol, z -> -\[Infinity]]

(* {ComplexInfinity}  *)


Let us now try this limit at C[1]=0 and C[2]=0:

Limit[w[z] /. sol /. {C[1] -> 0}, z -> -\[Infinity]]

(* ComplexInfinity *)

Limit[w[z] /. sol /. {C[2] -> 0}, z -> -\[Infinity]]

(*  0  *)


The latter gives us what we need, therefore, C[2]=0.

Let us now implement the second boundary condition:

    Solve[(D[(w[z] /. sol /. C[2] -> 0), z] /. z -> 0) == I*t/m, C[1]]

(*  {{C[1] -> ((1/2 + I/2) t)/(m \[Pi])}}  *)


Done. Have fun!

• Nice post. I have not see you in a while, I hope you are all good. Regards. Commented Nov 10, 2016 at 9:19
• @user21 Thank you, I am fine. Commented Nov 10, 2016 at 12:40
• What if some linear combination of the coefficients is zero, but both C[1]and C[2] are non-zero? Then you can't find the solution by testing simple cases. In this particular problem we are lucky: the correct boundary condition at infinity is C[2]==0 instead of Pi C[1]-7C[2]==0 or something. Commented Nov 10, 2016 at 16:21
• @JoonasIlmavirta With sol = w[z] /. DSolve[-2 I \[Pi]^2 w[z] + w''[z] == 0, w[z], z][[1]]' check how does List @@ sol look like and the perform Limit[#, z -> -Infinity] & /@ List @@ sol - this explains why C[2]=0 and gives a hint how to proceed with less trivial cases. Commented Nov 10, 2016 at 21:52
• @Joonas Ilmavirta In the case you mentioned one needs to invent an approach. It is exactly the point, where science turns into art. Commented Nov 11, 2016 at 8:36

This method is somewhat similar to Alexei's. We first solve the equation with the boundary condition (b.c.) at 0 i.e. the b.c. DSolve can handle:

generalsol =
DSolve[{-2 I π^2 w[z] + w''[z] == 0, w'[0] == 0 + (I Subscript[τ, 0])/μ},
w[z], z][[1, 1, -1]]

(* ((1/2 - I/2) E^((-1 -
I) π z) ((1 + I) π μ C[1] + (1 + I) E^((2 + 2 I) π z) π μ C[
1] - I Subscript[τ, 0]))/(π μ) *)


This solution involves E^((-1 - I) π z), which shouldn't exist in a solution that goes to 0 at -Infinity, so coefficient of E^((-1 - I) π z) should be 0. To make the coefficient clearer, let's Collect:

Collect[generalsol, Exp[_], Simplify]
(* E^((1 + I) π z) C[1] +
E^((-1 - I) π z) (C[1] - ((1/2 + I/2) Subscript[τ, 0])/(π μ)) *)


Apparently, C[1] - ((1/2 + I/2) Subscript[τ, 0])/(π μ) should be equal to 0, so the particular solution satisfies the b.c. at -Infinity is:

sol = Function[z, #] &[
E^((1 + I) π z) C[1] /. C[1] -> ((1/2 + I/2) Subscript[τ, 0])/(π μ)]

(* Check: *)
{-2 I π^2 w[z] + w''[z] == 0, w[-∞] == 0,
w'[0] == 0 + (I Subscript[τ, 0])/μ} /. w -> sol // Simplify
(* {True, True, True} *)