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