Laplace PDE inside a disk
Once again, since DSolve
doesn't work well at the moment, I'd like to post an answer based on finite Fourier transform:
(* Definition of finiteFourierTransform etc. are not included in this post,
please find them in the link above. *)
pde = D[u[r, theta], {r, 2}] + 1/r D[u[r, theta], r] +
1/r^2 D[u[r, theta], {theta, 2}] == 0;
bc = {u[a, theta] == f[theta], u[r, 0] == u[r, 2 Pi],
Derivative[0, 1][u][r, 0] == Derivative[0, 1][u][r, 2 Pi]};
Format@finiteFourierTransform[f_, __] := ℱ[f]
Format@theta := θ
finiteFourierTransform[{pde, bc[[1]]}, {theta, 0, 2 Pi}, n]
We substitute the periodic b.c.s in, and solve the resulting system:
% /. Rule @@@ bc[[2 ;; 3]]
tset = % /. HoldPattern@finiteFourierTransform[f_ /; ! FreeQ[f, u], __] :> f
tsol = DSolve[tset, u[r, theta], r][[1, 1, -1]]
One constant C[1]
remains, but we still have the bounded condition / finiteness condition at hand. With a bit of transforming:
tsolcollect = Collect[Simplify[tsol // TrigToExp, n ∈ Integers], r^_]
It becomes clear that the coefficient of r^-n
should be 0
, because $\lim_{r\to 0^+} r^{-n}=\infty$ for $n>0$:
tsolfinal = tsolcollect /. Flatten@Solve[tsolcollect[[1]] == 0, C[1]] // Simplify
The last step is to transform back:
sol = inverseFiniteFourierTransform[tsolfinal, n, {theta, 0, 2 Pi}, Re]
sol // transformToIntegrate
Though it's troublesome to make Mathematica simplify it's not hard to notice this answer is equivalent to the one in your question.sol
further,
sol
can be used for further calculation of course. For example, when $f=\sin(3\theta)$:
ReleaseHold[sol /. f -> (Sin[3 #] &) /. C -> 7 /. a -> 2] // ComplexExpand // Simplify
(* 1/8 r^3 Sin[3 theta] *)
RevolutionPlot3D[%, {r, 0, 2}, {theta, 0, 2 Pi}, PlotRange -> All]
This is very strange. I suspect Mathematica desktop is being updated/patched from the cloud when one is connected to the internet, because I just tried again the first attempt I showed in my question above and now DSolve
return the solution to the Laplace PDE !
I do have internet setting in preference to allow Wolfram access to do updates. But I thought this is for documentations and things like that only. I do not understand how this could have happened. But Mathematica 11.3 can actually solve this PDE.
code again (same as in my question)
ClearAll[u,theta,r,a];
pde=D[u[r,theta],{r,2}]+1/r D[u[r,theta],r]+1/r^2 D[u[r,theta],{theta,2}]==0;
bc=u[a,theta]==f[theta];
sol=DSolve[{pde,bc},u[r,theta],{r,theta},Assumptions->a<r&&a>0&&0<theta<=2 Pi]
sol=sol/.K[1]->n
The third attempt I had in my question, still does not work, but the first works.
I assume someone tried that also and it did not work for them, else they would have screamed at me saying that it works. Very strange. But happy that 11.3 can solve this.