Skip to main content

calculus and analysis - How to make an organised investigation of branch cuts from a solution to a differential equation


I am attempting to solve two differential equations. The solution gives equations that have branch cuts. I need to choose appropriate branch cuts for my boundary conditions. How do I find the correct ones?



The differential equations and the boundary conditions are


ClearAll[a, b, x, ω, ν, U];
eqns = {
ω b[x] - ν (a'')[x] == 0,
U ω - ω a[x] - ν (b'')[x] == 0
};
bc1 = {a[0] == 0, b[0] == 0};
bc2 = {a[∞] == U, b[∞] == 0};

The boundary condition bc2 is ambitions and does not work if put into DSolve. However, with just boundary condition bc1 we can get a solution.



sol = {a[x], b[x]} /. 
DSolve[Join[eqns, bc1], {a[x], b[x]}, {x, 0, ∞}]

The solution is long and contains terms like (-1)^(3/4) which suggests four branch cuts. There are also constants of integration C[2] and C[4]. By playing around I find I can get a tidy solution by making substitutions and simplifying. I have replace C[2] with a normalised c[2] and similar for C[4]. I have replaced x with a normalised η I don't think I have significantly changed the problem.


subs = { x -> η /Sqrt[2] Sqrt[ν]/Sqrt[ω], 
C[2] -> U Sqrt[2] Sqrt[ω]/Sqrt[ν] c[2],
C[4] -> U Sqrt[2] Sqrt[ω]/Sqrt[ν] c[4]};
sol1 = Simplify[First@sol /. subs]

The solution is



{1/4 E^((-(1/2) - I/2) η)
U (-1 + 4 E^((1/2 + I/2) η) - (1 - I) c[2] +
E^((1 + I) η) (-1 + (1 - I) c[2] - (1 + I) c[4]) +
E^η (-1 + (1 + I) c[2] - (1 - I) c[4]) -
E^(I η) (1 + (1 + I) c[2] - (1 - I) c[4]) + (1 + I) c[4]),
1/4 E^((-(1/2) - I/2) η)
U (-I - (1 + I) c[2] +
I E^(I η) (1 + (1 + I) c[2] - (1 - I) c[4]) - (1 - I) c[4] +
E^((1 + I) η) (-I + (1 + I) c[2] + (1 - I) c[4]) +
E^η (I + (1 - I) c[2] + (1 + I) c[4]))}


We now have several exponential terms and we can collect them as follows


cc = Collect[sol1, {U, E^_}, Simplify]


{U (1 + 1/
4 E^((1/2 + I/2) η) (-1 + (1 - I) c[2] - (1 + I) c[4]) +
1/4 E^((1/2 - I/2) η) (-1 + (1 + I) c[2] - (1 - I) c[4]) +
1/4 E^((-(1/2) + I/
2) η) (-1 - (1 + I) c[2] + (1 - I) c[4]) +

1/4 E^((-(1/2) - I/2) η) (-1 - (1 - I) c[2] + (1 + I) c[4])),
U (1/4 E^((-(1/2) - I/
2) η) (-I - (1 + I) c[2] - (1 - I) c[4]) +
1/4 I E^((-(1/2) + I/
2) η) (1 + (1 + I) c[2] - (1 - I) c[4]) +
1/4 E^((1/2 + I/2) η) (-I + (1 + I) c[2] + (1 - I) c[4]) +
1/4 E^((1/2 - I/2) η) (I + (1 - I) c[2] + (1 + I) c[4]))}

The first solution should go to U and the second to 0 for large η . I can see I have positive and negative real parts to the exponential powers. Here is where I get lost. How can I choose values for c[2] and c[4] to give me the solutions I need? Note that the solutions I need will make the solution for a go to U and the solution for b go to 0 as x -> Infinity.


Thanks



Edit


xzczd has come up with a solution that is only a few lines long. That is probably the way to go. His/Her method starts afresh and uses the sine transform which suppresses growing solutions. This got me thinking about Laplace transforms and as xzczd states we can't use them directly because they don't allow for boundary conditions at infinity. However, we can use them on the solution I obtained and then remove those parts of the solutions that are exponentially growing. Thus we take the Laplace transform of the solutions.


lapT = LaplaceTransform[cc, η, s] // FullSimplify

{(U (1 + 4 s^3 c[2] + 2 s c[4]))/(s + 4 s^5),
(2 U (s - c[2] + 2 s^2 c[4]))/(1 + 4 s^4)}

