I have been struggling with the following ode for several weeks, but I fail to solve it. So I post this question and my attempts and expect someone here could give some suggestions.
First, define an operator and a function:
op[r_] = (D[#, {r, 2}] - 1/r*D[#, r]) &;
f0[r_] = 1/2*(2 r^2 Log[r/b] - r^2 + b^2);
Next, the ode and 4 boundary conditions:
eqn = op[r][op[r][f1[r]]] == -I*(4 - 2*G*(1 + b)^2*Log[r/b] + G/2*(r^2 - b^2)*(1 + (1 + b)^2/r^2));
f1[b] == 0;
f1'[b] == 0;
bc3 = f1''[r] - 1/r*f1'[r] + G*(c*f0[r] - f1[r]);
bc4 = f0'[r] - I*(f1'''[r] - 1/r*f1''[r] + 1/r^2*f1'[r]) + f0[r]/(1 + b)^2;
where both G
and b
are related to a constant g
(0<g<1
, see below), bc3
and bc4
are the left-hand sides of the actual boundary conditions both of which vanish at r=1+b
(b>0
, see below). Note that c
in bc3
is an unknown constant (maybe complex-valued) to be determined. There are also 2 simple bcs at r=b
, please see below. The ode is defined from r=b=g/(1 - g)
to r=b+1=1/(1 - g)
.
My goal is to find c
and f1[r]
. At the very least, I need to find the unknown parameter c
. And this is the answer for checking
c=I*G/4(G/192*(1+2*b)^2*(41+82*b+30*b^2)-1/8*(1+2*b+5*b^2)*(3+6*b+2*b^2)-3/4*(1+b)^2*(1+2*b)*Log[(1+b)/b]+(1+b)^4*(Log[(1+b)/b])^2)-I/(2*(1+b))*(1/8*((1+2*b)/(1+b))^2-1/G)
Method 1: direct method
sol1 = DSolve[{eqn /. G -> (4*(1 - g)^2)/(g^2 - 2 Log[g] - 1) /. b -> g/(1 - g), (f1[b] /. b -> g/(1 - g)) == 0, (f1'[b] /. b -> g/(1 - g)) == 0,
(bc3 /. r -> (1 + b) /. b -> g/(1 - g) /. G -> (4*(1 - g)^2)/(g^2 - 2 Log[g] - 1)) == 0,
(bc4 /. r -> (1 + b) /. b -> g/(1 - g)) == 0}, f1, (*{r, g/(1 - g), 1/(1 - g)}*) r,
Assumptions -> g > 0 && g < 1 && c != 0]
I got an error with the unsolved system returned:
DSolve::alliv: The function f1[r] was specified without dependence on all the independent variables. Each function must depend on all the independent variables.
Update on Feb 4 according to Michael's suggestion:
The warning might arise from specifying a range of independent. By replacing {r, g/(1 - g), 1/(1 - g)}
by r
, method 1 produces a solution.
Method 2: find a general solution firstly, then use the bcs to determine the unknown constants
f1genesol = DSolve[eqn, f1, r, Assumptions -> b > 0 && {b, G} \[Element] Reals] //FullSimplify
(*{{f1 -> Function[{r}, C[4] - 1/384 I r^2 (12 b^2 G + 24 b^3 G + 12 b^4 G - 120 r^2 - 66 G r^2 - 132 b G r^2
- 51 b^2 G r^2 + G r^4 + 192 I C[1] - 96 I C[2] + 96 I r^2 C[3] + 12 ((8 + G + 2 b G) r^2 + 16 I C[2]) Log[r] +
24 b^2 (1 + b)^2 G Log[r]^2 + 60 (1 + b)^2 G r^2 Log[r/b] - 24 (1 + b)^2 G r^2 Log[r/b]^2)]}}*)
evaluating the boundary conditions with the general solution and storing in bcs
BCs = {f1[b], f1'[b], (bc3 /. r -> 1 + b), (bc4 /. r -> 1 + b)};
bcs = BCs /. f1genesol[[1]];
using the bc3
in bcs
to determine the parameter c
csol = Simplify[Solve[bcs[[3]] == 0, c], b > 0]
(*{{c -> (-384 I - 768 I b - 384 I b^2 + 96 I b^2 G + 192 I b^3 G + 96 I b^4 G + 65 I G^2 + 390 I b G^2 + 948 I b^2 G^2 +
1192 I b^3 G^2 + 813 I b^4 G^2 + 282 I b^5 G^2 + 38 I b^6 G^2 + 192 G C[1] + 384 b G C[1] + 192 b^2 G C[1] - 384 C[2] -
96 G C[2] - 192 b G C[2] - 96 b^2 G C[2] - 768 C[3] - 1536 b C[3] - 768 b^2 C[3] + 96 G C[3] + 384 b G C[3] + 576 b^2 G C[3]
+ 384 b^3 G C[3] + 96 b^4 G C[3] + 384 G C[4] - 12 I (1 + b)^4 G (-16 + 5 (1 + b)^2 G) Log[1 + 1/b] +
24 I (1 + b)^4 G (-8 + (1 + b)^2 G) Log[1 + 1/b]^2 - 12 I (1 + b)^2 (-64 + (1 + b)^2 (1 + 2 b) G^2 + 16 I G C[2]) Log[1 + b] -
24 I b^2 (1 + b)^4 G^2 Log[1 + b]^2)/(192 G (-1 - 2 b + 2 (1 + b)^2 Log[1 + 1/b]))}}*)
Substituting c
into bc3
and solving for the constants C[i]
together with the remaining bcs
Solve[bcs[[1]] == 0 && bcs[[2]] == 0 && (bcs[[3]] /. csol[[1]]) == 0 && bcs[[4]] == 0, {C[1], C[2], C[3], C[4]}]
But, it gives null.
Method 3: find solution with first 2 bcs, then solve the remaining two unknown constants with Resolve
:
sol3 = DSolve[{eqn /. G -> (4*(1 - g)^2)/(g^2 - 2 Log[g] - 1) /. b -> g/(1 - g), (f1[b] /. b -> g/(1 - g)) == 0, (f1'[b] /. b -> g/(1 - g)) == 0}, f1, r, Assumptions -> g > 0 && g < 1] // Simplify
(*Not show the long solution, which includes unknowns C1, C2, C3, C4*)
next, using Resolve
with Exists
(Note it runs more than 6 hours before manually aborting)
Resolve[Exists[{C[1], C[2]},
Simplify[(bc3 /. r -> (1 + b) /. b -> g/(1 - g) /. G -> (4*(1 - g)^2)/(g^2 - 2 Log[g] - 1)) /. sol3[[1]]] == 0 && Simplify[(bc4 /. r -> (1 + b) /. b -> g/(1 - g)) /. sol3[[1]]] == 0], Complexes]
Any suggestions are welcome!
r
instead of{r, g/(1 - g), 1/(1 - g)}
that is interpreted as specifying three variable (I think), gives me a solution. Can you use it? $\endgroup$c
could be specified from some condition likeNorm[f1]<Infinity
for any0<g<1
. In this regards could you provide some link to the original problem explanation? $\endgroup$c
. Please see my update. $\endgroup$DSolve
returns a solution such thatbc3
simplifies to0
; that is, it satisfies the boundary condition. Thus solvingbc3 == 0
is thus equivalent to solving0 == 0
when the solution is plugged in, and all values ofc
satisfy it. That is whatSolve[]
indicates by returning{{}}
. (No solution is indicated by{}
. Technically{{}}
indicates the "solution set is full dimensional" according to the docs, not necessarily that all values are solutions.) $\endgroup$