# Numerical Experiments

Just consider a simple problem:

[Homogeneous Helmholtz Dirichlet BC]

$\Delta u+k^2 u=0$ in $D$, $D$ means unit disk.

$u=\cos(k)$ on $\partial D$[Not true, should be $\cos(kx)$].

If I use ‘finite element method’, to make our problem easier to handle, I choose square $[0,1]\times[0,1]$ as our domain.

Then $\displaystyle\frac{1}{h^2}(u_{i,j+1}+u_{i-1,j}+u_{i,j-1}+u_{i+1,j}-4u_{i,j})+k^2 u_{i,j}=0$, one can use Jacobi, Gauss Seidel, SOR, SSOR, with or without preconditioner and shift. However, I found for this very problem, the result doesn’t converge to my exact solution, in other word, there is some error which cannot be cancelled through shrinking our step length.

%Jacobi
%U_now(i,j)=(U_prev(i-1,j)+U_prev(i+1,j)+U_prev(i,j+1)+U_prev(i,j-1))/(4-h*h*k*k);
%9 point
%U_now(i,j)=((2/3)*(U_prev(i-1,j)+U_prev(i+1,j)+U_prev(i,j-1)+U_prev(i,j+1))+(1/6)*(U_prev(i-1,j-1)+U_prev(i-1,j+1)+U_prev(i+1,j-1)+U_prev(i+1,j+1)))/(10/3-k*k*h*h);
%Gauss Seidel
U_now(i,j)=(U_now(i-1,j)+U_prev(i+1,j)+U_now(i,j-1)+U_prev(i,j+1))/(4-h*h*k*k);
%SOR
% U_now(i,j)=(1-omega)*U_prev(i,j)+omega*(U_now(i-1,j)+U_prev(i+1,j)+U_now(i,j-1)+U_prev(i,j+1))/(4-h*h*k*k);

By using package ‘distmesh’, I construct the PI-FEM for the original problem. Still I have encountered the same problem. The linear system is not large but sparse, so GMRES can easily solve it. I used the preconditioner $\omega=J_0(kh)$, where $J_0$ is Bessel function of $\nu=0$.

This is the result at $k=1$, even I put the size of uniform triangle $h=0.05$, the error stills remain unchanged around some small number.

I have some idea about why FEM cannot give a good result when $k$ is LARGE,  I know the estimate of error is $C k^3h^2$.

However, matlab ‘pdetool’ toolbox can solve this very easily……[not true : )]

Update: Now solved…with error order of 2.