which are simple solutions. Now we have to find the roots of the denominators and identify which have real parts greater than zero. These roots will give rise to exponentially growing terms.


rts = Union[Flatten[s /. Solve[Denominator[#] == 0, s] & /@ lapT]]
rtsp = Select[rts, Re[#] > 0 &]


{0, -((-1)^(1/4)/Sqrt[2]), (-1)^(
1/4)/Sqrt[2], -((-1)^(3/4)/Sqrt[2]), (-1)^(3/4)/Sqrt[2]}

{(-1)^(1/4)/Sqrt[2], -((-1)^(3/4)/Sqrt[2])}

The residues of the terms with unwanted roots must be set to zero. We can find the residues and set them to zero as follows.


res = Flatten@
Table[Residue[lapT[[n]], {s, #1}] == 0 & /@ rtsp, {n, Length@lapT}]


This gives rise to four equations in our two unknowns c[2] and c[4]. I was slightly worried by this but we get two solutions easily. (There must be repeated equations that Mthematica can deal with.)


solc = Solve[res, {c[2], c[4]}] // Simplify

{{c[2] -> 1/2, c[4] -> -(1/2)}}

Which is a pleasingly simple result. The inverse transform gives the solution to the differential equations.


InverseLaplaceTransform[ lapT /. First@solc, 
s, η] // FullSimplify

{U - E^(-η/2) U Cos[η/2], -E^(-η/2) U Sin[η/2]}


This may be useful but is messy. If anyone is interested in this method I will post it as an answer with more detail. I can't at the moment due to workload but let me know.




Comments

Popular posts from this blog

plotting - Plot 4D data with color as 4th dimension

I have a list of 4D data (x position, y position, amplitude, wavelength). I want to plot x, y, and amplitude on a 3D plot and have the color of the points correspond to the wavelength. I have seen many examples using functions to define color but my wavelength cannot be expressed by an analytic function. Is there a simple way to do this? Answer Here a another possible way to visualize 4D data: data = Flatten[Table[{x, y, x^2 + y^2, Sin[x - y]}, {x, -Pi, Pi,Pi/10}, {y,-Pi,Pi, Pi/10}], 1]; You can use the function Point along with VertexColors . Now the points are places using the first three elements and the color is determined by the fourth. In this case I used Hue, but you can use whatever you prefer. Graphics3D[ Point[data[[All, 1 ;; 3]], VertexColors -> Hue /@ data[[All, 4]]], Axes -> True, BoxRatios -> {1, 1, 1/GoldenRatio}]

plotting - Filling between two spheres in SphericalPlot3D

Manipulate[ SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, Mesh -> None, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], {n, 0, 1}] I cant' seem to be able to make a filling between two spheres. I've already tried the obvious Filling -> {1 -> {2}} but Mathematica doesn't seem to like that option. Is there any easy way around this or ... Answer There is no built-in filling in SphericalPlot3D . One option is to use ParametricPlot3D to draw the surfaces between the two shells: Manipulate[ Show[SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], ParametricPlot3D[{ r {Sin[t] Cos[1.5 Pi], Sin[t] Sin[1.5 Pi], Cos[t]}, r {Sin[t] Cos[0 Pi], Sin[t] Sin[0 Pi], Cos[t]}}, {r, 1, 2 - n}, {t, 0, Pi}, PlotStyle -> Yellow, Mesh -> {2, 15}]], {n, 0, 1}]

plotting - Mathematica: 3D plot based on combined 2D graphs

I have several sigmoidal fits to 3 different datasets, with mean fit predictions plus the 95% confidence limits (not symmetrical around the mean) and the actual data. I would now like to show these different 2D plots projected in 3D as in but then using proper perspective. In the link here they give some solutions to combine the plots using isometric perspective, but I would like to use proper 3 point perspective. Any thoughts? Also any way to show the mean points per time point for each series plus or minus the standard error on the mean would be cool too, either using points+vertical bars, or using spheres plus tubes. Below are some test data and the fit function I am using. Note that I am working on a logit(proportion) scale and that the final vertical scale is Log10(percentage). (* some test data *) data = Table[Null, {i, 4}]; data[[1]] = {{1, -5.8}, {2, -5.4}, {3, -0.8}, {4, -0.2}, {5, 4.6}, {1, -6.4}, {2, -5.6}, {3, -0.7}, {4, 0.04}, {5, 1.0}, {1, -6.8}, {2, -4.7}, {3, -1....