1. The Laplace problem
Suppose we are given a function $h(x,y,z)$ on the unit sphere $S$ and we want to solve the Laplace equation in the unit ball $B$ with $h$ as boundary data, $$ \Delta u = 0, \quad u = h \hbox{ on } S. $$ Here we illustrate how this might be done in Ballfun.
Given the tools available, the boundary data will have to be reasonably smooth. Let us choose a smooth random function with characteristic wavelength $\lambda = 0.2$.
rng(1) lambda = 0.2; h = randnfunsphere(lambda); plot(h), axis off, colorbar, caxis([-2 2])
You can call spherefun with three arguments, which are interpreted as cartesian coordinates $x,y,z$:
h(1,0,0)
ans = -0.761180229121337
Alternatively, you can call it with two arguments, which are interpreted as longitude and polar angles (the latter measured down from the north pole):
h(0,pi/2)
ans = -0.761180229121337
The mean of $h$ is small but nonzero:
meanh = mean2(h)
meanh = -0.020281680162226
2. Solution with the poisson
command
In Ballfun, there is a command poisson
to solve the Poisson equation, which becomes the Laplace equation if we take the right-hand side to be zero. For this command, we need to specify a grid parameter $m$, which will need to grow in proportion to $1/\lambda$ if we want an accurate solution. Here we determine a suitable $m$ by looking at the lengths of the Spherefun representation if $h$.
[a,b] = length(h); m = ceil(max(a,b)); zero = ballfun(0); u = poisson(zero,h,m);
Here, using cartesian coordinates, we confirm that $u$ matches the boundary data at the point $(1,0,0)$:
h(1,0,0) u(1,0,0)
ans = -0.761180229121337 ans = -0.761180229121336
Here, using spherical coordinates, we confirm that it matches the boundary data at the longitude and latitude coordinates of Oxford.
long = -1.26*pi/180; lat = 51.75*pi/180; h(long, pi/2-lat) u(1, long, pi/2-lat,'spherical')
ans = -1.847977702024471 ans = -1.847977702024464
Another check we can carry out concerns mean values. The value of $u$ at the origin should equal the mean of the boundary data:
meanh u(0,0,0)
meanh = -0.020281680162226 ans = -0.020281680162149
3. The solution on an inner sphere
Since the Laplace equation is a smoothing operation, the solution $u$ is not very exciting in the interior. For example, if we simply plot $u$, the image shows an apparently uniform color in the inner sphere of radius $1/2$:
plot(u)
We can construct a spherefun corresponding to the values of $u$ on this sphere of radius $0.5$ and plot it:
uinner = u(.5,:,:,'spherical'); plot(uinner), colorbar
Note the small range of values revealed in the colorbar. The mean value over this sphere is our familiar value:
meanh mean2(uinner)
meanh = -0.020281680162226 ans = -0.020281680162215