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]

Mathematica graphics

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]]

Mathematica graphics

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^_]

Mathematica graphics

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

Mathematica graphics

Though it's troublesome to make Mathematica simplify sol further, it's not hard to notice this answer is equivalent to the one in your question.

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]

Mathematica graphics


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.

Mathematica graphics

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.